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