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