# Kconfig - Synopsys DesignWare Ethernet driver configuration options

#
# Copyright (c) 2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig ETH_DW
	bool
	prompt "Synopsys DesignWare Ethernet driver"
	depends on NET_L2_ETHERNET
	default n
	help
	  Enable Synopsys DesignWare Ethernet driver.

if ETH_DW
config ETH_DW_SHARED_IRQ
	bool
	default n

config ETH_DW_0
	bool "Synopsys DesignWare Ethernet port 0"
	default n
	help
	 Include port 0 driver

config ETH_DW_0_NAME
	string "Driver name"
	depends on ETH_DW_0
	default "ETH_0"

choice
	prompt "Port 0 Interrupts via"
	default ETH_DW_0_IRQ_SHARED
	depends on ETH_DW_0

config ETH_DW_0_IRQ_DIRECT
	bool "Direct Hardware Interrupt"
	help
	  When interrupts fire, the driver's ISR function is being called directly.

config ETH_DW_0_IRQ_SHARED
	bool "Shared IRQ"
	depends on SHARED_IRQ
	select ETH_DW_SHARED_IRQ
	help
	  When interrupts fire, the shared IRQ driver is notified. Then the shared IRQ
	  driver dispatches the interrupt to other drivers.

endchoice

config ETH_DW_0_IRQ_SHARED_NAME
	string "Device name for Shared IRQ"
	depends on ETH_DW_0 && ETH_DW_0_IRQ_SHARED
	help
	  Specify the device name for the shared IRQ driver. It is used to register
	  this driver with the shared IRQ driver, so interrupts can be dispatched
	  correctly.

config ETH_DW_0_IRQ_PRI
	int "Controller interrupt priority"
	depends on ETH_DW_0 && ETH_DW_0_IRQ_DIRECT
	default 0
	help
	IRQ priority

endif # ETH_DW
