# SPDX-License-Identifier: GPL-2.0-only
config NET_DSA_MSCC_FELIX_DSA_LIB
	tristate
	help
	  This is an umbrella module for all network switches that are
	  register-compatible with Ocelot and that perform I/O to their host
	  CPU through an NPI (Node Processor Interface) Ethernet port.
	  Its name comes from the first hardware chip to make use of it
	  (VSC9959), code named Felix.

config NET_DSA_MSCC_OCELOT_EXT
	tristate "Ocelot External Ethernet switch support"
	depends on NET_DSA && SPI
	depends on NET_VENDOR_MICROSEMI
	depends on PTP_1588_CLOCK_OPTIONAL
	select MDIO_MSCC_MIIM
	select MFD_OCELOT
	select MSCC_OCELOT_SWITCH_LIB
	select NET_DSA_MSCC_FELIX_DSA_LIB
	select NET_DSA_TAG_OCELOT_8021Q
	select NET_DSA_TAG_OCELOT
	help
	  This driver supports the VSC7511, VSC7512, VSC7513 and VSC7514 chips
	  when controlled through SPI.

	  The Ocelot switch family is a set of multi-port networking chips. All
	  of these chips have the ability to be controlled externally through
	  SPI or PCIe interfaces.

	  Say "Y" here to enable external control to these chips.

config NET_DSA_MSCC_FELIX
	tristate "Ocelot / Felix Ethernet switch support"
	depends on NET_DSA && PCI
	depends on NET_VENDOR_MICROSEMI
	depends on NET_VENDOR_FREESCALE
	depends on HAS_IOMEM
	depends on PTP_1588_CLOCK_OPTIONAL
	depends on NET_SCH_TAPRIO || NET_SCH_TAPRIO=n
	select MSCC_OCELOT_SWITCH_LIB
	select NET_DSA_MSCC_FELIX_DSA_LIB
	select NET_DSA_TAG_OCELOT_8021Q
	select NET_DSA_TAG_OCELOT
	select FSL_ENETC_MDIO
	select PCS_LYNX
	help
	  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
	depends on PTP_1588_CLOCK_OPTIONAL
	select MDIO_MSCC_MIIM
	select MSCC_OCELOT_SWITCH_LIB
	select NET_DSA_MSCC_FELIX_DSA_LIB
	select NET_DSA_TAG_OCELOT_8021Q
	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.
