xref: /linux/drivers/net/mdio/Kconfig (revision fe259a1bb26ec78842c975d992331705b0c2c2e8)
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
37config ACPI_MDIO
38	def_tristate PHYLIB
39	depends on ACPI
40	depends on PHYLIB
41	help
42	  ACPI MDIO bus (Ethernet PHY) accessors
43
44if MDIO_BUS
45
46config MDIO_DEVRES
47	tristate
48
49config MDIO_SUN4I
50	tristate "Allwinner sun4i MDIO interface support"
51	depends on ARCH_SUNXI || COMPILE_TEST
52	help
53	  This driver supports the MDIO interface found in the network
54	  interface units of the Allwinner SoC that have an EMAC (A10,
55	  A12, A10s, etc.)
56
57config MDIO_XGENE
58	tristate "APM X-Gene SoC MDIO bus controller"
59	depends on ARCH_XGENE || COMPILE_TEST
60	depends on PHYLIB
61	help
62	  This module provides a driver for the MDIO busses found in the
63	  APM X-Gene SoC's.
64
65config MDIO_ASPEED
66	tristate "ASPEED MDIO bus controller"
67	depends on ARCH_ASPEED || COMPILE_TEST
68	depends on OF_MDIO && HAS_IOMEM
69	select MDIO_DEVRES
70	help
71	  This module provides a driver for the independent MDIO bus
72	  controllers found in the ASPEED AST2600 SoC. This is a driver for the
73	  third revision of the ASPEED MDIO register interface - the first two
74	  revisions are the "old" and "new" interfaces found in the AST2400 and
75	  AST2500, embedded in the MAC. For legacy reasons, FTGMAC100 driver
76	  continues to drive the embedded MDIO controller for the AST2400 and
77	  AST2500 SoCs, so say N if AST2600 support is not required.
78
79config MDIO_BITBANG
80	tristate "Bitbanged MDIO buses"
81	help
82	  This module implements the MDIO bus protocol in software,
83	  for use by low level drivers that export the ability to
84	  drive the relevant pins.
85
86	  If in doubt, say N.
87
88config MDIO_BCM_IPROC
89	tristate "Broadcom iProc MDIO bus controller"
90	depends on ARCH_BCM_IPROC || COMPILE_TEST
91	depends on HAS_IOMEM && OF_MDIO
92	default ARCH_BCM_IPROC
93	help
94	  This module provides a driver for the MDIO busses found in the
95	  Broadcom iProc SoC's.
96
97config MDIO_BCM_UNIMAC
98	tristate "Broadcom UniMAC MDIO bus controller"
99	depends on HAS_IOMEM
100	help
101	  This module provides a driver for the Broadcom UniMAC MDIO busses.
102	  This hardware can be found in the Broadcom GENET Ethernet MAC
103	  controllers as well as some Broadcom Ethernet switches such as the
104	  Starfighter 2 switches.
105
106config MDIO_CAVIUM
107	tristate
108
109config MDIO_GPIO
110	tristate "GPIO lib-based bitbanged MDIO buses"
111	depends on MDIO_BITBANG
112	depends on GPIOLIB || COMPILE_TEST
113	help
114	  Supports GPIO lib-based MDIO busses.
115
116	  To compile this driver as a module, choose M here: the module
117	  will be called mdio-gpio.
118
119config MDIO_HISI_FEMAC
120	tristate "Hisilicon FEMAC MDIO bus controller"
121	depends on HAS_IOMEM && OF_MDIO
122	help
123	  This module provides a driver for the MDIO busses found in the
124	  Hisilicon SoC that have an Fast Ethernet MAC.
125
126config MDIO_I2C
127	tristate
128	depends on I2C
129	help
130	  Support I2C based PHYs.  This provides a MDIO bus bridged
131	  to I2C to allow PHYs connected in I2C mode to be accessed
132	  using the existing infrastructure.
133
134	  This is library mode.
135
136config MDIO_MVUSB
137	tristate "Marvell USB to MDIO Adapter"
138	depends on USB
139	select MDIO_DEVRES
140	help
141	  A USB to MDIO converter present on development boards for
142	  Marvell's Link Street family of Ethernet switches.
143
144config MDIO_MSCC_MIIM
145	tristate "Microsemi MIIM interface support"
146	depends on HAS_IOMEM && REGMAP_MMIO
147	select MDIO_DEVRES
148	help
149	  This driver supports the MIIM (MDIO) interface found in the network
150	  switches of the Microsemi SoCs; it is recommended to switch on
151	  CONFIG_HIGH_RES_TIMERS
152
153config MDIO_MOXART
154	tristate "MOXA ART MDIO interface support"
155	depends on ARCH_MOXART || COMPILE_TEST
156	help
157	  This driver supports the MDIO interface found in the network
158	  interface units of the MOXA ART SoC
159
160config MDIO_OCTEON
161	tristate "Octeon and some ThunderX SOCs MDIO buses"
162	depends on (64BIT && OF_MDIO) || COMPILE_TEST
163	depends on HAS_IOMEM
164	select MDIO_CAVIUM
165	select MDIO_DEVRES
166	help
167	  This module provides a driver for the Octeon and ThunderX MDIO
168	  buses. It is required by the Octeon and ThunderX ethernet device
169	  drivers on some systems.
170
171config MDIO_IPQ4019
172	tristate "Qualcomm IPQ4019 MDIO interface support"
173	depends on HAS_IOMEM && OF_MDIO
174	depends on COMMON_CLK
175	select MDIO_DEVRES
176	help
177	  This driver supports the MDIO interface found in Qualcomm
178	  IPQ40xx, IPQ60xx, IPQ807x and IPQ50xx series Soc-s.
179
180config MDIO_IPQ8064
181	tristate "Qualcomm IPQ8064 MDIO interface support"
182	depends on HAS_IOMEM && OF_MDIO
183	depends on MFD_SYSCON
184	select MDIO_DEVRES
185	help
186	  This driver supports the MDIO interface found in the network
187	  interface units of the IPQ8064 SoC
188
189config MDIO_REALTEK_RTL9300
190	tristate "Realtek RTL9300 MDIO interface support"
191	depends on MACH_REALTEK_RTL || COMPILE_TEST
192	select MDIO_DEVRES
193	help
194	  This driver supports the MDIO interface found in the Realtek
195	  RTL9300 family of Ethernet switches with integrated SoC.
196
197config MDIO_REGMAP
198	tristate
199	help
200	  This driver allows using MDIO devices that are not sitting on a
201	  regular MDIO bus, but still exposes the standard 802.3 register
202	  layout. It's regmap-based so that it can be used on integrated,
203	  memory-mapped PHYs, SPI PHYs and so on. A new virtual MDIO bus is
204	  created, and its read/write operations are mapped to the underlying
205	  regmap. Users willing to use this driver must explicitly select
206	  REGMAP.
207
208config MDIO_THUNDER
209	tristate "ThunderX SOCs MDIO buses"
210	depends on 64BIT
211	depends on PCI
212	select MDIO_CAVIUM
213	select MDIO_DEVRES
214	help
215	  This driver supports the MDIO interfaces found on Cavium
216	  ThunderX SoCs when the MDIO bus device appears as a PCI
217	  device.
218
219comment "MDIO Multiplexers"
220
221config MDIO_BUS_MUX
222	tristate
223	depends on OF_MDIO
224	help
225	  This module provides a driver framework for MDIO bus
226	  multiplexers which connect one of several child MDIO busses
227	  to a parent bus.  Switching between child busses is done by
228	  device specific drivers.
229
230config MDIO_BUS_MUX_MESON_G12A
231	tristate "Amlogic G12a based MDIO bus multiplexer"
232	depends on ARCH_MESON || COMPILE_TEST
233	depends on OF_MDIO && HAS_IOMEM && COMMON_CLK
234	select MDIO_BUS_MUX
235	default m if ARCH_MESON
236	help
237	  This module provides a driver for the MDIO multiplexer/glue of
238	  the amlogic g12a SoC. The multiplexers connects either the external
239	  or the internal MDIO bus to the parent bus.
240
241config MDIO_BUS_MUX_MESON_GXL
242	tristate "Amlogic GXL based MDIO bus multiplexer"
243	depends on ARCH_MESON || COMPILE_TEST
244	depends on OF_MDIO && HAS_IOMEM && COMMON_CLK
245	select MDIO_BUS_MUX
246	default m if ARCH_MESON
247	help
248	  This module provides a driver for the MDIO multiplexer/glue of
249	  the amlogic GXL SoC. The multiplexer connects either the external
250	  or the internal MDIO bus to the parent bus.
251
252config MDIO_BUS_MUX_BCM6368
253	tristate "Broadcom BCM6368 MDIO bus multiplexers"
254	depends on OF && OF_MDIO && (BMIPS_GENERIC || COMPILE_TEST)
255	select MDIO_BUS_MUX
256	default BMIPS_GENERIC
257	help
258	  This module provides a driver for MDIO bus multiplexers found in
259	  BCM6368 based Broadcom SoCs. This multiplexer connects one of several
260	  child MDIO bus to a parent bus. Buses could be internal as well as
261	  external and selection logic lies inside the same multiplexer.
262
263config MDIO_BUS_MUX_BCM_IPROC
264	tristate "Broadcom iProc based MDIO bus multiplexers"
265	depends on OF && OF_MDIO && (ARCH_BCM_IPROC || COMPILE_TEST)
266	select MDIO_BUS_MUX
267	default ARCH_BCM_IPROC
268	help
269	  This module provides a driver for MDIO bus multiplexers found in
270	  iProc based Broadcom SoCs. This multiplexer connects one of several
271	  child MDIO bus to a parent bus. Buses could be internal as well as
272	  external and selection logic lies inside the same multiplexer.
273
274config MDIO_BUS_MUX_GPIO
275	tristate "GPIO controlled MDIO bus multiplexers"
276	depends on OF_GPIO && OF_MDIO
277	select MDIO_BUS_MUX
278	help
279	  This module provides a driver for MDIO bus multiplexers that
280	  are controlled via GPIO lines.  The multiplexer connects one of
281	  several child MDIO busses to a parent bus.  Child bus
282	  selection is under the control of GPIO lines.
283
284config MDIO_BUS_MUX_MULTIPLEXER
285	tristate "MDIO bus multiplexer using kernel multiplexer subsystem"
286	depends on OF_MDIO
287	select MULTIPLEXER
288	select MDIO_BUS_MUX
289	help
290	  This module provides a driver for MDIO bus multiplexer
291	  that is controlled via the kernel multiplexer subsystem. The
292	  bus multiplexer connects one of several child MDIO busses to
293	  a parent bus.  Child bus selection is under the control of
294	  the kernel multiplexer subsystem.
295
296config MDIO_BUS_MUX_MMIOREG
297	tristate "MMIO device-controlled MDIO bus multiplexers"
298	depends on OF_MDIO && HAS_IOMEM
299	select MDIO_BUS_MUX
300	help
301	  This module provides a driver for MDIO bus multiplexers that
302	  are controlled via a simple memory-mapped device, like an FPGA.
303	  The multiplexer connects one of several child MDIO busses to a
304	  parent bus.  Child bus selection is under the control of one of
305	  the FPGA's registers.
306
307	  Currently, only 8/16/32 bits registers are supported.
308
309
310endif
311endif
312