# SPDX-License-Identifier: GPL-2.0-only
#
# MDIO Layer Configuration
#

menuconfig MDIO_DEVICE
	tristate "MDIO bus device drivers"
	help
	  MDIO devices and driver infrastructure code.

if MDIO_DEVICE

config MDIO_BUS
	tristate
	default m if PHYLIB=m
	default MDIO_DEVICE
	help
	  This internal symbol is used for link time dependencies and it
	  reflects whether the mdio_bus/mdio_device code is built as a
	  loadable module or built-in.

config OF_MDIO
	def_tristate PHYLIB
	depends on OF
	depends on PHYLIB
	select FIXED_PHY
	help
	  OpenFirmware MDIO bus (Ethernet PHY) accessors

if MDIO_BUS

config MDIO_DEVRES
	tristate

config MDIO_SUN4I
	tristate "Allwinner sun4i MDIO interface support"
	depends on ARCH_SUNXI || COMPILE_TEST
	help
	  This driver supports the MDIO interface found in the network
	  interface units of the Allwinner SoC that have an EMAC (A10,
	  A12, A10s, etc.)

config MDIO_XGENE
	tristate "APM X-Gene SoC MDIO bus controller"
	depends on ARCH_XGENE || COMPILE_TEST
	help
	  This module provides a driver for the MDIO busses found in the
	  APM X-Gene SoC's.

config MDIO_ASPEED
	tristate "ASPEED MDIO bus controller"
	depends on ARCH_ASPEED || COMPILE_TEST
	depends on OF_MDIO && HAS_IOMEM
	help
	  This module provides a driver for the independent MDIO bus
	  controllers found in the ASPEED AST2600 SoC. This is a driver for the
	  third revision of the ASPEED MDIO register interface - the first two
	  revisions are the "old" and "new" interfaces found in the AST2400 and
	  AST2500, embedded in the MAC. For legacy reasons, FTGMAC100 driver
	  continues to drive the embedded MDIO controller for the AST2400 and
	  AST2500 SoCs, so say N if AST2600 support is not required.

config MDIO_BITBANG
	tristate "Bitbanged MDIO buses"
	help
	  This module implements the MDIO bus protocol in software,
	  for use by low level drivers that export the ability to
	  drive the relevant pins.

	  If in doubt, say N.

config MDIO_BCM_IPROC
	tristate "Broadcom iProc MDIO bus controller"
	depends on ARCH_BCM_IPROC || COMPILE_TEST
	depends on HAS_IOMEM && OF_MDIO
	default ARCH_BCM_IPROC
	help
	  This module provides a driver for the MDIO busses found in the
	  Broadcom iProc SoC's.

config MDIO_BCM_UNIMAC
	tristate "Broadcom UniMAC MDIO bus controller"
	depends on HAS_IOMEM
	help
	  This module provides a driver for the Broadcom UniMAC MDIO busses.
	  This hardware can be found in the Broadcom GENET Ethernet MAC
	  controllers as well as some Broadcom Ethernet switches such as the
	  Starfighter 2 switches.

config MDIO_CAVIUM
	tristate

config MDIO_GPIO
	tristate "GPIO lib-based bitbanged MDIO buses"
	depends on MDIO_BITBANG
	depends on GPIOLIB || COMPILE_TEST
	help
	  Supports GPIO lib-based MDIO busses.

	  To compile this driver as a module, choose M here: the module
	  will be called mdio-gpio.

config MDIO_HISI_FEMAC
	tristate "Hisilicon FEMAC MDIO bus controller"
	depends on HAS_IOMEM && OF_MDIO
	help
	  This module provides a driver for the MDIO busses found in the
	  Hisilicon SoC that have an Fast Ethernet MAC.

config MDIO_I2C
	tristate
	depends on I2C
	help
	  Support I2C based PHYs.  This provides a MDIO bus bridged
	  to I2C to allow PHYs connected in I2C mode to be accessed
	  using the existing infrastructure.

	  This is library mode.

config MDIO_MVUSB
	tristate "Marvell USB to MDIO Adapter"
	depends on USB
	select MDIO_DEVRES
	help
	  A USB to MDIO converter present on development boards for
	  Marvell's Link Street family of Ethernet switches.

config MDIO_MSCC_MIIM
	tristate "Microsemi MIIM interface support"
	depends on HAS_IOMEM
	select MDIO_DEVRES
	help
	  This driver supports the MIIM (MDIO) interface found in the network
	  switches of the Microsemi SoCs; it is recommended to switch on
	  CONFIG_HIGH_RES_TIMERS

config MDIO_MOXART
	tristate "MOXA ART MDIO interface support"
	depends on ARCH_MOXART || COMPILE_TEST
	help
	  This driver supports the MDIO interface found in the network
	  interface units of the MOXA ART SoC

config MDIO_OCTEON
	tristate "Octeon and some ThunderX SOCs MDIO buses"
	depends on (64BIT && OF_MDIO) || COMPILE_TEST
	depends on HAS_IOMEM
	select MDIO_CAVIUM
	select MDIO_DEVRES
	help
	  This module provides a driver for the Octeon and ThunderX MDIO
	  buses. It is required by the Octeon and ThunderX ethernet device
	  drivers on some systems.

config MDIO_IPQ4019
	tristate "Qualcomm IPQ4019 MDIO interface support"
	depends on HAS_IOMEM && OF_MDIO
	help
	  This driver supports the MDIO interface found in Qualcomm
	  IPQ40xx series Soc-s.

config MDIO_IPQ8064
	tristate "Qualcomm IPQ8064 MDIO interface support"
	depends on HAS_IOMEM && OF_MDIO
	depends on MFD_SYSCON
	help
	  This driver supports the MDIO interface found in the network
	  interface units of the IPQ8064 SoC

config MDIO_THUNDER
	tristate "ThunderX SOCs MDIO buses"
	depends on 64BIT
	depends on PCI
	select MDIO_CAVIUM
	select MDIO_DEVRES
	help
	  This driver supports the MDIO interfaces found on Cavium
	  ThunderX SoCs when the MDIO bus device appears as a PCI
	  device.

comment "MDIO Multiplexers"

config MDIO_BUS_MUX
	tristate
	depends on OF_MDIO
	help
	  This module provides a driver framework for MDIO bus
	  multiplexers which connect one of several child MDIO busses
	  to a parent bus.  Switching between child busses is done by
	  device specific drivers.

config MDIO_BUS_MUX_MESON_G12A
	tristate "Amlogic G12a based MDIO bus multiplexer"
	depends on ARCH_MESON || COMPILE_TEST
	depends on OF_MDIO && HAS_IOMEM && COMMON_CLK
	select MDIO_BUS_MUX
	default m if ARCH_MESON
	help
	  This module provides a driver for the MDIO multiplexer/glue of
	  the amlogic g12a SoC. The multiplexers connects either the external
	  or the internal MDIO bus to the parent bus.

config MDIO_BUS_MUX_BCM_IPROC
	tristate "Broadcom iProc based MDIO bus multiplexers"
	depends on OF && OF_MDIO && (ARCH_BCM_IPROC || COMPILE_TEST)
	select MDIO_BUS_MUX
	default ARCH_BCM_IPROC
	help
	  This module provides a driver for MDIO bus multiplexers found in
	  iProc based Broadcom SoCs. This multiplexer connects one of several
	  child MDIO bus to a parent bus. Buses could be internal as well as
	  external and selection logic lies inside the same multiplexer.

config MDIO_BUS_MUX_GPIO
	tristate "GPIO controlled MDIO bus multiplexers"
	depends on OF_GPIO && OF_MDIO
	select MDIO_BUS_MUX
	help
	  This module provides a driver for MDIO bus multiplexers that
	  are controlled via GPIO lines.  The multiplexer connects one of
	  several child MDIO busses to a parent bus.  Child bus
	  selection is under the control of GPIO lines.

config MDIO_BUS_MUX_MULTIPLEXER
	tristate "MDIO bus multiplexer using kernel multiplexer subsystem"
	depends on OF_MDIO
	select MULTIPLEXER
	select MDIO_BUS_MUX
	help
	  This module provides a driver for MDIO bus multiplexer
	  that is controlled via the kernel multiplexer subsystem. The
	  bus multiplexer connects one of several child MDIO busses to
	  a parent bus.  Child bus selection is under the control of
	  the kernel multiplexer subsystem.

config MDIO_BUS_MUX_MMIOREG
	tristate "MMIO device-controlled MDIO bus multiplexers"
	depends on OF_MDIO && HAS_IOMEM
	select MDIO_BUS_MUX
	help
	  This module provides a driver for MDIO bus multiplexers that
	  are controlled via a simple memory-mapped device, like an FPGA.
	  The multiplexer connects one of several child MDIO busses to a
	  parent bus.  Child bus selection is under the control of one of
	  the FPGA's registers.

	  Currently, only 8/16/32 bits registers are supported.


endif
endif