xref: /linux/drivers/net/mdio/Kconfig (revision ab93e0dd72c37d378dd936f031ffb83ff2bd87ce)
1a9770eacSAndrew Lunn# SPDX-License-Identifier: GPL-2.0-only
2a9770eacSAndrew Lunn#
3a9770eacSAndrew Lunn# MDIO Layer Configuration
4a9770eacSAndrew Lunn#
5a9770eacSAndrew Lunn
6a9770eacSAndrew Lunnconfig MDIO_BUS
7*31be641dSHeiner Kallweit	tristate "MDIO bus consumer layer"
8a9770eacSAndrew Lunn	help
9*31be641dSHeiner Kallweit	  MDIO bus consumer layer
10a9770eacSAndrew Lunn
11a3e1c0adSHeiner Kallweitif PHYLIB
12a3e1c0adSHeiner Kallweit
13bc1bee3bSCalvin Johnsonconfig FWNODE_MDIO
14a3e1c0adSHeiner Kallweit	def_tristate (ACPI || OF) || COMPILE_TEST
15bc1bee3bSCalvin Johnson	select FIXED_PHY
16bc1bee3bSCalvin Johnson	help
17bc1bee3bSCalvin Johnson	  FWNODE MDIO bus (Ethernet PHY) accessors
18bc1bee3bSCalvin Johnson
1914b26b12SCalvin Johnsonconfig OF_MDIO
20a3e1c0adSHeiner Kallweit	def_tristate OF
2114b26b12SCalvin Johnson	select FIXED_PHY
2214b26b12SCalvin Johnson	help
2314b26b12SCalvin Johnson	  OpenFirmware MDIO bus (Ethernet PHY) accessors
2414b26b12SCalvin Johnson
25803ca24dSCalvin Johnsonconfig ACPI_MDIO
26a3e1c0adSHeiner Kallweit	def_tristate ACPI
27803ca24dSCalvin Johnson	help
28803ca24dSCalvin Johnson	  ACPI MDIO bus (Ethernet PHY) accessors
29803ca24dSCalvin Johnson
30a9770eacSAndrew Lunnconfig MDIO_AIROHA
31a9770eacSAndrew Lunn	tristate "Airoha AN7583 MDIO bus controller"
32a9770eacSAndrew Lunn	depends on ARCH_AIROHA || COMPILE_TEST
33a9770eacSAndrew Lunn	help
34a9770eacSAndrew Lunn	  This module provides a driver for the MDIO busses found in the
35a9770eacSAndrew Lunn	  Airoha AN7583 SoC's.
36a9770eacSAndrew Lunn
37a9770eacSAndrew Lunnconfig MDIO_SUN4I
38a9770eacSAndrew Lunn	tristate "Allwinner sun4i MDIO interface support"
39a9770eacSAndrew Lunn	depends on ARCH_SUNXI || COMPILE_TEST
40a9770eacSAndrew Lunn	help
41a9770eacSAndrew Lunn	  This driver supports the MDIO interface found in the network
42a9770eacSAndrew Lunn	  interface units of the Allwinner SoC that have an EMAC (A10,
43a9770eacSAndrew Lunn	  A12, A10s, etc.)
44a9770eacSAndrew Lunn
45a9770eacSAndrew Lunnconfig MDIO_XGENE
46a9770eacSAndrew Lunn	tristate "APM X-Gene SoC MDIO bus controller"
47a9770eacSAndrew Lunn	depends on ARCH_XGENE || COMPILE_TEST
48a9770eacSAndrew Lunn	help
49a9770eacSAndrew Lunn	  This module provides a driver for the MDIO busses found in the
50a9770eacSAndrew Lunn	  APM X-Gene SoC's.
51a9770eacSAndrew Lunn
52a9770eacSAndrew Lunnconfig MDIO_ASPEED
53a9770eacSAndrew Lunn	tristate "ASPEED MDIO bus controller"
54a9770eacSAndrew Lunn	depends on ARCH_ASPEED || COMPILE_TEST
55a9770eacSAndrew Lunn	depends on OF_MDIO && HAS_IOMEM
56a9770eacSAndrew Lunn	help
57a9770eacSAndrew Lunn	  This module provides a driver for the independent MDIO bus
58a9770eacSAndrew Lunn	  controllers found in the ASPEED AST2600 SoC. This is a driver for the
59a9770eacSAndrew Lunn	  third revision of the ASPEED MDIO register interface - the first two
60a9770eacSAndrew Lunn	  revisions are the "old" and "new" interfaces found in the AST2400 and
61a9770eacSAndrew Lunn	  AST2500, embedded in the MAC. For legacy reasons, FTGMAC100 driver
62a9770eacSAndrew Lunn	  continues to drive the embedded MDIO controller for the AST2400 and
63a9770eacSAndrew Lunn	  AST2500 SoCs, so say N if AST2600 support is not required.
64a9770eacSAndrew Lunn
65a9770eacSAndrew Lunnconfig MDIO_BITBANG
66a9770eacSAndrew Lunn	tristate "Bitbanged MDIO buses"
67a9770eacSAndrew Lunn	help
68a9770eacSAndrew Lunn	  This module implements the MDIO bus protocol in software,
69a9770eacSAndrew Lunn	  for use by low level drivers that export the ability to
70a9770eacSAndrew Lunn	  drive the relevant pins.
71a9770eacSAndrew Lunn
72a9770eacSAndrew Lunn	  If in doubt, say N.
73a9770eacSAndrew Lunn
74a9770eacSAndrew Lunnconfig MDIO_BCM_IPROC
75a9770eacSAndrew Lunn	tristate "Broadcom iProc MDIO bus controller"
76a9770eacSAndrew Lunn	depends on ARCH_BCM_IPROC || COMPILE_TEST
77a9770eacSAndrew Lunn	depends on HAS_IOMEM && OF_MDIO
78a9770eacSAndrew Lunn	default ARCH_BCM_IPROC
79a9770eacSAndrew Lunn	help
80a9770eacSAndrew Lunn	  This module provides a driver for the MDIO busses found in the
81a9770eacSAndrew Lunn	  Broadcom iProc SoC's.
82a9770eacSAndrew Lunn
83a9770eacSAndrew Lunnconfig MDIO_BCM_UNIMAC
84a9770eacSAndrew Lunn	tristate "Broadcom UniMAC MDIO bus controller"
85a9770eacSAndrew Lunn	depends on HAS_IOMEM
86a9770eacSAndrew Lunn	help
87a9770eacSAndrew Lunn	  This module provides a driver for the Broadcom UniMAC MDIO busses.
88a9770eacSAndrew Lunn	  This hardware can be found in the Broadcom GENET Ethernet MAC
89a9770eacSAndrew Lunn	  controllers as well as some Broadcom Ethernet switches such as the
90a9770eacSAndrew Lunn	  Starfighter 2 switches.
91a9770eacSAndrew Lunn
92a9770eacSAndrew Lunnconfig MDIO_CAVIUM
93a9770eacSAndrew Lunn	tristate
94a9770eacSAndrew Lunn
95a9770eacSAndrew Lunnconfig MDIO_GPIO
96a9770eacSAndrew Lunn	tristate "GPIO lib-based bitbanged MDIO buses"
97a9770eacSAndrew Lunn	depends on MDIO_BITBANG
98a9770eacSAndrew Lunn	depends on GPIOLIB || COMPILE_TEST
99a9770eacSAndrew Lunn	help
100a9770eacSAndrew Lunn	  Supports GPIO lib-based MDIO busses.
101a9770eacSAndrew Lunn
102a9770eacSAndrew Lunn	  To compile this driver as a module, choose M here: the module
103a9770eacSAndrew Lunn	  will be called mdio-gpio.
104a9770eacSAndrew Lunn
105a9770eacSAndrew Lunnconfig MDIO_HISI_FEMAC
106a9770eacSAndrew Lunn	tristate "Hisilicon FEMAC MDIO bus controller"
107a9770eacSAndrew Lunn	depends on HAS_IOMEM && OF_MDIO
108a9770eacSAndrew Lunn	help
109a9770eacSAndrew Lunn	  This module provides a driver for the MDIO busses found in the
110a9770eacSAndrew Lunn	  Hisilicon SoC that have an Fast Ethernet MAC.
111a9770eacSAndrew Lunn
112a9770eacSAndrew Lunnconfig MDIO_I2C
113a9770eacSAndrew Lunn	tristate
114a9770eacSAndrew Lunn	depends on I2C
115a9770eacSAndrew Lunn	help
116a9770eacSAndrew Lunn	  Support I2C based PHYs.  This provides a MDIO bus bridged
117a9770eacSAndrew Lunn	  to I2C to allow PHYs connected in I2C mode to be accessed
118a9770eacSAndrew Lunn	  using the existing infrastructure.
119a9770eacSAndrew Lunn
120a9770eacSAndrew Lunn	  This is library mode.
121a9770eacSAndrew Lunn
122a9770eacSAndrew Lunnconfig MDIO_MVUSB
123a9770eacSAndrew Lunn	tristate "Marvell USB to MDIO Adapter"
1248057cbb8STianchen Ding	depends on USB
125a9770eacSAndrew Lunn	help
126a9770eacSAndrew Lunn	  A USB to MDIO converter present on development boards for
127a9770eacSAndrew Lunn	  Marvell's Link Street family of Ethernet switches.
128a9770eacSAndrew Lunn
129a9770eacSAndrew Lunnconfig MDIO_MSCC_MIIM
130a9770eacSAndrew Lunn	tristate "Microsemi MIIM interface support"
131a9770eacSAndrew Lunn	depends on HAS_IOMEM && REGMAP_MMIO
132a9770eacSAndrew Lunn	help
133a9770eacSAndrew Lunn	  This driver supports the MIIM (MDIO) interface found in the network
134a9770eacSAndrew Lunn	  switches of the Microsemi SoCs; it is recommended to switch on
135a9770eacSAndrew Lunn	  CONFIG_HIGH_RES_TIMERS
136a9770eacSAndrew Lunn
137a9770eacSAndrew Lunnconfig MDIO_MOXART
138a9770eacSAndrew Lunn	tristate "MOXA ART MDIO interface support"
139a9770eacSAndrew Lunn	depends on ARCH_MOXART || COMPILE_TEST
140a9770eacSAndrew Lunn	help
141a9770eacSAndrew Lunn	  This driver supports the MDIO interface found in the network
142a9770eacSAndrew Lunn	  interface units of the MOXA ART SoC
143a9770eacSAndrew Lunn
144a9770eacSAndrew Lunnconfig MDIO_OCTEON
145a9770eacSAndrew Lunn	tristate "Octeon and some ThunderX SOCs MDIO buses"
146a9770eacSAndrew Lunn	depends on (64BIT && OF_MDIO) || COMPILE_TEST
147a9770eacSAndrew Lunn	depends on HAS_IOMEM
148a9770eacSAndrew Lunn	select MDIO_CAVIUM
149a9770eacSAndrew Lunn	help
15023a890d4SLuo Jie	  This module provides a driver for the Octeon and ThunderX MDIO
151a9770eacSAndrew Lunn	  buses. It is required by the Octeon and ThunderX ethernet device
152a9770eacSAndrew Lunn	  drivers on some systems.
153c76ee263SLuo Jie
154a9770eacSAndrew Lunnconfig MDIO_IPQ4019
155a9770eacSAndrew Lunn	tristate "Qualcomm IPQ4019 MDIO interface support"
156a9770eacSAndrew Lunn	depends on HAS_IOMEM && OF_MDIO
157a9770eacSAndrew Lunn	depends on COMMON_CLK
158a9770eacSAndrew Lunn	help
159a9770eacSAndrew Lunn	  This driver supports the MDIO interface found in Qualcomm
160a9770eacSAndrew Lunn	  IPQ40xx, IPQ60xx, IPQ807x and IPQ50xx series Soc-s.
161a9770eacSAndrew Lunn
162a9770eacSAndrew Lunnconfig MDIO_IPQ8064
16324e31e47SChris Packham	tristate "Qualcomm IPQ8064 MDIO interface support"
16424e31e47SChris Packham	depends on HAS_IOMEM && OF_MDIO
16524e31e47SChris Packham	depends on MFD_SYSCON
16624e31e47SChris Packham	help
16724e31e47SChris Packham	  This driver supports the MDIO interface found in the network
16824e31e47SChris Packham	  interface units of the IPQ8064 SoC
16924e31e47SChris Packham
170642af0f9SMaxime Chevallierconfig MDIO_REALTEK_RTL9300
171642af0f9SMaxime Chevallier	tristate "Realtek RTL9300 MDIO interface support"
172642af0f9SMaxime Chevallier	depends on MACH_REALTEK_RTL || COMPILE_TEST
173642af0f9SMaxime Chevallier	help
174642af0f9SMaxime Chevallier	  This driver supports the MDIO interface found in the Realtek
175642af0f9SMaxime Chevallier	  RTL9300 family of Ethernet switches with integrated SoC.
176642af0f9SMaxime Chevallier
177642af0f9SMaxime Chevallierconfig MDIO_REGMAP
178642af0f9SMaxime Chevallier	tristate
179642af0f9SMaxime Chevallier	help
180642af0f9SMaxime Chevallier	  This driver allows using MDIO devices that are not sitting on a
181a9770eacSAndrew Lunn	  regular MDIO bus, but still exposes the standard 802.3 register
182a9770eacSAndrew Lunn	  layout. It's regmap-based so that it can be used on integrated,
183a9770eacSAndrew Lunn	  memory-mapped PHYs, SPI PHYs and so on. A new virtual MDIO bus is
184a9770eacSAndrew Lunn	  created, and its read/write operations are mapped to the underlying
185a9770eacSAndrew Lunn	  regmap. Users willing to use this driver must explicitly select
186a9770eacSAndrew Lunn	  REGMAP.
187a9770eacSAndrew Lunn
188a9770eacSAndrew Lunnconfig MDIO_THUNDER
189a9770eacSAndrew Lunn	tristate "ThunderX SOCs MDIO buses"
190a9770eacSAndrew Lunn	depends on 64BIT
191a9770eacSAndrew Lunn	depends on PCI
192a9770eacSAndrew Lunn	select MDIO_CAVIUM
193a9770eacSAndrew Lunn	help
194a9770eacSAndrew Lunn	  This driver supports the MDIO interfaces found on Cavium
195a9770eacSAndrew Lunn	  ThunderX SoCs when the MDIO bus device appears as a PCI
196a9770eacSAndrew Lunn	  device.
197a9770eacSAndrew Lunn
198a9770eacSAndrew Lunncomment "MDIO Multiplexers"
199a9770eacSAndrew Lunn
200a9770eacSAndrew Lunnconfig MDIO_BUS_MUX
201a9770eacSAndrew Lunn	tristate
202a9770eacSAndrew Lunn	depends on OF_MDIO
203a9770eacSAndrew Lunn	help
204a9770eacSAndrew Lunn	  This module provides a driver framework for MDIO bus
205a9770eacSAndrew Lunn	  multiplexers which connect one of several child MDIO busses
206a9770eacSAndrew Lunn	  to a parent bus.  Switching between child busses is done by
207a9770eacSAndrew Lunn	  device specific drivers.
208a9770eacSAndrew Lunn
209a9770eacSAndrew Lunnconfig MDIO_BUS_MUX_MESON_G12A
210a9770eacSAndrew Lunn	tristate "Amlogic G12a based MDIO bus multiplexer"
211a9770eacSAndrew Lunn	depends on ARCH_MESON || COMPILE_TEST
212a9770eacSAndrew Lunn	depends on OF_MDIO && HAS_IOMEM && COMMON_CLK
2139a24e1ffSJerome Brunet	select MDIO_BUS_MUX
2149a24e1ffSJerome Brunet	default m if ARCH_MESON
2159a24e1ffSJerome Brunet	help
2169a24e1ffSJerome Brunet	  This module provides a driver for the MDIO multiplexer/glue of
2179a24e1ffSJerome Brunet	  the amlogic g12a SoC. The multiplexers connects either the external
2189a24e1ffSJerome Brunet	  or the internal MDIO bus to the parent bus.
2199a24e1ffSJerome Brunet
2209a24e1ffSJerome Brunetconfig MDIO_BUS_MUX_MESON_GXL
2219a24e1ffSJerome Brunet	tristate "Amlogic GXL based MDIO bus multiplexer"
2229a24e1ffSJerome Brunet	depends on ARCH_MESON || COMPILE_TEST
2239a24e1ffSJerome Brunet	depends on OF_MDIO && HAS_IOMEM && COMMON_CLK
224e2397567SÁlvaro Fernández Rojas	select MDIO_BUS_MUX
225e2397567SÁlvaro Fernández Rojas	default m if ARCH_MESON
226e2397567SÁlvaro Fernández Rojas	help
227e2397567SÁlvaro Fernández Rojas	  This module provides a driver for the MDIO multiplexer/glue of
228e2397567SÁlvaro Fernández Rojas	  the amlogic GXL SoC. The multiplexer connects either the external
229e2397567SÁlvaro Fernández Rojas	  or the internal MDIO bus to the parent bus.
230e2397567SÁlvaro Fernández Rojas
231e2397567SÁlvaro Fernández Rojasconfig MDIO_BUS_MUX_BCM6368
232e2397567SÁlvaro Fernández Rojas	tristate "Broadcom BCM6368 MDIO bus multiplexers"
233e2397567SÁlvaro Fernández Rojas	depends on OF && OF_MDIO && (BMIPS_GENERIC || COMPILE_TEST)
234e2397567SÁlvaro Fernández Rojas	select MDIO_BUS_MUX
235a9770eacSAndrew Lunn	default BMIPS_GENERIC
236a9770eacSAndrew Lunn	help
237a9770eacSAndrew Lunn	  This module provides a driver for MDIO bus multiplexers found in
238a9770eacSAndrew Lunn	  BCM6368 based Broadcom SoCs. This multiplexer connects one of several
239a9770eacSAndrew Lunn	  child MDIO bus to a parent bus. Buses could be internal as well as
240a9770eacSAndrew Lunn	  external and selection logic lies inside the same multiplexer.
241a9770eacSAndrew Lunn
242a9770eacSAndrew Lunnconfig MDIO_BUS_MUX_BCM_IPROC
243a9770eacSAndrew Lunn	tristate "Broadcom iProc based MDIO bus multiplexers"
244a9770eacSAndrew Lunn	depends on OF && OF_MDIO && (ARCH_BCM_IPROC || COMPILE_TEST)
245a9770eacSAndrew Lunn	select MDIO_BUS_MUX
246a9770eacSAndrew Lunn	default ARCH_BCM_IPROC
247a9770eacSAndrew Lunn	help
248a9770eacSAndrew Lunn	  This module provides a driver for MDIO bus multiplexers found in
249a9770eacSAndrew Lunn	  iProc based Broadcom SoCs. This multiplexer connects one of several
250a9770eacSAndrew Lunn	  child MDIO bus to a parent bus. Buses could be internal as well as
251a9770eacSAndrew Lunn	  external and selection logic lies inside the same multiplexer.
252a9770eacSAndrew Lunn
253a9770eacSAndrew Lunnconfig MDIO_BUS_MUX_GPIO
254a9770eacSAndrew Lunn	tristate "GPIO controlled MDIO bus multiplexers"
255a9770eacSAndrew Lunn	depends on OF_GPIO && OF_MDIO
256a9770eacSAndrew Lunn	select MDIO_BUS_MUX
257a9770eacSAndrew Lunn	help
258a9770eacSAndrew Lunn	  This module provides a driver for MDIO bus multiplexers that
259a9770eacSAndrew Lunn	  are controlled via GPIO lines.  The multiplexer connects one of
260a9770eacSAndrew Lunn	  several child MDIO busses to a parent bus.  Child bus
261a9770eacSAndrew Lunn	  selection is under the control of GPIO lines.
262a9770eacSAndrew Lunn
263a9770eacSAndrew Lunnconfig MDIO_BUS_MUX_MULTIPLEXER
264a9770eacSAndrew Lunn	tristate "MDIO bus multiplexer using kernel multiplexer subsystem"
265a9770eacSAndrew Lunn	depends on OF_MDIO
266a9770eacSAndrew Lunn	select MULTIPLEXER
267a9770eacSAndrew Lunn	select MDIO_BUS_MUX
268a9770eacSAndrew Lunn	help
269a9770eacSAndrew Lunn	  This module provides a driver for MDIO bus multiplexer
270a9770eacSAndrew Lunn	  that is controlled via the kernel multiplexer subsystem. The
271a9770eacSAndrew Lunn	  bus multiplexer connects one of several child MDIO busses to
272a9770eacSAndrew Lunn	  a parent bus.  Child bus selection is under the control of
273a9770eacSAndrew Lunn	  the kernel multiplexer subsystem.
274a9770eacSAndrew Lunn
275a9770eacSAndrew Lunnconfig MDIO_BUS_MUX_MMIOREG
276a9770eacSAndrew Lunn	tristate "MMIO device-controlled MDIO bus multiplexers"
277a9770eacSAndrew Lunn	depends on OF_MDIO && HAS_IOMEM
278a9770eacSAndrew Lunn	select MDIO_BUS_MUX
279a9770eacSAndrew Lunn	help
280a9770eacSAndrew Lunn	  This module provides a driver for MDIO bus multiplexers that
281a9770eacSAndrew Lunn	  are controlled via a simple memory-mapped device, like an FPGA.
282a9770eacSAndrew Lunn	  The multiplexer connects one of several child MDIO busses to a
283	  parent bus.  Child bus selection is under the control of one of
284	  the FPGA's registers.
285
286	  Currently, only 8/16/32 bits registers are supported.
287
288
289endif
290