# SPDX-License-Identifier: GPL-2.0-only
#
# PHY Layer Configuration
#

config PHYLINK
	tristate
	depends on NETDEVICES
	select PHYLIB
	select SWPHY
	help
	  PHYlink models the link between the PHY and MAC, allowing fixed
	  configuration links, PHYs, and Serdes links with MAC level
	  autonegotiation modes.

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

if PHYLIB

config SWPHY
	bool

config LED_TRIGGER_PHY
	bool "Support LED triggers for tracking link state"
	depends on LEDS_TRIGGERS
	help
	  Adds support for a set of LED trigger events per-PHY.  Link
	  state change will trigger the events, for consumption by an
	  LED class driver.  There are triggers for each link speed currently
	  supported by the PHY and also a one common "link" trigger as a
	  logical-or of all the link speed ones.
	  All these triggers are named according to the following pattern:
	      <mii bus id>:<phy>:<speed>

	  Where speed is in the form:
		<Speed in megabits>Mbps OR <Speed in gigabits>Gbps OR link
		for any speed known to the PHY.

config OPEN_ALLIANCE_HELPERS
	bool

config PHYLIB_LEDS
	def_bool OF
	depends on LEDS_CLASS=y || LEDS_CLASS=PHYLIB
	help
	  When LED class support is enabled, phylib can automatically
	  probe LED setting from device tree.

config FIXED_PHY
	tristate "MDIO Bus/PHY emulation with fixed speed/link PHYs"
	select SWPHY
	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 RUST_PHYLIB_ABSTRACTIONS
        bool "Rust PHYLIB abstractions support"
        depends on RUST
        depends on PHYLIB=y
        help
          Adds support needed for PHY drivers written in Rust. It provides
          a wrapper around the C phylib core.

config SFP
	tristate "SFP cage support"
	depends on I2C && PHYLINK
	depends on HWMON || HWMON=n
	select MDIO_I2C

comment "MII PHY device drivers"

config AIR_EN8811H_PHY
	tristate "Airoha EN8811H 2.5 Gigabit PHY"
	help
	  Currently supports the Airoha EN8811H PHY.

config AMD_PHY
	tristate "AMD and Altima PHYs"
	help
	  Currently supports the AMD am79c874 and Altima AC101L.

config MESON_GXL_PHY
	tristate "Amlogic Meson GXL Internal PHY"
	depends on ARCH_MESON || COMPILE_TEST
	select SMSC_PHY
	help
	  Currently has a driver for the Amlogic Meson GXL Internal PHY

config ADIN_PHY
	tristate "Analog Devices Industrial Ethernet PHYs"
	help
	  Adds support for the Analog Devices Industrial Ethernet PHYs.
	  Currently supports the:
	  - ADIN1200 - Robust,Industrial, Low Power 10/100 Ethernet PHY
	  - ADIN1300 - Robust,Industrial, Low Latency 10/100/1000 Gigabit
	    Ethernet PHY

config ADIN1100_PHY
	tristate "Analog Devices Industrial Ethernet T1L PHYs"
	help
	  Adds support for the Analog Devices Industrial T1L Ethernet PHYs.
	  Currently supports the:
	  - ADIN1100 - Robust,Industrial, Low Power 10BASE-T1L Ethernet PHY

config AMCC_QT2025_PHY
	tristate "AMCC QT2025 PHY"
	depends on RUST_PHYLIB_ABSTRACTIONS
	depends on RUST_FW_LOADER_ABSTRACTIONS
	help
	  Adds support for the Applied Micro Circuits Corporation QT2025 PHY.

source "drivers/net/phy/aquantia/Kconfig"

config AX88796B_PHY
	tristate "Asix PHYs"
	help
	  Currently supports the Asix Electronics PHY found in the X-Surf 100
	  AX88796B package.

config AX88796B_RUST_PHY
	bool "Rust reference driver for Asix PHYs"
	depends on RUST_PHYLIB_ABSTRACTIONS && AX88796B_PHY
	help
	  Uses the Rust reference driver for Asix PHYs (ax88796b_rust.ko).
	  The features are equivalent. It supports the Asix Electronics PHY
	  found in the X-Surf 100 AX88796B package.

config BROADCOM_PHY
	tristate "Broadcom 54XX PHYs"
	select BCM_NET_PHYLIB
	select BCM_NET_PHYPTP if NETWORK_PHY_TIMESTAMPING
	depends on PTP_1588_CLOCK_OPTIONAL
	help
	  Currently supports the BCM5411, BCM5421, BCM5461, BCM54616S, BCM5464,
	  BCM5481, BCM54810 and BCM5482 PHYs.

config BCM54140_PHY
	tristate "Broadcom BCM54140 PHY"
	depends on HWMON || HWMON=n
	select BCM_NET_PHYLIB
	help
	  Support the Broadcom BCM54140 Quad SGMII/QSGMII PHY.

	  This driver also supports the hardware monitoring of this PHY and
	  exposes voltage and temperature sensors.

config BCM63XX_PHY
	tristate "Broadcom 63xx SOCs internal PHY"
	depends on BCM63XX || COMPILE_TEST
	select BCM_NET_PHYLIB
	help
	  Currently supports the 6348 and 6358 PHYs.

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

config BCM84881_PHY
	tristate "Broadcom BCM84881 PHY"
	help
	  Support the Broadcom BCM84881 PHY.

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

config BCM_CYGNUS_PHY
	tristate "Broadcom Cygnus/Omega SoC internal PHY"
	depends on ARCH_BCM_IPROC || COMPILE_TEST
	depends on MDIO_BCM_IPROC
	select BCM_NET_PHYLIB
	help
	  This PHY driver is for the 1G internal PHYs of the Broadcom
	  Cygnus and Omega Family SoC.

	  Currently supports internal PHY's used in the BCM11300,
	  BCM11320, BCM11350, BCM11360, BCM58300, BCM58302,
	  BCM58303 & BCM58305 Broadcom Cygnus SoCs.

config BCM_NET_PHYLIB
	tristate

config BCM_NET_PHYPTP
	tristate

config CICADA_PHY
	tristate "Cicada PHYs"
	help
	  Currently supports the cis8204

config CORTINA_PHY
	tristate "Cortina EDC CDR 10G Ethernet PHY"
	help
	  Currently supports the CS4340 phy.

config DAVICOM_PHY
	tristate "Davicom PHYs"
	help
	  Currently supports dm9161e and dm9131

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

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

config INTEL_XWAY_PHY
	tristate "Intel XWAY PHYs"
	help
	  Supports the Intel XWAY (former Lantiq) 11G and 22E PHYs.
	  These PHYs are marked as standalone chips under the names
	  PEF 7061, PEF 7071 and PEF 7072 or integrated into the Intel
	  SoCs xRX200, xRX300, xRX330, xRX350 and xRX550.

config LSI_ET1011C_PHY
	tristate "LSI ET1011C PHY"
	help
	  Supports the LSI ET1011C PHY.

config MARVELL_PHY
	tristate "Marvell Alaska PHYs"
	help
	  Currently has a driver for the 88E1XXX

config MARVELL_10G_PHY
	tristate "Marvell Alaska 10Gbit PHYs"
	help
	  Support for the Marvell Alaska MV88X3310 and compatible PHYs.

config MARVELL_88Q2XXX_PHY
	tristate "Marvell 88Q2XXX PHY"
	depends on HWMON || HWMON=n
	help
	  Support for the Marvell 88Q2XXX 100/1000BASE-T1 Automotive Ethernet
	  PHYs.

config MARVELL_88X2222_PHY
	tristate "Marvell 88X2222 PHY"
	help
	  Support for the Marvell 88X2222 Dual-port Multi-speed Ethernet
	  Transceiver.

config MAXLINEAR_GPHY
	tristate "Maxlinear Ethernet PHYs"
	select POLYNOMIAL if HWMON
	depends on HWMON || HWMON=n
	help
	  Support for the Maxlinear GPY115, GPY211, GPY212, GPY215,
	  GPY241, GPY245 PHYs.

config MEDIATEK_GE_PHY
	tristate "MediaTek Gigabit Ethernet PHYs"
	help
	  Supports the MediaTek Gigabit Ethernet PHYs.

config MEDIATEK_GE_SOC_PHY
	tristate "MediaTek SoC Ethernet PHYs"
	depends on (ARM64 && ARCH_MEDIATEK) || COMPILE_TEST
	depends on NVMEM_MTK_EFUSE
	help
	  Supports MediaTek SoC built-in Gigabit Ethernet PHYs.

	  Include support for built-in Ethernet PHYs which are present in
	  the MT7981 and MT7988 SoCs. These PHYs need calibration data
	  present in the SoCs efuse and will dynamically calibrate VCM
	  (common-mode voltage) during startup.

config MICREL_PHY
	tristate "Micrel PHYs"
	depends on PTP_1588_CLOCK_OPTIONAL
	help
	  Supports the KSZ9021, VSC8201, KS8001 PHYs.

config MICROCHIP_T1S_PHY
	tristate "Microchip 10BASE-T1S Ethernet PHYs"
	help
	  Currently supports the LAN8670/1/2 Rev.B1 and LAN8650/1 Rev.B0 Internal
	  PHYs.

config MICROCHIP_PHY
	tristate "Microchip PHYs"
	help
	  Supports the LAN88XX PHYs.

config MICROCHIP_T1_PHY
	tristate "Microchip T1 PHYs"
	help
	  Supports the LAN87XX PHYs.

config MICROSEMI_PHY
	tristate "Microsemi PHYs"
	depends on MACSEC || MACSEC=n
	depends on PTP_1588_CLOCK_OPTIONAL || !NETWORK_PHY_TIMESTAMPING
	select CRYPTO_LIB_AES if MACSEC
	help
	  Currently supports VSC8514, VSC8530, VSC8531, VSC8540 and VSC8541 PHYs

config MOTORCOMM_PHY
	tristate "Motorcomm PHYs"
	help
	  Enables support for Motorcomm network PHYs.
	  Currently supports YT85xx Gigabit Ethernet PHYs.

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

config NXP_CBTX_PHY
	tristate "NXP 100BASE-TX PHYs"
	help
	  Support the 100BASE-TX PHY integrated on the SJA1110 automotive
	  switch family.

config NXP_C45_TJA11XX_PHY
	tristate "NXP C45 TJA11XX PHYs"
	depends on PTP_1588_CLOCK_OPTIONAL
	depends on MACSEC || !MACSEC
	help
	  Enable support for NXP C45 TJA11XX PHYs.
	  Currently supports the TJA1103, TJA1104 and TJA1120 PHYs.

config NXP_TJA11XX_PHY
	tristate "NXP TJA11xx PHYs support"
	depends on HWMON
	help
	  Currently supports the NXP TJA1100 and TJA1101 PHY.

config NCN26000_PHY
	tristate "Onsemi 10BASE-T1S Ethernet PHY"
	help
	  Adds support for the onsemi 10BASE-T1S Ethernet PHY.
	  Currently supports the NCN26000 10BASE-T1S Industrial PHY
	  with MII interface.

source "drivers/net/phy/qcom/Kconfig"

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

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

config RENESAS_PHY
	tristate "Renesas PHYs"
	help
	  Supports the Renesas PHYs uPD60620 and uPD60620A.

config ROCKCHIP_PHY
	tristate "Rockchip Ethernet PHYs"
	help
	  Currently supports the integrated Ethernet PHY.

config SMSC_PHY
	tristate "SMSC PHYs"
	select CRC16
	help
	  Currently supports the LAN83C185, LAN8187 and LAN8700 PHYs

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

config TERANETICS_PHY
	tristate "Teranetics PHYs"
	help
	  Currently supports the Teranetics TN2020

config DP83822_PHY
	tristate "Texas Instruments DP83822/825/826 PHYs"
	help
	  Supports the DP83822, DP83825I, DP83825CM, DP83825CS, DP83825S,
	  DP83826C and DP83826NC PHYs.

config DP83TC811_PHY
	tristate "Texas Instruments DP83TC811 PHY"
	help
	  Supports the DP83TC811 PHY.

config DP83848_PHY
	tristate "Texas Instruments DP83848 PHY"
	help
	  Supports the DP83848 PHY.

config DP83867_PHY
	tristate "Texas Instruments DP83867 Gigabit PHY"
	help
	  Currently supports the DP83867 PHY.

config DP83869_PHY
	tristate "Texas Instruments DP83869 Gigabit PHY"
	help
	  Currently supports the DP83869 PHY.  This PHY supports copper and
	  fiber connections.

config DP83TD510_PHY
	tristate "Texas Instruments DP83TD510 Ethernet 10Base-T1L PHY"
	help
	  Support for the DP83TD510 Ethernet 10Base-T1L PHY. This PHY supports
	  a 10M single pair Ethernet connection for up to 1000 meter cable.

config DP83TG720_PHY
	tristate "Texas Instruments DP83TG720 Ethernet 1000Base-T1 PHY"
	select OPEN_ALLIANCE_HELPERS
	help
	  The DP83TG720S-Q1 is an automotive Ethernet physical layer
	  transceiver compliant with IEEE 802.3bp and Open Alliance
	  standards. It supports key functions necessary for
	  transmitting and receiving data over both unshielded and
	  shielded single twisted-pair cables. This device offers
	  flexible xMII interface options, including support for both
	  RGMII and SGMII MAC interfaces. It's suitable for applications
	  requiring high-speed data transmission in automotive
	  networking environments.

config VITESSE_PHY
	tristate "Vitesse PHYs"
	help
	  Currently supports the vsc8244

config XILINX_GMII2RGMII
	tristate "Xilinx GMII2RGMII converter driver"
	help
	  This driver support xilinx GMII to RGMII IP core it provides
	  the Reduced Gigabit Media Independent Interface(RGMII) between
	  Ethernet physical media devices and the Gigabit Ethernet controller.

endif # PHYLIB

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