From: Vladimir Oltean <vladimir.olt...@nxp.com>

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.olt...@nxp.com>
---
 drivers/net/dsa/ocelot/Kconfig           | 22 ++++++++++++--------
 drivers/net/dsa/ocelot/Makefile          |  6 +++++-
 drivers/net/dsa/ocelot/felix.c           | 26 ------------------------
 drivers/net/dsa/ocelot/felix.h           |  2 --
 drivers/net/dsa/ocelot/felix_vsc9959.c   |  6 +++++-
 drivers/net/dsa/ocelot/seville_vsc9953.c |  6 +++++-
 6 files changed, 29 insertions(+), 39 deletions(-)

diff --git a/drivers/net/dsa/ocelot/Kconfig b/drivers/net/dsa/ocelot/Kconfig
index e19718d4a7d4..c110e82a7973 100644
--- a/drivers/net/dsa/ocelot/Kconfig
+++ b/drivers/net/dsa/ocelot/Kconfig
@@ -10,11 +10,17 @@ config NET_DSA_MSCC_FELIX
        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.
diff --git a/drivers/net/dsa/ocelot/Makefile b/drivers/net/dsa/ocelot/Makefile
index ec57a5a12330..f6dd131e7491 100644
--- a/drivers/net/dsa/ocelot/Makefile
+++ b/drivers/net/dsa/ocelot/Makefile
@@ -1,7 +1,11 @@
 # 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
diff --git a/drivers/net/dsa/ocelot/felix.c b/drivers/net/dsa/ocelot/felix.c
index fb1b3e117c78..5f395d4119ac 100644
--- a/drivers/net/dsa/ocelot/felix.c
+++ b/drivers/net/dsa/ocelot/felix.c
@@ -788,29 +788,3 @@ const struct dsa_switch_ops felix_switch_ops = {
        .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");
diff --git a/drivers/net/dsa/ocelot/felix.h b/drivers/net/dsa/ocelot/felix.h
index d0b2043e0ccb..cc3ec83a600a 100644
--- a/drivers/net/dsa/ocelot/felix.h
+++ b/drivers/net/dsa/ocelot/felix.h
@@ -42,8 +42,6 @@ struct felix_info {
 };
 
 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 {
diff --git a/drivers/net/dsa/ocelot/felix_vsc9959.c 
b/drivers/net/dsa/ocelot/felix_vsc9959.c
index 38e0fba6bca8..79ddc4ba27a3 100644
--- a/drivers/net/dsa/ocelot/felix_vsc9959.c
+++ b/drivers/net/dsa/ocelot/felix_vsc9959.c
@@ -1328,9 +1328,13 @@ static struct pci_device_id felix_ids[] = {
 };
 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");
diff --git a/drivers/net/dsa/ocelot/seville_vsc9953.c 
b/drivers/net/dsa/ocelot/seville_vsc9953.c
index 23f66bb1ab4e..650f7c0e6e6a 100644
--- a/drivers/net/dsa/ocelot/seville_vsc9953.c
+++ b/drivers/net/dsa/ocelot/seville_vsc9953.c
@@ -1110,7 +1110,7 @@ static const struct of_device_id seville_of_match[] = {
 };
 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 = {
@@ -1118,3 +1118,7 @@ struct platform_driver seville_vsc9953_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");
-- 
2.25.1

Reply via email to