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