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