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

config PHYLINK
	tristate
	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"
	help
	  Ethernet controllers are usually attached to PHY
	  devices.  This option provides infrastructure for
	  managing PHY devices.

if PHYLIB

config SWPHY
	bool

config PHY_PACKAGE
	 tristate

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 AS21XXX_PHY
	tristate "Aeonsemi AS21xxx PHYs"
	help
	  Currently supports the Aeonsemi AS21xxx PHY.

	  These are C45 PHYs 10G that require all a generic firmware.

	  Supported PHYs AS21011JB1, AS21011PB1, AS21010JB1, AS21010PB1,
	  AS21511JB1, AS21511PB1, AS21510JB1, AS21510PB1, AS21210JB1,
	  AS21210PB1 that all register with the PHY ID 0x7500 0x7500
	  before the firmware is loaded.

config AIR_AN8801_PHY
	tristate "Airoha AN8801 Gigabit PHY"
	select AIR_NET_PHYLIB
	help
	  Currently supports the Airoha AN8801R PHY.

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

config AIR_NET_PHYLIB
	tristate
	help
	  Airoha Ethernet PHY common library

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 ADIN1140_PHY
	tristate "Analog Devices ADIN1140 10BASE-T1S PHY"
	help
	  Adds support for the Analog Devices, Inc. ADIN1140's internal
	  10BASE-T1S 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
	select PHY_PACKAGE
	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 DAP8211R_PHY
	tristate "DAPU Telecom DAP8211R(I) Gigabit Ethernet PHY"
	depends on OF
	help
	  Support for the DAPU Telecom DAP8211R(I) Gigabit Ethernet PHY.
	  This PHY is designed for enterprise and industrial networking
	  applications, supporting 10/100/1000 Mbps operation. Supports
	  RGMII interface with configurable TX/RX clock delays.

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 22F 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 MAXLINEAR_86110_PHY
	tristate "MaxLinear MXL86110 PHY support"
	help
	 Support for the MaxLinear MXL86110 Gigabit Ethernet
	 Physical Layer transceiver.
	 The MXL86110 is commonly used in networking equipment such as
	 routers, switches, and embedded systems, providing the
	 physical interface for 10/100/1000 Mbps Ethernet connections
	 over copper media.
	 If you are using a board with the MXL86110 PHY connected to your
	 Ethernet MAC, you should enable this option.

source "drivers/net/phy/mediatek/Kconfig"

config MICREL_PHY
	tristate "Micrel PHYs"
	depends on PTP_1588_CLOCK_OPTIONAL
	select PHY_PACKAGE
	help
	  Supports the KSZ8xxx, KSZ9xxx, and LAN88xx families of Micrel/Microchip PHYs.

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

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

config MICROCHIP_T1_PHY
	tristate "Microchip T1 PHYs"
	select MICROCHIP_PHY_RDS_PTP if NETWORK_PHY_TIMESTAMPING
	depends on PTP_1588_CLOCK_OPTIONAL
	help
	  Supports the LAN8XXX PHYs.

config MICROCHIP_PHY_RDS_PTP
	tristate
	help
	  Currently supports LAN887X T1 PHY

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
	select PHY_PACKAGE
	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, TJA1120 and TJA1121 PHYs.

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

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

source "drivers/net/phy/realtek/Kconfig"

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
