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