Seville does not need to depend on PCI or on the ENETC MDIO controller.
There will also be other compile-time differences in the future.
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
        select FSL_ENETC_MDIO
        select PCS_LYNX
        help
-         This driver supports network switches from the Vitesse /
-         Microsemi / Microchip Ocelot family of switching cores that are
-         connected to their host CPU via Ethernet.
-         The following switches are supported:
-         - VSC9959 (Felix): embedded as a PCIe function of the NXP LS1028A
-           ENETC integrated endpoint.
-         - VSC9953 (Seville): embedded as a platform device on the
-           NXP T1040 SoC.
+         This driver supports the VSC9959 (Felix) switch, which is embedded as
+         a PCIe function of the NXP LS1028A ENETC RCiEP.
+
+config NET_DSA_MSCC_SEVILLE
+       tristate "Ocelot / Seville Ethernet switch support"
+       depends on NET_DSA
+       depends on NET_VENDOR_MICROSEMI
+       depends on HAS_IOMEM
+       select MSCC_OCELOT_SWITCH_LIB
+       select NET_DSA_TAG_OCELOT
+       select PCS_LYNX
+       help
+         This driver supports the VSC9953 (Seville) switch, which is embedded
+         as a platform device on the NXP T1040 SoC.
 
 # SPDX-License-Identifier: GPL-2.0-only
 obj-$(CONFIG_NET_DSA_MSCC_FELIX) += mscc_felix.o
+obj-$(CONFIG_NET_DSA_MSCC_SEVILLE) += mscc_seville.o
 
 mscc_felix-objs := \
        felix.o \
-       felix_vsc9959.o \
+       felix_vsc9959.o
+
+mscc_seville-objs := \
+       felix.o \
        seville_vsc9953.o
 
        .cls_flower_stats       = felix_cls_flower_stats,
        .port_setup_tc          = felix_port_setup_tc,
 };
-
-static int __init felix_init(void)
-{
-       int err;
-
-       err = pci_register_driver(&felix_vsc9959_pci_driver);
-       if (err)
-               return err;
-
-       err = platform_driver_register(&seville_vsc9953_driver);
-       if (err)
-               return err;
-
-       return 0;
-}
-module_init(felix_init);
-
-static void __exit felix_exit(void)
-{
-       pci_unregister_driver(&felix_vsc9959_pci_driver);
-       platform_driver_unregister(&seville_vsc9953_driver);
-}
-module_exit(felix_exit);
-
-MODULE_DESCRIPTION("Felix Switch driver");
-MODULE_LICENSE("GPL v2");
 
 };
 
 extern const struct dsa_switch_ops felix_switch_ops;
-extern struct pci_driver felix_vsc9959_pci_driver;
-extern struct platform_driver seville_vsc9953_driver;
 
 /* DSA glue / front-end for struct ocelot */
 struct felix {
 
 };
 MODULE_DEVICE_TABLE(pci, felix_ids);
 
-struct pci_driver felix_vsc9959_pci_driver = {
+static struct pci_driver felix_vsc9959_pci_driver = {
        .name           = "mscc_felix",
        .id_table       = felix_ids,
        .probe          = felix_pci_probe,
        .remove         = felix_pci_remove,
 };
+module_pci_driver(felix_vsc9959_pci_driver);
+
+MODULE_DESCRIPTION("Felix Switch driver");
+MODULE_LICENSE("GPL v2");
 
 };
 MODULE_DEVICE_TABLE(of, seville_of_match);
 
-struct platform_driver seville_vsc9953_driver = {
+static struct platform_driver seville_vsc9953_driver = {
        .probe          = seville_probe,
        .remove         = seville_remove,
        .driver = {
                .of_match_table = of_match_ptr(seville_of_match),
        },
 };
+module_platform_driver(seville_vsc9953_driver);
+
+MODULE_DESCRIPTION("Seville Switch driver");
+MODULE_LICENSE("GPL v2");