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