#
# PHY Layer Configuration
#

menuconfig PHYLIB
	tristate "PHY Device support and infrastructure"
	depends on NETDEVICES
	help
	  Ethernet controllers are usually attached to PHY
	  devices.  This option provides infrastructure for
	  managing PHY devices.

if PHYLIB

comment "MII PHY device drivers"

config AT803X_PHY
	tristate "Drivers for Atheros AT803X PHYs"
	---help---
	  Currently supports the AT8030 and AT8035 model

config AMD_PHY
	tristate "Drivers for the AMD PHYs"
	---help---
	  Currently supports the am79c874

config AMD_XGBE_PHY
	tristate "Driver for the AMD 10GbE (amd-xgbe) PHYs"
	depends on OF && HAS_IOMEM
	---help---
	  Currently supports the AMD 10GbE PHY

config MARVELL_PHY
	tristate "Drivers for Marvell PHYs"
	---help---
	  Currently has a driver for the 88E1011S
	
config DAVICOM_PHY
	tristate "Drivers for Davicom PHYs"
	---help---
	  Currently supports dm9161e and dm9131

config QSEMI_PHY
	tristate "Drivers for Quality Semiconductor PHYs"
	---help---
	  Currently supports the qs6612

config LXT_PHY
	tristate "Drivers for the Intel LXT PHYs"
	---help---
	  Currently supports the lxt970, lxt971

config CICADA_PHY
	tristate "Drivers for the Cicada PHYs"
	---help---
	  Currently supports the cis8204

config VITESSE_PHY
        tristate "Drivers for the Vitesse PHYs"
        ---help---
          Currently supports the vsc8244

config SMSC_PHY
	tristate "Drivers for SMSC PHYs"
	---help---
	  Currently supports the LAN83C185, LAN8187 and LAN8700 PHYs

config BROADCOM_PHY
	tristate "Drivers for Broadcom PHYs"
	---help---
	  Currently supports the BCM5411, BCM5421, BCM5461, BCM5464, BCM5481
	  and BCM5482 PHYs.

config BCM63XX_PHY
	tristate "Drivers for Broadcom 63xx SOCs internal PHY"
	depends on BCM63XX
	---help---
	  Currently supports the 6348 and 6358 PHYs.

config BCM7XXX_PHY
	tristate "Drivers for Broadcom 7xxx SOCs internal PHYs"
	---help---
	  Currently supports the BCM7366, BCM7439, BCM7445, and
	  40nm and 65nm generation of BCM7xxx Set Top Box SoCs.

config BCM87XX_PHY
	tristate "Driver for Broadcom BCM8706 and BCM8727 PHYs"
	help
	  Currently supports the BCM8706 and BCM8727 10G Ethernet PHYs.

config ICPLUS_PHY
	tristate "Drivers for ICPlus PHYs"
	---help---
	  Currently supports the IP175C and IP1001 PHYs.

config REALTEK_PHY
	tristate "Drivers for Realtek PHYs"
	---help---
	  Supports the Realtek 821x PHY.

config NATIONAL_PHY
	tristate "Drivers for National Semiconductor PHYs"
	---help---
	  Currently supports the DP83865 PHY.

config STE10XP
	tristate "Driver for STMicroelectronics STe10Xp PHYs"
	---help---
	  This is the driver for the STe100p and STe101p PHYs.

config LSI_ET1011C_PHY
	tristate "Driver for LSI ET1011C PHY"
	---help---
	  Supports the LSI ET1011C PHY.

config MICREL_PHY
	tristate "Driver for Micrel PHYs"
	---help---
	  Supports the KSZ9021, VSC8201, KS8001 PHYs.

config FIXED_PHY
	bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs"
	depends on PHYLIB=y
	---help---
	  Adds the platform "fixed" MDIO Bus to cover the boards that use
	  PHYs that are not connected to the real MDIO bus.

	  Currently tested with mpc866ads and mpc8349e-mitx.

config MDIO_BITBANG
	tristate "Support for 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_GPIO
	tristate "Support for GPIO lib-based bitbanged MDIO buses"
	depends on MDIO_BITBANG && GPIOLIB
	---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_OCTEON
	tristate "Support for MDIO buses on Octeon SOCs"
	depends on CAVIUM_OCTEON_SOC
	default y
	help

	  This module provides a driver for the Octeon MDIO busses.
	  It is required by the Octeon Ethernet device drivers.

	  If in doubt, say Y.

config MDIO_SUN4I
	tristate "Allwinner sun4i MDIO interface support"
	depends on ARCH_SUNXI
	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_MOXART
        tristate "MOXA ART MDIO interface support"
        depends on ARCH_MOXART
        help
          This driver supports the MDIO interface found in the network
          interface units of the MOXA ART SoC

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_GPIO
	tristate "Support for 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_MMIOREG
	tristate "Support for MMIO device-controlled MDIO bus multiplexers"
	depends on OF_MDIO
	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-bit registers are supported.

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.

endif # PHYLIB

config MICREL_KS8995MA
	tristate "Micrel KS8995MA 5-ports 10/100 managed Ethernet switch"
	depends on SPI
