1# SPDX-License-Identifier: GPL-2.0-only 2# 3# MDIO Layer Configuration 4# 5 6config MDIO_BUS 7 tristate "MDIO bus consumer layer" 8 help 9 MDIO bus consumer layer 10 11if PHYLIB 12 13config FWNODE_MDIO 14 def_tristate (ACPI || OF) || COMPILE_TEST 15 select FIXED_PHY 16 help 17 FWNODE MDIO bus (Ethernet PHY) accessors 18 19config OF_MDIO 20 def_tristate OF 21 select FIXED_PHY 22 help 23 OpenFirmware MDIO bus (Ethernet PHY) accessors 24 25config ACPI_MDIO 26 def_tristate ACPI 27 help 28 ACPI MDIO bus (Ethernet PHY) accessors 29 30config MDIO_SUN4I 31 tristate "Allwinner sun4i MDIO interface support" 32 depends on ARCH_SUNXI || COMPILE_TEST 33 help 34 This driver supports the MDIO interface found in the network 35 interface units of the Allwinner SoC that have an EMAC (A10, 36 A12, A10s, etc.) 37 38config MDIO_XGENE 39 tristate "APM X-Gene SoC MDIO bus controller" 40 depends on ARCH_XGENE || COMPILE_TEST 41 help 42 This module provides a driver for the MDIO busses found in the 43 APM X-Gene SoC's. 44 45config MDIO_ASPEED 46 tristate "ASPEED MDIO bus controller" 47 depends on ARCH_ASPEED || COMPILE_TEST 48 depends on OF_MDIO && HAS_IOMEM 49 help 50 This module provides a driver for the independent MDIO bus 51 controllers found in the ASPEED AST2600 SoC. This is a driver for the 52 third revision of the ASPEED MDIO register interface - the first two 53 revisions are the "old" and "new" interfaces found in the AST2400 and 54 AST2500, embedded in the MAC. For legacy reasons, FTGMAC100 driver 55 continues to drive the embedded MDIO controller for the AST2400 and 56 AST2500 SoCs, so say N if AST2600 support is not required. 57 58config MDIO_BITBANG 59 tristate "Bitbanged MDIO buses" 60 help 61 This module implements the MDIO bus protocol in software, 62 for use by low level drivers that export the ability to 63 drive the relevant pins. 64 65 If in doubt, say N. 66 67config MDIO_BCM_IPROC 68 tristate "Broadcom iProc MDIO bus controller" 69 depends on ARCH_BCM_IPROC || COMPILE_TEST 70 depends on HAS_IOMEM && OF_MDIO 71 default ARCH_BCM_IPROC 72 help 73 This module provides a driver for the MDIO busses found in the 74 Broadcom iProc SoC's. 75 76config MDIO_BCM_UNIMAC 77 tristate "Broadcom UniMAC MDIO bus controller" 78 depends on HAS_IOMEM 79 help 80 This module provides a driver for the Broadcom UniMAC MDIO busses. 81 This hardware can be found in the Broadcom GENET Ethernet MAC 82 controllers as well as some Broadcom Ethernet switches such as the 83 Starfighter 2 switches. 84 85config MDIO_CAVIUM 86 tristate 87 88config MDIO_GPIO 89 tristate "GPIO lib-based bitbanged MDIO buses" 90 depends on MDIO_BITBANG 91 depends on GPIOLIB || COMPILE_TEST 92 help 93 Supports GPIO lib-based MDIO busses. 94 95 To compile this driver as a module, choose M here: the module 96 will be called mdio-gpio. 97 98config MDIO_HISI_FEMAC 99 tristate "Hisilicon FEMAC MDIO bus controller" 100 depends on HAS_IOMEM && OF_MDIO 101 help 102 This module provides a driver for the MDIO busses found in the 103 Hisilicon SoC that have an Fast Ethernet MAC. 104 105config MDIO_I2C 106 tristate 107 depends on I2C 108 help 109 Support I2C based PHYs. This provides a MDIO bus bridged 110 to I2C to allow PHYs connected in I2C mode to be accessed 111 using the existing infrastructure. 112 113 This is library mode. 114 115config MDIO_MVUSB 116 tristate "Marvell USB to MDIO Adapter" 117 depends on USB 118 help 119 A USB to MDIO converter present on development boards for 120 Marvell's Link Street family of Ethernet switches. 121 122config MDIO_MSCC_MIIM 123 tristate "Microsemi MIIM interface support" 124 depends on HAS_IOMEM && REGMAP_MMIO 125 help 126 This driver supports the MIIM (MDIO) interface found in the network 127 switches of the Microsemi SoCs; it is recommended to switch on 128 CONFIG_HIGH_RES_TIMERS 129 130config MDIO_MOXART 131 tristate "MOXA ART MDIO interface support" 132 depends on ARCH_MOXART || COMPILE_TEST 133 help 134 This driver supports the MDIO interface found in the network 135 interface units of the MOXA ART SoC 136 137config MDIO_OCTEON 138 tristate "Octeon and some ThunderX SOCs MDIO buses" 139 depends on (64BIT && OF_MDIO) || COMPILE_TEST 140 depends on HAS_IOMEM 141 select MDIO_CAVIUM 142 help 143 This module provides a driver for the Octeon and ThunderX MDIO 144 buses. It is required by the Octeon and ThunderX ethernet device 145 drivers on some systems. 146 147config MDIO_IPQ4019 148 tristate "Qualcomm IPQ4019 MDIO interface support" 149 depends on HAS_IOMEM && OF_MDIO 150 depends on COMMON_CLK 151 help 152 This driver supports the MDIO interface found in Qualcomm 153 IPQ40xx, IPQ60xx, IPQ807x and IPQ50xx series Soc-s. 154 155config MDIO_IPQ8064 156 tristate "Qualcomm IPQ8064 MDIO interface support" 157 depends on HAS_IOMEM && OF_MDIO 158 depends on MFD_SYSCON 159 help 160 This driver supports the MDIO interface found in the network 161 interface units of the IPQ8064 SoC 162 163config MDIO_REALTEK_RTL9300 164 tristate "Realtek RTL9300 MDIO interface support" 165 depends on MACH_REALTEK_RTL || COMPILE_TEST 166 help 167 This driver supports the MDIO interface found in the Realtek 168 RTL9300 family of Ethernet switches with integrated SoC. 169 170config MDIO_REGMAP 171 tristate 172 help 173 This driver allows using MDIO devices that are not sitting on a 174 regular MDIO bus, but still exposes the standard 802.3 register 175 layout. It's regmap-based so that it can be used on integrated, 176 memory-mapped PHYs, SPI PHYs and so on. A new virtual MDIO bus is 177 created, and its read/write operations are mapped to the underlying 178 regmap. Users willing to use this driver must explicitly select 179 REGMAP. 180 181config MDIO_THUNDER 182 tristate "ThunderX SOCs MDIO buses" 183 depends on 64BIT 184 depends on PCI 185 select MDIO_CAVIUM 186 help 187 This driver supports the MDIO interfaces found on Cavium 188 ThunderX SoCs when the MDIO bus device appears as a PCI 189 device. 190 191comment "MDIO Multiplexers" 192 193config MDIO_BUS_MUX 194 tristate 195 depends on OF_MDIO 196 help 197 This module provides a driver framework for MDIO bus 198 multiplexers which connect one of several child MDIO busses 199 to a parent bus. Switching between child busses is done by 200 device specific drivers. 201 202config MDIO_BUS_MUX_MESON_G12A 203 tristate "Amlogic G12a based MDIO bus multiplexer" 204 depends on ARCH_MESON || COMPILE_TEST 205 depends on OF_MDIO && HAS_IOMEM && COMMON_CLK 206 select MDIO_BUS_MUX 207 default m if ARCH_MESON 208 help 209 This module provides a driver for the MDIO multiplexer/glue of 210 the amlogic g12a SoC. The multiplexers connects either the external 211 or the internal MDIO bus to the parent bus. 212 213config MDIO_BUS_MUX_MESON_GXL 214 tristate "Amlogic GXL based MDIO bus multiplexer" 215 depends on ARCH_MESON || COMPILE_TEST 216 depends on OF_MDIO && HAS_IOMEM && COMMON_CLK 217 select MDIO_BUS_MUX 218 default m if ARCH_MESON 219 help 220 This module provides a driver for the MDIO multiplexer/glue of 221 the amlogic GXL SoC. The multiplexer connects either the external 222 or the internal MDIO bus to the parent bus. 223 224config MDIO_BUS_MUX_BCM6368 225 tristate "Broadcom BCM6368 MDIO bus multiplexers" 226 depends on OF && OF_MDIO && (BMIPS_GENERIC || COMPILE_TEST) 227 select MDIO_BUS_MUX 228 default BMIPS_GENERIC 229 help 230 This module provides a driver for MDIO bus multiplexers found in 231 BCM6368 based Broadcom SoCs. This multiplexer connects one of several 232 child MDIO bus to a parent bus. Buses could be internal as well as 233 external and selection logic lies inside the same multiplexer. 234 235config MDIO_BUS_MUX_BCM_IPROC 236 tristate "Broadcom iProc based MDIO bus multiplexers" 237 depends on OF && OF_MDIO && (ARCH_BCM_IPROC || COMPILE_TEST) 238 select MDIO_BUS_MUX 239 default ARCH_BCM_IPROC 240 help 241 This module provides a driver for MDIO bus multiplexers found in 242 iProc based Broadcom SoCs. This multiplexer connects one of several 243 child MDIO bus to a parent bus. Buses could be internal as well as 244 external and selection logic lies inside the same multiplexer. 245 246config MDIO_BUS_MUX_GPIO 247 tristate "GPIO controlled MDIO bus multiplexers" 248 depends on OF_GPIO && OF_MDIO 249 select MDIO_BUS_MUX 250 help 251 This module provides a driver for MDIO bus multiplexers that 252 are controlled via GPIO lines. The multiplexer connects one of 253 several child MDIO busses to a parent bus. Child bus 254 selection is under the control of GPIO lines. 255 256config MDIO_BUS_MUX_MULTIPLEXER 257 tristate "MDIO bus multiplexer using kernel multiplexer subsystem" 258 depends on OF_MDIO 259 select MULTIPLEXER 260 select MDIO_BUS_MUX 261 help 262 This module provides a driver for MDIO bus multiplexer 263 that is controlled via the kernel multiplexer subsystem. The 264 bus multiplexer connects one of several child MDIO busses to 265 a parent bus. Child bus selection is under the control of 266 the kernel multiplexer subsystem. 267 268config MDIO_BUS_MUX_MMIOREG 269 tristate "MMIO device-controlled MDIO bus multiplexers" 270 depends on OF_MDIO && HAS_IOMEM 271 select MDIO_BUS_MUX 272 help 273 This module provides a driver for MDIO bus multiplexers that 274 are controlled via a simple memory-mapped device, like an FPGA. 275 The multiplexer connects one of several child MDIO busses to a 276 parent bus. Child bus selection is under the control of one of 277 the FPGA's registers. 278 279 Currently, only 8/16/32 bits registers are supported. 280 281 282endif 283