# Copyright (c) 2023 DENX Software Engineering GmbH
# SPDX-License-Identifier: Apache-2.0

menuconfig ETH_LAN865X
	bool "LAN865X 10BASE-T1S Controller"
	default y
	depends on DT_HAS_MICROCHIP_LAN865X_ENABLED
	select SPI
	select NET_L2_ETHERNET_MGMT
	help
	  The LAN865X is a low power, 10BASE-T1S transceiver compliant with
	  the IEEE® 802.3cg-2019™ Ethernet standard for long reach, 10
	  Mbps single pair Ethernet (SPE).

	  Featuring an integrated media access control (MAC) and a PHY,
	  the LAN865X enables direct connectivity with a variety of controllers
	  via a serial peripheral inter-face (SPI).

if ETH_LAN865X

config ETH_LAN865X_INIT_PRIORITY
	int "LAN865X driver init priority"
	default 72
	help
	  LAN865X device driver initialization priority.
	  Must be initialized after SPI.


config ETH_LAN865X_IRQ_THREAD_STACK_SIZE
	int "Stack size for a thread that processes IRQ"
	default 512
	help
	  Size of the stack used for internal thread which is ran to
	  process raised INT IRQ.

config ETH_LAN865X_IRQ_THREAD_PRIO
	int "Priority for internal incoming packet handler"
	default 2
	help
	  Priority level for internal thread which is ran for LAN
	  INT IRQ processing.

config ETH_LAN865X_TIMEOUT
	int "IP buffer timeout"
	default 100
	help
	  Given timeout in milliseconds. Maximum amount of time
	  that the driver will wait from the IP stack to get
	  a memory buffer.

endif # ETH_LAN865X
