depends on NET_DSA && PCI
        depends on NET_VENDOR_MICROSEMI
        depends on NET_VENDOR_FREESCALE
-       select MSCC_OCELOT_SWITCH
+       depends on HAS_IOMEM
+       depends on REGMAP_MMIO
+       select MSCC_OCELOT_SWITCH_LIB
        select NET_DSA_TAG_OCELOT
        select FSL_ENETC_MDIO
        help
 
 
 if NET_VENDOR_MICROSEMI
 
-config MSCC_OCELOT_SWITCH
-       tristate "Ocelot switch driver"
-       depends on NET_SWITCHDEV
-       depends on HAS_IOMEM
-       select PHYLIB
-       select REGMAP_MMIO
+# Users should depend on NET_SWITCHDEV, HAS_IOMEM, PHYLIB and REGMAP_MMIO
+config MSCC_OCELOT_SWITCH_LIB
+       tristate
        help
-         This driver supports the Ocelot network switch device.
+         This is a hardware support library for Ocelot network switches. It is
+         used by switchdev as well as by DSA drivers.
 
 config MSCC_OCELOT_SWITCH_OCELOT
        tristate "Ocelot switch driver on Ocelot"
-       depends on MSCC_OCELOT_SWITCH
+       depends on NET_SWITCHDEV
        depends on GENERIC_PHY
+       depends on REGMAP_MMIO
+       depends on HAS_IOMEM
+       depends on PHYLIB
        depends on OF_NET
+       select MSCC_OCELOT_SWITCH_LIB
        help
          This driver supports the Ocelot network switch device as present on
          the Ocelot SoCs.
 
 # SPDX-License-Identifier: (GPL-2.0 OR MIT)
-obj-$(CONFIG_MSCC_OCELOT_SWITCH) += mscc_ocelot_common.o
-mscc_ocelot_common-y := ocelot.o ocelot_io.o
-mscc_ocelot_common-y += ocelot_regs.o ocelot_tc.o ocelot_police.o ocelot_ace.o ocelot_flower.o ocelot_ptp.o
+obj-$(CONFIG_MSCC_OCELOT_SWITCH_LIB) += mscc_ocelot_switch_lib.o
+mscc_ocelot_switch_lib-y := \
+       ocelot.o \
+       ocelot_io.o \
+       ocelot_regs.o \
+       ocelot_tc.o \
+       ocelot_police.o \
+       ocelot_ace.o \
+       ocelot_flower.o \
+       ocelot_ptp.o
 obj-$(CONFIG_MSCC_OCELOT_SWITCH_OCELOT) += mscc_ocelot.o
 mscc_ocelot-y := ocelot_vsc7514.o