GNU Linux-libre 5.19-rc6-gnu
[releases.git] / drivers / net / mdio / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # MDIO Layer Configuration
4 #
5
6 menuconfig MDIO_DEVICE
7         tristate "MDIO bus device drivers"
8         help
9           MDIO devices and driver infrastructure code.
10
11 if MDIO_DEVICE
12
13 config 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
22 config 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
29 config 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
37 config ACPI_MDIO
38         def_tristate PHYLIB
39         depends on ACPI
40         depends on PHYLIB
41         help
42           ACPI MDIO bus (Ethernet PHY) accessors
43
44 if MDIO_BUS
45
46 config MDIO_DEVRES
47         tristate
48
49 config 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
57 config 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
64 config 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
77 config 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
86 config 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
95 config 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
104 config MDIO_CAVIUM
105         tristate
106
107 config 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
117 config 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
124 config 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
134 config 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
142 config MDIO_MSCC_MIIM
143         tristate "Microsemi MIIM interface support"
144         depends on HAS_IOMEM && REGMAP_MMIO
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
151 config 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
158 config 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
169 config MDIO_IPQ4019
170         tristate "Qualcomm IPQ4019 MDIO interface support"
171         depends on HAS_IOMEM && OF_MDIO
172         depends on COMMON_CLK
173         help
174           This driver supports the MDIO interface found in Qualcomm
175           IPQ40xx, IPQ60xx, IPQ807x and IPQ50xx series Soc-s.
176
177 config MDIO_IPQ8064
178         tristate "Qualcomm IPQ8064 MDIO interface support"
179         depends on HAS_IOMEM && OF_MDIO
180         depends on MFD_SYSCON
181         help
182           This driver supports the MDIO interface found in the network
183           interface units of the IPQ8064 SoC
184
185 config MDIO_THUNDER
186         tristate "ThunderX SOCs MDIO buses"
187         depends on 64BIT
188         depends on PCI
189         select MDIO_CAVIUM
190         select MDIO_DEVRES
191         help
192           This driver supports the MDIO interfaces found on Cavium
193           ThunderX SoCs when the MDIO bus device appears as a PCI
194           device.
195
196 comment "MDIO Multiplexers"
197
198 config MDIO_BUS_MUX
199         tristate
200         depends on OF_MDIO
201         help
202           This module provides a driver framework for MDIO bus
203           multiplexers which connect one of several child MDIO busses
204           to a parent bus.  Switching between child busses is done by
205           device specific drivers.
206
207 config MDIO_BUS_MUX_MESON_G12A
208         tristate "Amlogic G12a based MDIO bus multiplexer"
209         depends on ARCH_MESON || COMPILE_TEST
210         depends on OF_MDIO && HAS_IOMEM && COMMON_CLK
211         select MDIO_BUS_MUX
212         default m if ARCH_MESON
213         help
214           This module provides a driver for the MDIO multiplexer/glue of
215           the amlogic g12a SoC. The multiplexers connects either the external
216           or the internal MDIO bus to the parent bus.
217
218 config MDIO_BUS_MUX_BCM6368
219         tristate "Broadcom BCM6368 MDIO bus multiplexers"
220         depends on OF && OF_MDIO && (BMIPS_GENERIC || COMPILE_TEST)
221         select MDIO_BUS_MUX
222         default BMIPS_GENERIC
223         help
224           This module provides a driver for MDIO bus multiplexers found in
225           BCM6368 based Broadcom SoCs. This multiplexer connects one of several
226           child MDIO bus to a parent bus. Buses could be internal as well as
227           external and selection logic lies inside the same multiplexer.
228
229 config MDIO_BUS_MUX_BCM_IPROC
230         tristate "Broadcom iProc based MDIO bus multiplexers"
231         depends on OF && OF_MDIO && (ARCH_BCM_IPROC || COMPILE_TEST)
232         select MDIO_BUS_MUX
233         default ARCH_BCM_IPROC
234         help
235           This module provides a driver for MDIO bus multiplexers found in
236           iProc based Broadcom SoCs. This multiplexer connects one of several
237           child MDIO bus to a parent bus. Buses could be internal as well as
238           external and selection logic lies inside the same multiplexer.
239
240 config MDIO_BUS_MUX_GPIO
241         tristate "GPIO controlled MDIO bus multiplexers"
242         depends on OF_GPIO && OF_MDIO
243         select MDIO_BUS_MUX
244         help
245           This module provides a driver for MDIO bus multiplexers that
246           are controlled via GPIO lines.  The multiplexer connects one of
247           several child MDIO busses to a parent bus.  Child bus
248           selection is under the control of GPIO lines.
249
250 config MDIO_BUS_MUX_MULTIPLEXER
251         tristate "MDIO bus multiplexer using kernel multiplexer subsystem"
252         depends on OF_MDIO
253         select MULTIPLEXER
254         select MDIO_BUS_MUX
255         help
256           This module provides a driver for MDIO bus multiplexer
257           that is controlled via the kernel multiplexer subsystem. The
258           bus multiplexer connects one of several child MDIO busses to
259           a parent bus.  Child bus selection is under the control of
260           the kernel multiplexer subsystem.
261
262 config MDIO_BUS_MUX_MMIOREG
263         tristate "MMIO device-controlled MDIO bus multiplexers"
264         depends on OF_MDIO && HAS_IOMEM
265         select MDIO_BUS_MUX
266         help
267           This module provides a driver for MDIO bus multiplexers that
268           are controlled via a simple memory-mapped device, like an FPGA.
269           The multiplexer connects one of several child MDIO busses to a
270           parent bus.  Child bus selection is under the control of one of
271           the FPGA's registers.
272
273           Currently, only 8/16/32 bits registers are supported.
274
275
276 endif
277 endif