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