642af0f92c
There exists several examples today of devices that embed an ethernet PHY or PCS directly inside an SoC. In this situation, either the device is controlled through a vendor-specific register set, or sometimes exposes the standard 802.3 registers that are typically accessed over MDIO. As phylib and phylink are designed to use mdiodevices, this driver allows creating a virtual MDIO bus, that translates mdiodev register accesses to regmap accesses. The reason we use regmap is because there are at least 3 such devices known today, 2 of them are Altera TSE PCS's, memory-mapped, exposed with a 4-byte stride in stmmac's dwmac-socfpga variant, and a 2-byte stride in altera-tse. The other one (nxp,sja1110-base-tx-mdio) is exposed over SPI. Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Signed-off-by: David S. Miller <davem@davemloft.net>
303 lines
9.1 KiB
Plaintext
303 lines
9.1 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# MDIO Layer Configuration
|
|
#
|
|
|
|
menuconfig MDIO_DEVICE
|
|
tristate "MDIO bus device drivers"
|
|
help
|
|
MDIO devices and driver infrastructure code.
|
|
|
|
if MDIO_DEVICE
|
|
|
|
config MDIO_BUS
|
|
tristate
|
|
default m if PHYLIB=m
|
|
default MDIO_DEVICE
|
|
help
|
|
This internal symbol is used for link time dependencies and it
|
|
reflects whether the mdio_bus/mdio_device code is built as a
|
|
loadable module or built-in.
|
|
|
|
config FWNODE_MDIO
|
|
def_tristate PHYLIB
|
|
depends on (ACPI || OF) || COMPILE_TEST
|
|
select FIXED_PHY
|
|
help
|
|
FWNODE MDIO bus (Ethernet PHY) accessors
|
|
|
|
config OF_MDIO
|
|
def_tristate PHYLIB
|
|
depends on OF
|
|
depends on PHYLIB
|
|
select FIXED_PHY
|
|
help
|
|
OpenFirmware MDIO bus (Ethernet PHY) accessors
|
|
|
|
config ACPI_MDIO
|
|
def_tristate PHYLIB
|
|
depends on ACPI
|
|
depends on PHYLIB
|
|
help
|
|
ACPI MDIO bus (Ethernet PHY) accessors
|
|
|
|
if MDIO_BUS
|
|
|
|
config MDIO_DEVRES
|
|
tristate
|
|
|
|
config MDIO_SUN4I
|
|
tristate "Allwinner sun4i MDIO interface support"
|
|
depends on ARCH_SUNXI || COMPILE_TEST
|
|
help
|
|
This driver supports the MDIO interface found in the network
|
|
interface units of the Allwinner SoC that have an EMAC (A10,
|
|
A12, A10s, etc.)
|
|
|
|
config MDIO_XGENE
|
|
tristate "APM X-Gene SoC MDIO bus controller"
|
|
depends on ARCH_XGENE || COMPILE_TEST
|
|
help
|
|
This module provides a driver for the MDIO busses found in the
|
|
APM X-Gene SoC's.
|
|
|
|
config MDIO_ASPEED
|
|
tristate "ASPEED MDIO bus controller"
|
|
depends on ARCH_ASPEED || COMPILE_TEST
|
|
depends on OF_MDIO && HAS_IOMEM
|
|
depends on MDIO_DEVRES
|
|
help
|
|
This module provides a driver for the independent MDIO bus
|
|
controllers found in the ASPEED AST2600 SoC. This is a driver for the
|
|
third revision of the ASPEED MDIO register interface - the first two
|
|
revisions are the "old" and "new" interfaces found in the AST2400 and
|
|
AST2500, embedded in the MAC. For legacy reasons, FTGMAC100 driver
|
|
continues to drive the embedded MDIO controller for the AST2400 and
|
|
AST2500 SoCs, so say N if AST2600 support is not required.
|
|
|
|
config MDIO_BITBANG
|
|
tristate "Bitbanged MDIO buses"
|
|
help
|
|
This module implements the MDIO bus protocol in software,
|
|
for use by low level drivers that export the ability to
|
|
drive the relevant pins.
|
|
|
|
If in doubt, say N.
|
|
|
|
config MDIO_BCM_IPROC
|
|
tristate "Broadcom iProc MDIO bus controller"
|
|
depends on ARCH_BCM_IPROC || COMPILE_TEST
|
|
depends on HAS_IOMEM && OF_MDIO
|
|
default ARCH_BCM_IPROC
|
|
help
|
|
This module provides a driver for the MDIO busses found in the
|
|
Broadcom iProc SoC's.
|
|
|
|
config MDIO_BCM_UNIMAC
|
|
tristate "Broadcom UniMAC MDIO bus controller"
|
|
depends on HAS_IOMEM
|
|
help
|
|
This module provides a driver for the Broadcom UniMAC MDIO busses.
|
|
This hardware can be found in the Broadcom GENET Ethernet MAC
|
|
controllers as well as some Broadcom Ethernet switches such as the
|
|
Starfighter 2 switches.
|
|
|
|
config MDIO_CAVIUM
|
|
tristate
|
|
|
|
config MDIO_GPIO
|
|
tristate "GPIO lib-based bitbanged MDIO buses"
|
|
depends on MDIO_BITBANG
|
|
depends on GPIOLIB || COMPILE_TEST
|
|
help
|
|
Supports GPIO lib-based MDIO busses.
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called mdio-gpio.
|
|
|
|
config MDIO_HISI_FEMAC
|
|
tristate "Hisilicon FEMAC MDIO bus controller"
|
|
depends on HAS_IOMEM && OF_MDIO
|
|
help
|
|
This module provides a driver for the MDIO busses found in the
|
|
Hisilicon SoC that have an Fast Ethernet MAC.
|
|
|
|
config MDIO_I2C
|
|
tristate
|
|
depends on I2C
|
|
help
|
|
Support I2C based PHYs. This provides a MDIO bus bridged
|
|
to I2C to allow PHYs connected in I2C mode to be accessed
|
|
using the existing infrastructure.
|
|
|
|
This is library mode.
|
|
|
|
config MDIO_MVUSB
|
|
tristate "Marvell USB to MDIO Adapter"
|
|
depends on USB
|
|
select MDIO_DEVRES
|
|
help
|
|
A USB to MDIO converter present on development boards for
|
|
Marvell's Link Street family of Ethernet switches.
|
|
|
|
config MDIO_MSCC_MIIM
|
|
tristate "Microsemi MIIM interface support"
|
|
depends on HAS_IOMEM && REGMAP_MMIO
|
|
select MDIO_DEVRES
|
|
help
|
|
This driver supports the MIIM (MDIO) interface found in the network
|
|
switches of the Microsemi SoCs; it is recommended to switch on
|
|
CONFIG_HIGH_RES_TIMERS
|
|
|
|
config MDIO_MOXART
|
|
tristate "MOXA ART MDIO interface support"
|
|
depends on ARCH_MOXART || COMPILE_TEST
|
|
help
|
|
This driver supports the MDIO interface found in the network
|
|
interface units of the MOXA ART SoC
|
|
|
|
config MDIO_OCTEON
|
|
tristate "Octeon and some ThunderX SOCs MDIO buses"
|
|
depends on (64BIT && OF_MDIO) || COMPILE_TEST
|
|
depends on HAS_IOMEM
|
|
select MDIO_CAVIUM
|
|
select MDIO_DEVRES
|
|
help
|
|
This module provides a driver for the Octeon and ThunderX MDIO
|
|
buses. It is required by the Octeon and ThunderX ethernet device
|
|
drivers on some systems.
|
|
|
|
config MDIO_IPQ4019
|
|
tristate "Qualcomm IPQ4019 MDIO interface support"
|
|
depends on HAS_IOMEM && OF_MDIO
|
|
depends on COMMON_CLK
|
|
depends on MDIO_DEVRES
|
|
help
|
|
This driver supports the MDIO interface found in Qualcomm
|
|
IPQ40xx, IPQ60xx, IPQ807x and IPQ50xx series Soc-s.
|
|
|
|
config MDIO_IPQ8064
|
|
tristate "Qualcomm IPQ8064 MDIO interface support"
|
|
depends on HAS_IOMEM && OF_MDIO
|
|
depends on MFD_SYSCON
|
|
depends on MDIO_DEVRES
|
|
help
|
|
This driver supports the MDIO interface found in the network
|
|
interface units of the IPQ8064 SoC
|
|
|
|
config MDIO_REGMAP
|
|
tristate
|
|
help
|
|
This driver allows using MDIO devices that are not sitting on a
|
|
regular MDIO bus, but still exposes the standard 802.3 register
|
|
layout. It's regmap-based so that it can be used on integrated,
|
|
memory-mapped PHYs, SPI PHYs and so on. A new virtual MDIO bus is
|
|
created, and its read/write operations are mapped to the underlying
|
|
regmap. Users willing to use this driver must explicitly select
|
|
REGMAP.
|
|
|
|
config MDIO_THUNDER
|
|
tristate "ThunderX SOCs MDIO buses"
|
|
depends on 64BIT
|
|
depends on PCI
|
|
select MDIO_CAVIUM
|
|
select MDIO_DEVRES
|
|
help
|
|
This driver supports the MDIO interfaces found on Cavium
|
|
ThunderX SoCs when the MDIO bus device appears as a PCI
|
|
device.
|
|
|
|
comment "MDIO Multiplexers"
|
|
|
|
config MDIO_BUS_MUX
|
|
tristate
|
|
depends on OF_MDIO
|
|
help
|
|
This module provides a driver framework for MDIO bus
|
|
multiplexers which connect one of several child MDIO busses
|
|
to a parent bus. Switching between child busses is done by
|
|
device specific drivers.
|
|
|
|
config MDIO_BUS_MUX_MESON_G12A
|
|
tristate "Amlogic G12a based MDIO bus multiplexer"
|
|
depends on ARCH_MESON || COMPILE_TEST
|
|
depends on OF_MDIO && HAS_IOMEM && COMMON_CLK
|
|
select MDIO_BUS_MUX
|
|
default m if ARCH_MESON
|
|
help
|
|
This module provides a driver for the MDIO multiplexer/glue of
|
|
the amlogic g12a SoC. The multiplexers connects either the external
|
|
or the internal MDIO bus to the parent bus.
|
|
|
|
config MDIO_BUS_MUX_MESON_GXL
|
|
tristate "Amlogic GXL based MDIO bus multiplexer"
|
|
depends on ARCH_MESON || COMPILE_TEST
|
|
depends on OF_MDIO && HAS_IOMEM && COMMON_CLK
|
|
select MDIO_BUS_MUX
|
|
default m if ARCH_MESON
|
|
help
|
|
This module provides a driver for the MDIO multiplexer/glue of
|
|
the amlogic GXL SoC. The multiplexer connects either the external
|
|
or the internal MDIO bus to the parent bus.
|
|
|
|
config MDIO_BUS_MUX_BCM6368
|
|
tristate "Broadcom BCM6368 MDIO bus multiplexers"
|
|
depends on OF && OF_MDIO && (BMIPS_GENERIC || COMPILE_TEST)
|
|
select MDIO_BUS_MUX
|
|
default BMIPS_GENERIC
|
|
help
|
|
This module provides a driver for MDIO bus multiplexers found in
|
|
BCM6368 based Broadcom SoCs. This multiplexer connects one of several
|
|
child MDIO bus to a parent bus. Buses could be internal as well as
|
|
external and selection logic lies inside the same multiplexer.
|
|
|
|
config MDIO_BUS_MUX_BCM_IPROC
|
|
tristate "Broadcom iProc based MDIO bus multiplexers"
|
|
depends on OF && OF_MDIO && (ARCH_BCM_IPROC || COMPILE_TEST)
|
|
select MDIO_BUS_MUX
|
|
default ARCH_BCM_IPROC
|
|
help
|
|
This module provides a driver for MDIO bus multiplexers found in
|
|
iProc based Broadcom SoCs. This multiplexer connects one of several
|
|
child MDIO bus to a parent bus. Buses could be internal as well as
|
|
external and selection logic lies inside the same multiplexer.
|
|
|
|
config MDIO_BUS_MUX_GPIO
|
|
tristate "GPIO controlled MDIO bus multiplexers"
|
|
depends on OF_GPIO && OF_MDIO
|
|
select MDIO_BUS_MUX
|
|
help
|
|
This module provides a driver for MDIO bus multiplexers that
|
|
are controlled via GPIO lines. The multiplexer connects one of
|
|
several child MDIO busses to a parent bus. Child bus
|
|
selection is under the control of GPIO lines.
|
|
|
|
config MDIO_BUS_MUX_MULTIPLEXER
|
|
tristate "MDIO bus multiplexer using kernel multiplexer subsystem"
|
|
depends on OF_MDIO
|
|
select MULTIPLEXER
|
|
select MDIO_BUS_MUX
|
|
help
|
|
This module provides a driver for MDIO bus multiplexer
|
|
that is controlled via the kernel multiplexer subsystem. The
|
|
bus multiplexer connects one of several child MDIO busses to
|
|
a parent bus. Child bus selection is under the control of
|
|
the kernel multiplexer subsystem.
|
|
|
|
config MDIO_BUS_MUX_MMIOREG
|
|
tristate "MMIO device-controlled MDIO bus multiplexers"
|
|
depends on OF_MDIO && HAS_IOMEM
|
|
select MDIO_BUS_MUX
|
|
help
|
|
This module provides a driver for MDIO bus multiplexers that
|
|
are controlled via a simple memory-mapped device, like an FPGA.
|
|
The multiplexer connects one of several child MDIO busses to a
|
|
parent bus. Child bus selection is under the control of one of
|
|
the FPGA's registers.
|
|
|
|
Currently, only 8/16/32 bits registers are supported.
|
|
|
|
|
|
endif
|
|
endif
|