#
# 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
	---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
	select REGULATOR
	select REGULATOR_FIXED_VOLTAGE
	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.

endif # PHYLIB

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