# Kconfig - Atmel SAM Ethernet (GMAC) driver configuration options
#
# Copyright (c) 2016 Piotr Mienkowski
# SPDX-License-Identifier: Apache-2.0
#

menuconfig ETH_SAM_GMAC
	bool
	prompt "Atmel SAM Ethernet driver"
	depends on SOC_FAMILY_SAM
	default n
	help
	  Enable Atmel SAM MCU Family Ethernet driver.

if ETH_SAM_GMAC

config ETH_SAM_GMAC_NAME
	string "Device name"
	default "ETH_0"
	help
	  Device name allows user to obtain a handle to the device object
	  required by all driver API functions. Device name has to be unique.

config ETH_SAM_GMAC_BUF_RX_COUNT
	int "Network RX buffers preallocated by the SAM ETH driver"
	default 18
	help
	  Number of network buffers that will be permanently allocated by the
	  Ethernet driver. These buffers are used in receive path. They are
	  preallocated by the driver and made available to the GMAC module to be
	  filled in with incoming data. Their number has to be large enough to fit
	  at least one complete Ethernet frame. SAM ETH driver will always allocate
	  that amount of buffers for itself thus reducing the NET_BUF_RX_COUNT
	  which is a total amount of RX data buffers used by the whole networking
	  stack. One has to ensure that NET_PKT_RX_COUNT is large enough to
	  fit at least two Ethernet frames: one being received by the GMAC module
	  and the other being processed by the higher layer networking stack.

config ETH_SAM_GMAC_IRQ_PRI
	int "Interrupt priority"
	default 0
	help
	  IRQ priority of Ethernet device

choice ETH_SAM_GMAC_MAC_SELECT
	prompt "MAC address"
	help
	  Choose how to configure MAC address.

config ETH_SAM_GMAC_MAC_MANUAL
	bool "Manual"
	help
	  Assign an arbitrary MAC address.

config ETH_SAM_GMAC_MAC_I2C_EEPROM
	bool "Read from an I2C EEPROM"
	help
	  Read MAC address from an I2C EEPROM.

endchoice

if ETH_SAM_GMAC_MAC_MANUAL

config ETH_SAM_GMAC_MAC0
	hex "MAC Address Byte 0"
	default 0
	range 0 0xff

config ETH_SAM_GMAC_MAC1
	hex "MAC Address Byte 1"
	default 0
	range 0 0xff

config ETH_SAM_GMAC_MAC2
	hex "MAC Address Byte 2"
	default 0
	range 0 0xff

config ETH_SAM_GMAC_MAC3
	hex "MAC Address Byte 3"
	default 0
	range 0 0xff

config ETH_SAM_GMAC_MAC4
	hex "MAC Address Byte 4"
	default 0
	range 0 0xff

config ETH_SAM_GMAC_MAC5
	hex "MAC Address Byte 5"
	default 0
	range 0 0xff

endif # ETH_SAM_GMAC_MAC_MANUAL

if ETH_SAM_GMAC_MAC_I2C_EEPROM

config ETH_SAM_GMAC_MAC_I2C_SLAVE_ADDRESS
	hex "I2C 7-bit EEPROM chip address"
	range 0 0xff
	help
	  I2C 7-bit address of the EEPROM chip.

config ETH_SAM_GMAC_MAC_I2C_INT_ADDRESS
	hex "I2C EEPROM internal address"
	range 0 0xffffffff
	help
	  Internal address of the EEPROM chip where the MAC address is stored.
	  Chips with 1 to 4 byte internal address size are supported. Address
	  size has to be configured in a separate Kconfig option.

config ETH_SAM_GMAC_MAC_I2C_INT_ADDRESS_SIZE
	int "I2C EEPROM internal address size"
	default 1
	range 1 4
	help
	  Size (in bytes) of the internal EEPROM address.

config ETH_SAM_GMAC_MAC_I2C_DEV_NAME
	string "I2C bus driver device name"
	help
	  Device name, e.g. I2C_0, of an I2C bus driver device. It is required to
	  obtain handle to the I2C device object.

endif # ETH_SAM_GMAC_MAC_I2C_EEPROM

choice
	prompt "MII/RMII Interface to the Physical Layer"

	config ETH_SAM_GMAC_RMII
		bool "RMII"

	config ETH_SAM_GMAC_MII
		bool "MII"
endchoice

config ETH_SAM_GMAC_PHY_ADDR
	int "GMAC PHY Address"
	default 0
	help
	  GMAC PHY Address as used by IEEE 802.3, Section 2 MII compatible PHY
	  transceivers. If you have a single PHY on board it is safe to leave it
	  at 0 which is the broadcast address.

endif # ETH_SAM_GMAC
