# Ethernet PHY drivers configuration options

# Copyright (c) 2021 IP-Logix Inc.
# SPDX-License-Identifier: Apache-2.0

menuconfig ETH_PHY_DRIVER
	bool "Ethernet PHY drivers"
	default y if NET_L2_ETHERNET || ETH_DRIVER

if ETH_PHY_DRIVER

module = PHY
module-dep = LOG
module-str = Log level for Ethernet PHY driver
module-help = Sets log level for Ethernet PHY Device Drivers.
source "subsys/net/Kconfig.template.log_config.net"
source "drivers/ethernet/phy/Kconfig.tja1103"

config PHY_INIT_PRIORITY
	int "Ethernet PHY driver init priority"
	default 70
	help
	  Ethernet PHY device driver initialization priority.
	  Do not mess with it unless you know what you are doing.
	  Note that the priority needs to be lower than the net stack
	  so that it can start before the networking sub-system.

config PHY_GENERIC_MII
	bool "Generic MII PHY Driver"
	default y if DT_HAS_ETHERNET_PHY_ENABLED
	depends on MDIO
	help
	  This is a generic MII PHY interface that communicates with the
	  PHY using the MDIO bus.

config PHY_ADIN2111
	bool "ADIN2111 PHY driver"
	default y
	depends on DT_HAS_ADI_ADIN2111_PHY_ENABLED
	depends on ETH_ADIN2111
	depends on MDIO_ADIN2111
	help
	  Enable ADIN2111 PHY driver.

config PHY_MICROCHIP_KSZ8081
	bool "Microchip KSZ8081 Phy Driver"
	default y
	depends on DT_HAS_MICROCHIP_KSZ8081_ENABLED
	depends on MDIO
	depends on GPIO
	help
	  Enable Microchip KSZ8081 Ethernet Phy Driver

config PHY_AUTONEG_TIMEOUT_MS
	int "Auto-negotiation timeout value in milliseconds"
	default 4000
	help
	  Maximum duration of auto-negotiation sequence in milliseconds
	  before the process fails

config PHY_MONITOR_PERIOD
	int "Monitor task execution period"
	default 500
	help
	  Monitor task execution period in milliseconds. The monitor task is
	  periodically executed to detect and report any changes in the
	  PHY link status to the operating system.

endif # "Ethernet PHY Drivers"
