xref: /linux/drivers/net/mdio/Kconfig (revision a9770eac511ad82390b9f4a3c1728e078c387ac7)
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