0001 # SPDX-License-Identifier: GPL-2.0-only
0002 #
0003 # MDIO Layer Configuration
0004 #
0005
0006 menuconfig MDIO_DEVICE
0007 tristate "MDIO bus device drivers"
0008 help
0009 MDIO devices and driver infrastructure code.
0010
0011 if MDIO_DEVICE
0012
0013 config MDIO_BUS
0014 tristate
0015 default m if PHYLIB=m
0016 default MDIO_DEVICE
0017 help
0018 This internal symbol is used for link time dependencies and it
0019 reflects whether the mdio_bus/mdio_device code is built as a
0020 loadable module or built-in.
0021
0022 config FWNODE_MDIO
0023 def_tristate PHYLIB
0024 depends on (ACPI || OF) || COMPILE_TEST
0025 select FIXED_PHY
0026 help
0027 FWNODE MDIO bus (Ethernet PHY) accessors
0028
0029 config OF_MDIO
0030 def_tristate PHYLIB
0031 depends on OF
0032 depends on PHYLIB
0033 select FIXED_PHY
0034 help
0035 OpenFirmware MDIO bus (Ethernet PHY) accessors
0036
0037 config ACPI_MDIO
0038 def_tristate PHYLIB
0039 depends on ACPI
0040 depends on PHYLIB
0041 help
0042 ACPI MDIO bus (Ethernet PHY) accessors
0043
0044 if MDIO_BUS
0045
0046 config MDIO_DEVRES
0047 tristate
0048
0049 config MDIO_SUN4I
0050 tristate "Allwinner sun4i MDIO interface support"
0051 depends on ARCH_SUNXI || COMPILE_TEST
0052 help
0053 This driver supports the MDIO interface found in the network
0054 interface units of the Allwinner SoC that have an EMAC (A10,
0055 A12, A10s, etc.)
0056
0057 config MDIO_XGENE
0058 tristate "APM X-Gene SoC MDIO bus controller"
0059 depends on ARCH_XGENE || COMPILE_TEST
0060 help
0061 This module provides a driver for the MDIO busses found in the
0062 APM X-Gene SoC's.
0063
0064 config MDIO_ASPEED
0065 tristate "ASPEED MDIO bus controller"
0066 depends on ARCH_ASPEED || COMPILE_TEST
0067 depends on OF_MDIO && HAS_IOMEM
0068 help
0069 This module provides a driver for the independent MDIO bus
0070 controllers found in the ASPEED AST2600 SoC. This is a driver for the
0071 third revision of the ASPEED MDIO register interface - the first two
0072 revisions are the "old" and "new" interfaces found in the AST2400 and
0073 AST2500, embedded in the MAC. For legacy reasons, FTGMAC100 driver
0074 continues to drive the embedded MDIO controller for the AST2400 and
0075 AST2500 SoCs, so say N if AST2600 support is not required.
0076
0077 config MDIO_BITBANG
0078 tristate "Bitbanged MDIO buses"
0079 help
0080 This module implements the MDIO bus protocol in software,
0081 for use by low level drivers that export the ability to
0082 drive the relevant pins.
0083
0084 If in doubt, say N.
0085
0086 config MDIO_BCM_IPROC
0087 tristate "Broadcom iProc MDIO bus controller"
0088 depends on ARCH_BCM_IPROC || COMPILE_TEST
0089 depends on HAS_IOMEM && OF_MDIO
0090 default ARCH_BCM_IPROC
0091 help
0092 This module provides a driver for the MDIO busses found in the
0093 Broadcom iProc SoC's.
0094
0095 config MDIO_BCM_UNIMAC
0096 tristate "Broadcom UniMAC MDIO bus controller"
0097 depends on HAS_IOMEM
0098 help
0099 This module provides a driver for the Broadcom UniMAC MDIO busses.
0100 This hardware can be found in the Broadcom GENET Ethernet MAC
0101 controllers as well as some Broadcom Ethernet switches such as the
0102 Starfighter 2 switches.
0103
0104 config MDIO_CAVIUM
0105 tristate
0106
0107 config MDIO_GPIO
0108 tristate "GPIO lib-based bitbanged MDIO buses"
0109 depends on MDIO_BITBANG
0110 depends on GPIOLIB || COMPILE_TEST
0111 help
0112 Supports GPIO lib-based MDIO busses.
0113
0114 To compile this driver as a module, choose M here: the module
0115 will be called mdio-gpio.
0116
0117 config MDIO_HISI_FEMAC
0118 tristate "Hisilicon FEMAC MDIO bus controller"
0119 depends on HAS_IOMEM && OF_MDIO
0120 help
0121 This module provides a driver for the MDIO busses found in the
0122 Hisilicon SoC that have an Fast Ethernet MAC.
0123
0124 config MDIO_I2C
0125 tristate
0126 depends on I2C
0127 help
0128 Support I2C based PHYs. This provides a MDIO bus bridged
0129 to I2C to allow PHYs connected in I2C mode to be accessed
0130 using the existing infrastructure.
0131
0132 This is library mode.
0133
0134 config MDIO_MVUSB
0135 tristate "Marvell USB to MDIO Adapter"
0136 depends on USB
0137 select MDIO_DEVRES
0138 help
0139 A USB to MDIO converter present on development boards for
0140 Marvell's Link Street family of Ethernet switches.
0141
0142 config MDIO_MSCC_MIIM
0143 tristate "Microsemi MIIM interface support"
0144 depends on HAS_IOMEM && REGMAP_MMIO
0145 select MDIO_DEVRES
0146 help
0147 This driver supports the MIIM (MDIO) interface found in the network
0148 switches of the Microsemi SoCs; it is recommended to switch on
0149 CONFIG_HIGH_RES_TIMERS
0150
0151 config MDIO_MOXART
0152 tristate "MOXA ART MDIO interface support"
0153 depends on ARCH_MOXART || COMPILE_TEST
0154 help
0155 This driver supports the MDIO interface found in the network
0156 interface units of the MOXA ART SoC
0157
0158 config MDIO_OCTEON
0159 tristate "Octeon and some ThunderX SOCs MDIO buses"
0160 depends on (64BIT && OF_MDIO) || COMPILE_TEST
0161 depends on HAS_IOMEM
0162 select MDIO_CAVIUM
0163 select MDIO_DEVRES
0164 help
0165 This module provides a driver for the Octeon and ThunderX MDIO
0166 buses. It is required by the Octeon and ThunderX ethernet device
0167 drivers on some systems.
0168
0169 config MDIO_IPQ4019
0170 tristate "Qualcomm IPQ4019 MDIO interface support"
0171 depends on HAS_IOMEM && OF_MDIO
0172 depends on COMMON_CLK
0173 help
0174 This driver supports the MDIO interface found in Qualcomm
0175 IPQ40xx, IPQ60xx, IPQ807x and IPQ50xx series Soc-s.
0176
0177 config MDIO_IPQ8064
0178 tristate "Qualcomm IPQ8064 MDIO interface support"
0179 depends on HAS_IOMEM && OF_MDIO
0180 depends on MFD_SYSCON
0181 help
0182 This driver supports the MDIO interface found in the network
0183 interface units of the IPQ8064 SoC
0184
0185 config MDIO_THUNDER
0186 tristate "ThunderX SOCs MDIO buses"
0187 depends on 64BIT
0188 depends on PCI
0189 select MDIO_CAVIUM
0190 select MDIO_DEVRES
0191 help
0192 This driver supports the MDIO interfaces found on Cavium
0193 ThunderX SoCs when the MDIO bus device appears as a PCI
0194 device.
0195
0196 comment "MDIO Multiplexers"
0197
0198 config MDIO_BUS_MUX
0199 tristate
0200 depends on OF_MDIO
0201 help
0202 This module provides a driver framework for MDIO bus
0203 multiplexers which connect one of several child MDIO busses
0204 to a parent bus. Switching between child busses is done by
0205 device specific drivers.
0206
0207 config MDIO_BUS_MUX_MESON_G12A
0208 tristate "Amlogic G12a based MDIO bus multiplexer"
0209 depends on ARCH_MESON || COMPILE_TEST
0210 depends on OF_MDIO && HAS_IOMEM && COMMON_CLK
0211 select MDIO_BUS_MUX
0212 default m if ARCH_MESON
0213 help
0214 This module provides a driver for the MDIO multiplexer/glue of
0215 the amlogic g12a SoC. The multiplexers connects either the external
0216 or the internal MDIO bus to the parent bus.
0217
0218 config MDIO_BUS_MUX_BCM6368
0219 tristate "Broadcom BCM6368 MDIO bus multiplexers"
0220 depends on OF && OF_MDIO && (BMIPS_GENERIC || COMPILE_TEST)
0221 select MDIO_BUS_MUX
0222 default BMIPS_GENERIC
0223 help
0224 This module provides a driver for MDIO bus multiplexers found in
0225 BCM6368 based Broadcom SoCs. This multiplexer connects one of several
0226 child MDIO bus to a parent bus. Buses could be internal as well as
0227 external and selection logic lies inside the same multiplexer.
0228
0229 config MDIO_BUS_MUX_BCM_IPROC
0230 tristate "Broadcom iProc based MDIO bus multiplexers"
0231 depends on OF && OF_MDIO && (ARCH_BCM_IPROC || COMPILE_TEST)
0232 select MDIO_BUS_MUX
0233 default ARCH_BCM_IPROC
0234 help
0235 This module provides a driver for MDIO bus multiplexers found in
0236 iProc based Broadcom SoCs. This multiplexer connects one of several
0237 child MDIO bus to a parent bus. Buses could be internal as well as
0238 external and selection logic lies inside the same multiplexer.
0239
0240 config MDIO_BUS_MUX_GPIO
0241 tristate "GPIO controlled MDIO bus multiplexers"
0242 depends on OF_GPIO && OF_MDIO
0243 select MDIO_BUS_MUX
0244 help
0245 This module provides a driver for MDIO bus multiplexers that
0246 are controlled via GPIO lines. The multiplexer connects one of
0247 several child MDIO busses to a parent bus. Child bus
0248 selection is under the control of GPIO lines.
0249
0250 config MDIO_BUS_MUX_MULTIPLEXER
0251 tristate "MDIO bus multiplexer using kernel multiplexer subsystem"
0252 depends on OF_MDIO
0253 select MULTIPLEXER
0254 select MDIO_BUS_MUX
0255 help
0256 This module provides a driver for MDIO bus multiplexer
0257 that is controlled via the kernel multiplexer subsystem. The
0258 bus multiplexer connects one of several child MDIO busses to
0259 a parent bus. Child bus selection is under the control of
0260 the kernel multiplexer subsystem.
0261
0262 config MDIO_BUS_MUX_MMIOREG
0263 tristate "MMIO device-controlled MDIO bus multiplexers"
0264 depends on OF_MDIO && HAS_IOMEM
0265 select MDIO_BUS_MUX
0266 help
0267 This module provides a driver for MDIO bus multiplexers that
0268 are controlled via a simple memory-mapped device, like an FPGA.
0269 The multiplexer connects one of several child MDIO busses to a
0270 parent bus. Child bus selection is under the control of one of
0271 the FPGA's registers.
0272
0273 Currently, only 8/16/32 bits registers are supported.
0274
0275
0276 endif
0277 endif