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