1a9770eacSAndrew Lunn# SPDX-License-Identifier: GPL-2.0-only 2a9770eacSAndrew Lunn# 3a9770eacSAndrew Lunn# MDIO Layer Configuration 4a9770eacSAndrew Lunn# 5a9770eacSAndrew Lunn 6a9770eacSAndrew Lunnmenuconfig MDIO_DEVICE 7a9770eacSAndrew Lunn tristate "MDIO bus device drivers" 8a9770eacSAndrew Lunn help 9a9770eacSAndrew Lunn MDIO devices and driver infrastructure code. 10a9770eacSAndrew Lunn 11a9770eacSAndrew Lunnif MDIO_DEVICE 12a9770eacSAndrew Lunn 13a9770eacSAndrew Lunnconfig MDIO_BUS 14a9770eacSAndrew Lunn tristate 15a9770eacSAndrew Lunn default m if PHYLIB=m 16a9770eacSAndrew Lunn default MDIO_DEVICE 17a9770eacSAndrew Lunn help 18a9770eacSAndrew Lunn This internal symbol is used for link time dependencies and it 19a9770eacSAndrew Lunn reflects whether the mdio_bus/mdio_device code is built as a 20a9770eacSAndrew Lunn loadable module or built-in. 21a9770eacSAndrew Lunn 22bc1bee3bSCalvin Johnsonconfig FWNODE_MDIO 23bc1bee3bSCalvin Johnson def_tristate PHYLIB 24bc1bee3bSCalvin Johnson depends on (ACPI || OF) || COMPILE_TEST 25bc1bee3bSCalvin Johnson select FIXED_PHY 26bc1bee3bSCalvin Johnson help 27bc1bee3bSCalvin Johnson FWNODE MDIO bus (Ethernet PHY) accessors 28bc1bee3bSCalvin Johnson 2914b26b12SCalvin Johnsonconfig OF_MDIO 3014b26b12SCalvin Johnson def_tristate PHYLIB 3114b26b12SCalvin Johnson depends on OF 3214b26b12SCalvin Johnson depends on PHYLIB 3314b26b12SCalvin Johnson select FIXED_PHY 3414b26b12SCalvin Johnson help 3514b26b12SCalvin Johnson OpenFirmware MDIO bus (Ethernet PHY) accessors 3614b26b12SCalvin Johnson 37803ca24dSCalvin Johnsonconfig ACPI_MDIO 38803ca24dSCalvin Johnson def_tristate PHYLIB 39803ca24dSCalvin Johnson depends on ACPI 40803ca24dSCalvin Johnson depends on PHYLIB 41803ca24dSCalvin Johnson help 42803ca24dSCalvin Johnson ACPI MDIO bus (Ethernet PHY) accessors 43803ca24dSCalvin Johnson 44a9770eacSAndrew Lunnif MDIO_BUS 45a9770eacSAndrew Lunn 46a9770eacSAndrew Lunnconfig MDIO_DEVRES 47a9770eacSAndrew Lunn tristate 48a9770eacSAndrew Lunn 49a9770eacSAndrew Lunnconfig MDIO_SUN4I 50a9770eacSAndrew Lunn tristate "Allwinner sun4i MDIO interface support" 51a9770eacSAndrew Lunn depends on ARCH_SUNXI || COMPILE_TEST 52a9770eacSAndrew Lunn help 53a9770eacSAndrew Lunn This driver supports the MDIO interface found in the network 54a9770eacSAndrew Lunn interface units of the Allwinner SoC that have an EMAC (A10, 55a9770eacSAndrew Lunn A12, A10s, etc.) 56a9770eacSAndrew Lunn 57a9770eacSAndrew Lunnconfig MDIO_XGENE 58a9770eacSAndrew Lunn tristate "APM X-Gene SoC MDIO bus controller" 59a9770eacSAndrew Lunn depends on ARCH_XGENE || COMPILE_TEST 6052358dd6SHeiner Kallweit depends on PHYLIB 61a9770eacSAndrew Lunn help 62a9770eacSAndrew Lunn This module provides a driver for the MDIO busses found in the 63a9770eacSAndrew Lunn APM X-Gene SoC's. 64a9770eacSAndrew Lunn 65a9770eacSAndrew Lunnconfig MDIO_ASPEED 66a9770eacSAndrew Lunn tristate "ASPEED MDIO bus controller" 67a9770eacSAndrew Lunn depends on ARCH_ASPEED || COMPILE_TEST 68a9770eacSAndrew Lunn depends on OF_MDIO && HAS_IOMEM 69*ccc25158SArnd Bergmann select MDIO_DEVRES 70a9770eacSAndrew Lunn help 71a9770eacSAndrew Lunn This module provides a driver for the independent MDIO bus 72a9770eacSAndrew Lunn controllers found in the ASPEED AST2600 SoC. This is a driver for the 73a9770eacSAndrew Lunn third revision of the ASPEED MDIO register interface - the first two 74a9770eacSAndrew Lunn revisions are the "old" and "new" interfaces found in the AST2400 and 75a9770eacSAndrew Lunn AST2500, embedded in the MAC. For legacy reasons, FTGMAC100 driver 76a9770eacSAndrew Lunn continues to drive the embedded MDIO controller for the AST2400 and 77a9770eacSAndrew Lunn AST2500 SoCs, so say N if AST2600 support is not required. 78a9770eacSAndrew Lunn 79a9770eacSAndrew Lunnconfig MDIO_BITBANG 80a9770eacSAndrew Lunn tristate "Bitbanged MDIO buses" 81a9770eacSAndrew Lunn help 82a9770eacSAndrew Lunn This module implements the MDIO bus protocol in software, 83a9770eacSAndrew Lunn for use by low level drivers that export the ability to 84a9770eacSAndrew Lunn drive the relevant pins. 85a9770eacSAndrew Lunn 86a9770eacSAndrew Lunn If in doubt, say N. 87a9770eacSAndrew Lunn 88a9770eacSAndrew Lunnconfig MDIO_BCM_IPROC 89a9770eacSAndrew Lunn tristate "Broadcom iProc MDIO bus controller" 90a9770eacSAndrew Lunn depends on ARCH_BCM_IPROC || COMPILE_TEST 91a9770eacSAndrew Lunn depends on HAS_IOMEM && OF_MDIO 92a9770eacSAndrew Lunn default ARCH_BCM_IPROC 93a9770eacSAndrew Lunn help 94a9770eacSAndrew Lunn This module provides a driver for the MDIO busses found in the 95a9770eacSAndrew Lunn Broadcom iProc SoC's. 96a9770eacSAndrew Lunn 97a9770eacSAndrew Lunnconfig MDIO_BCM_UNIMAC 98a9770eacSAndrew Lunn tristate "Broadcom UniMAC MDIO bus controller" 99a9770eacSAndrew Lunn depends on HAS_IOMEM 100a9770eacSAndrew Lunn help 101a9770eacSAndrew Lunn This module provides a driver for the Broadcom UniMAC MDIO busses. 102a9770eacSAndrew Lunn This hardware can be found in the Broadcom GENET Ethernet MAC 103a9770eacSAndrew Lunn controllers as well as some Broadcom Ethernet switches such as the 104a9770eacSAndrew Lunn Starfighter 2 switches. 105a9770eacSAndrew Lunn 106a9770eacSAndrew Lunnconfig MDIO_CAVIUM 107a9770eacSAndrew Lunn tristate 108a9770eacSAndrew Lunn 109a9770eacSAndrew Lunnconfig MDIO_GPIO 110a9770eacSAndrew Lunn tristate "GPIO lib-based bitbanged MDIO buses" 111a9770eacSAndrew Lunn depends on MDIO_BITBANG 112a9770eacSAndrew Lunn depends on GPIOLIB || COMPILE_TEST 113a9770eacSAndrew Lunn help 114a9770eacSAndrew Lunn Supports GPIO lib-based MDIO busses. 115a9770eacSAndrew Lunn 116a9770eacSAndrew Lunn To compile this driver as a module, choose M here: the module 117a9770eacSAndrew Lunn will be called mdio-gpio. 118a9770eacSAndrew Lunn 119a9770eacSAndrew Lunnconfig MDIO_HISI_FEMAC 120a9770eacSAndrew Lunn tristate "Hisilicon FEMAC MDIO bus controller" 121a9770eacSAndrew Lunn depends on HAS_IOMEM && OF_MDIO 122a9770eacSAndrew Lunn help 123a9770eacSAndrew Lunn This module provides a driver for the MDIO busses found in the 124a9770eacSAndrew Lunn Hisilicon SoC that have an Fast Ethernet MAC. 125a9770eacSAndrew Lunn 126a9770eacSAndrew Lunnconfig MDIO_I2C 127a9770eacSAndrew Lunn tristate 128a9770eacSAndrew Lunn depends on I2C 129a9770eacSAndrew Lunn help 130a9770eacSAndrew Lunn Support I2C based PHYs. This provides a MDIO bus bridged 131a9770eacSAndrew Lunn to I2C to allow PHYs connected in I2C mode to be accessed 132a9770eacSAndrew Lunn using the existing infrastructure. 133a9770eacSAndrew Lunn 134a9770eacSAndrew Lunn This is library mode. 135a9770eacSAndrew Lunn 136a9770eacSAndrew Lunnconfig MDIO_MVUSB 137a9770eacSAndrew Lunn tristate "Marvell USB to MDIO Adapter" 138a9770eacSAndrew Lunn depends on USB 139a9770eacSAndrew Lunn select MDIO_DEVRES 140a9770eacSAndrew Lunn help 141a9770eacSAndrew Lunn A USB to MDIO converter present on development boards for 142a9770eacSAndrew Lunn Marvell's Link Street family of Ethernet switches. 143a9770eacSAndrew Lunn 144a9770eacSAndrew Lunnconfig MDIO_MSCC_MIIM 145a9770eacSAndrew Lunn tristate "Microsemi MIIM interface support" 1468057cbb8STianchen Ding depends on HAS_IOMEM && REGMAP_MMIO 147a9770eacSAndrew Lunn select MDIO_DEVRES 148a9770eacSAndrew Lunn help 149a9770eacSAndrew Lunn This driver supports the MIIM (MDIO) interface found in the network 150a9770eacSAndrew Lunn switches of the Microsemi SoCs; it is recommended to switch on 151a9770eacSAndrew Lunn CONFIG_HIGH_RES_TIMERS 152a9770eacSAndrew Lunn 153a9770eacSAndrew Lunnconfig MDIO_MOXART 154a9770eacSAndrew Lunn tristate "MOXA ART MDIO interface support" 155a9770eacSAndrew Lunn depends on ARCH_MOXART || COMPILE_TEST 156a9770eacSAndrew Lunn help 157a9770eacSAndrew Lunn This driver supports the MDIO interface found in the network 158a9770eacSAndrew Lunn interface units of the MOXA ART SoC 159a9770eacSAndrew Lunn 160a9770eacSAndrew Lunnconfig MDIO_OCTEON 161a9770eacSAndrew Lunn tristate "Octeon and some ThunderX SOCs MDIO buses" 162a9770eacSAndrew Lunn depends on (64BIT && OF_MDIO) || COMPILE_TEST 163a9770eacSAndrew Lunn depends on HAS_IOMEM 164a9770eacSAndrew Lunn select MDIO_CAVIUM 165529d1fdfSAndrew Lunn select MDIO_DEVRES 166a9770eacSAndrew Lunn help 167a9770eacSAndrew Lunn This module provides a driver for the Octeon and ThunderX MDIO 168a9770eacSAndrew Lunn buses. It is required by the Octeon and ThunderX ethernet device 169a9770eacSAndrew Lunn drivers on some systems. 170a9770eacSAndrew Lunn 171a9770eacSAndrew Lunnconfig MDIO_IPQ4019 172a9770eacSAndrew Lunn tristate "Qualcomm IPQ4019 MDIO interface support" 173a9770eacSAndrew Lunn depends on HAS_IOMEM && OF_MDIO 17423a890d4SLuo Jie depends on COMMON_CLK 175*ccc25158SArnd Bergmann select MDIO_DEVRES 176a9770eacSAndrew Lunn help 177a9770eacSAndrew Lunn This driver supports the MDIO interface found in Qualcomm 178c76ee263SLuo Jie IPQ40xx, IPQ60xx, IPQ807x and IPQ50xx series Soc-s. 179a9770eacSAndrew Lunn 180a9770eacSAndrew Lunnconfig MDIO_IPQ8064 181a9770eacSAndrew Lunn tristate "Qualcomm IPQ8064 MDIO interface support" 182a9770eacSAndrew Lunn depends on HAS_IOMEM && OF_MDIO 183a9770eacSAndrew Lunn depends on MFD_SYSCON 184*ccc25158SArnd Bergmann select MDIO_DEVRES 185a9770eacSAndrew Lunn help 186a9770eacSAndrew Lunn This driver supports the MDIO interface found in the network 187a9770eacSAndrew Lunn interface units of the IPQ8064 SoC 188a9770eacSAndrew Lunn 18924e31e47SChris Packhamconfig MDIO_REALTEK_RTL9300 19024e31e47SChris Packham tristate "Realtek RTL9300 MDIO interface support" 19124e31e47SChris Packham depends on MACH_REALTEK_RTL || COMPILE_TEST 192*ccc25158SArnd Bergmann select MDIO_DEVRES 19324e31e47SChris Packham help 19424e31e47SChris Packham This driver supports the MDIO interface found in the Realtek 19524e31e47SChris Packham RTL9300 family of Ethernet switches with integrated SoC. 19624e31e47SChris Packham 197642af0f9SMaxime Chevallierconfig MDIO_REGMAP 198642af0f9SMaxime Chevallier tristate 199642af0f9SMaxime Chevallier help 200642af0f9SMaxime Chevallier This driver allows using MDIO devices that are not sitting on a 201642af0f9SMaxime Chevallier regular MDIO bus, but still exposes the standard 802.3 register 202642af0f9SMaxime Chevallier layout. It's regmap-based so that it can be used on integrated, 203642af0f9SMaxime Chevallier memory-mapped PHYs, SPI PHYs and so on. A new virtual MDIO bus is 204642af0f9SMaxime Chevallier created, and its read/write operations are mapped to the underlying 205642af0f9SMaxime Chevallier regmap. Users willing to use this driver must explicitly select 206642af0f9SMaxime Chevallier REGMAP. 207642af0f9SMaxime Chevallier 208a9770eacSAndrew Lunnconfig MDIO_THUNDER 209a9770eacSAndrew Lunn tristate "ThunderX SOCs MDIO buses" 210a9770eacSAndrew Lunn depends on 64BIT 211a9770eacSAndrew Lunn depends on PCI 212a9770eacSAndrew Lunn select MDIO_CAVIUM 2138b0308feSDavid S. Miller select MDIO_DEVRES 214a9770eacSAndrew Lunn help 215a9770eacSAndrew Lunn This driver supports the MDIO interfaces found on Cavium 216a9770eacSAndrew Lunn ThunderX SoCs when the MDIO bus device appears as a PCI 217a9770eacSAndrew Lunn device. 218a9770eacSAndrew Lunn 219a9770eacSAndrew Lunncomment "MDIO Multiplexers" 220a9770eacSAndrew Lunn 221a9770eacSAndrew Lunnconfig MDIO_BUS_MUX 222a9770eacSAndrew Lunn tristate 223a9770eacSAndrew Lunn depends on OF_MDIO 224a9770eacSAndrew Lunn help 225a9770eacSAndrew Lunn This module provides a driver framework for MDIO bus 226a9770eacSAndrew Lunn multiplexers which connect one of several child MDIO busses 227a9770eacSAndrew Lunn to a parent bus. Switching between child busses is done by 228a9770eacSAndrew Lunn device specific drivers. 229a9770eacSAndrew Lunn 230a9770eacSAndrew Lunnconfig MDIO_BUS_MUX_MESON_G12A 231a9770eacSAndrew Lunn tristate "Amlogic G12a based MDIO bus multiplexer" 232a9770eacSAndrew Lunn depends on ARCH_MESON || COMPILE_TEST 233a9770eacSAndrew Lunn depends on OF_MDIO && HAS_IOMEM && COMMON_CLK 234a9770eacSAndrew Lunn select MDIO_BUS_MUX 235a9770eacSAndrew Lunn default m if ARCH_MESON 236a9770eacSAndrew Lunn help 237a9770eacSAndrew Lunn This module provides a driver for the MDIO multiplexer/glue of 238a9770eacSAndrew Lunn the amlogic g12a SoC. The multiplexers connects either the external 239a9770eacSAndrew Lunn or the internal MDIO bus to the parent bus. 240a9770eacSAndrew Lunn 2419a24e1ffSJerome Brunetconfig MDIO_BUS_MUX_MESON_GXL 2429a24e1ffSJerome Brunet tristate "Amlogic GXL based MDIO bus multiplexer" 2439a24e1ffSJerome Brunet depends on ARCH_MESON || COMPILE_TEST 2449a24e1ffSJerome Brunet depends on OF_MDIO && HAS_IOMEM && COMMON_CLK 2459a24e1ffSJerome Brunet select MDIO_BUS_MUX 2469a24e1ffSJerome Brunet default m if ARCH_MESON 2479a24e1ffSJerome Brunet help 2489a24e1ffSJerome Brunet This module provides a driver for the MDIO multiplexer/glue of 2499a24e1ffSJerome Brunet the amlogic GXL SoC. The multiplexer connects either the external 2509a24e1ffSJerome Brunet or the internal MDIO bus to the parent bus. 2519a24e1ffSJerome Brunet 252e2397567SÁlvaro Fernández Rojasconfig MDIO_BUS_MUX_BCM6368 253e2397567SÁlvaro Fernández Rojas tristate "Broadcom BCM6368 MDIO bus multiplexers" 254e2397567SÁlvaro Fernández Rojas depends on OF && OF_MDIO && (BMIPS_GENERIC || COMPILE_TEST) 255e2397567SÁlvaro Fernández Rojas select MDIO_BUS_MUX 256e2397567SÁlvaro Fernández Rojas default BMIPS_GENERIC 257e2397567SÁlvaro Fernández Rojas help 258e2397567SÁlvaro Fernández Rojas This module provides a driver for MDIO bus multiplexers found in 259e2397567SÁlvaro Fernández Rojas BCM6368 based Broadcom SoCs. This multiplexer connects one of several 260e2397567SÁlvaro Fernández Rojas child MDIO bus to a parent bus. Buses could be internal as well as 261e2397567SÁlvaro Fernández Rojas external and selection logic lies inside the same multiplexer. 262e2397567SÁlvaro Fernández Rojas 263a9770eacSAndrew Lunnconfig MDIO_BUS_MUX_BCM_IPROC 264a9770eacSAndrew Lunn tristate "Broadcom iProc based MDIO bus multiplexers" 265a9770eacSAndrew Lunn depends on OF && OF_MDIO && (ARCH_BCM_IPROC || COMPILE_TEST) 266a9770eacSAndrew Lunn select MDIO_BUS_MUX 267a9770eacSAndrew Lunn default ARCH_BCM_IPROC 268a9770eacSAndrew Lunn help 269a9770eacSAndrew Lunn This module provides a driver for MDIO bus multiplexers found in 270a9770eacSAndrew Lunn iProc based Broadcom SoCs. This multiplexer connects one of several 271a9770eacSAndrew Lunn child MDIO bus to a parent bus. Buses could be internal as well as 272a9770eacSAndrew Lunn external and selection logic lies inside the same multiplexer. 273a9770eacSAndrew Lunn 274a9770eacSAndrew Lunnconfig MDIO_BUS_MUX_GPIO 275a9770eacSAndrew Lunn tristate "GPIO controlled MDIO bus multiplexers" 276a9770eacSAndrew Lunn depends on OF_GPIO && OF_MDIO 277a9770eacSAndrew Lunn select MDIO_BUS_MUX 278a9770eacSAndrew Lunn help 279a9770eacSAndrew Lunn This module provides a driver for MDIO bus multiplexers that 280a9770eacSAndrew Lunn are controlled via GPIO lines. The multiplexer connects one of 281a9770eacSAndrew Lunn several child MDIO busses to a parent bus. Child bus 282a9770eacSAndrew Lunn selection is under the control of GPIO lines. 283a9770eacSAndrew Lunn 284a9770eacSAndrew Lunnconfig MDIO_BUS_MUX_MULTIPLEXER 285a9770eacSAndrew Lunn tristate "MDIO bus multiplexer using kernel multiplexer subsystem" 286a9770eacSAndrew Lunn depends on OF_MDIO 287a9770eacSAndrew Lunn select MULTIPLEXER 288a9770eacSAndrew Lunn select MDIO_BUS_MUX 289a9770eacSAndrew Lunn help 290a9770eacSAndrew Lunn This module provides a driver for MDIO bus multiplexer 291a9770eacSAndrew Lunn that is controlled via the kernel multiplexer subsystem. The 292a9770eacSAndrew Lunn bus multiplexer connects one of several child MDIO busses to 293a9770eacSAndrew Lunn a parent bus. Child bus selection is under the control of 294a9770eacSAndrew Lunn the kernel multiplexer subsystem. 295a9770eacSAndrew Lunn 296a9770eacSAndrew Lunnconfig MDIO_BUS_MUX_MMIOREG 297a9770eacSAndrew Lunn tristate "MMIO device-controlled MDIO bus multiplexers" 298a9770eacSAndrew Lunn depends on OF_MDIO && HAS_IOMEM 299a9770eacSAndrew Lunn select MDIO_BUS_MUX 300a9770eacSAndrew Lunn help 301a9770eacSAndrew Lunn This module provides a driver for MDIO bus multiplexers that 302a9770eacSAndrew Lunn are controlled via a simple memory-mapped device, like an FPGA. 303a9770eacSAndrew Lunn The multiplexer connects one of several child MDIO busses to a 304a9770eacSAndrew Lunn parent bus. Child bus selection is under the control of one of 305a9770eacSAndrew Lunn the FPGA's registers. 306a9770eacSAndrew Lunn 307a9770eacSAndrew Lunn Currently, only 8/16/32 bits registers are supported. 308a9770eacSAndrew Lunn 309a9770eacSAndrew Lunn 310a9770eacSAndrew Lunnendif 311a9770eacSAndrew Lunnendif 312