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