#
# 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 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 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  CPU_CAVIUM_OCTEON
	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_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
