#
# PHY Layer Configuration
#

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

if PHYLIB

config MDIO_BOARDINFO
	bool
	default y

config SWCONFIG
	tristate "Switch configuration API"
	---help---
	  Switch configuration API using netlink. This allows
	  you to configure the VLAN features of certain switches.

config SWCONFIG_LEDS
	bool "Switch LED trigger support"
	depends on (SWCONFIG && LEDS_TRIGGERS)

comment "MII PHY device drivers"

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 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 ADM6996_PHY
	tristate "Driver for ADM6996 switches"
	select SWCONFIG
	---help---
	  Currently supports the ADM6996FC and ADM6996M switches.
	  Support for FC is very limited.

config MVSWITCH_PHY
	tristate "Driver for Marvell 88E6060 switches"
	select ETHERNET_PACKET_MANGLE

config IP17XX_PHY
	tristate "Driver for IC+ IP17xx switches"
	select SWCONFIG

config AR80XX_PHY
	tristate "Driver for ar8031/ar8033/ar8035 phy"

config AR8216_PHY
	tristate "Driver for Atheros AR8216 switches"
	select ETHERNET_PACKET_MANGLE
	select SWCONFIG

config RTL8306_PHY
	tristate "Driver for Realtek RTL8306S switches"
	select SWCONFIG

config MICREL_PHY
	tristate "Drivers for Micrel/Kendin PHYs"
	---help---
	  Currently has a driver for the KSZ8041

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 && GENERIC_GPIO
	---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 RTL8366_SMI
	tristate "Driver for the RTL8366 SMI interface"
	depends on GENERIC_GPIO
	---help---
	  This module implements the SMI interface protocol which is used
	  by some RTL8366 ethernet switch devices via the generic GPIO API.

if RTL8366_SMI

config RTL8366_SMI_DEBUG_FS
	bool "RTL8366 SMI interface debugfs support"
        depends on DEBUG_FS
        default n

config RTL8366S_PHY
	tristate "Driver for the Realtek RTL8366S switch"
	select SWCONFIG

config RTL8366RB_PHY
	tristate "Driver for the Realtek RTL8366RB switch"
	select SWCONFIG

config RTL8367_PHY
	tristate "Driver for the Realtek RTL8367R/M switches"
	select SWCONFIG

config RTL8367B_PHY
	tristate "Driver fot the Realtek RTL8367R-VB switch"
	select SWCONFIG

endif # RTL8366_SMI

endif # PHYLIB

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

config PSB6970_PHY
	tristate "Lantiq XWAY Tantos (PSB6970) Ethernet switch"
	select SWCONFIG
	select ETHERNET_PACKET_MANGLE
