# Kconfig - Atmel SMART SAM E70 Xplained Board configuration
#
# Copyright (c) 2016 Piotr Mienkowski
# SPDX-License-Identifier: Apache-2.0
#

if BOARD_SAM_E70_XPLAINED

config BOARD
	string
	default "sam_e70_xplained"

if I2S

config I2S_SAM_SSC_0_DMA_RX_CHANNEL
	default 22

config I2S_SAM_SSC_0_DMA_TX_CHANNEL
	default 23
endif # I2S

if ETH_SAM_GMAC

# Read MAC address from AT24MAC402 EEPROM

choice ETH_SAM_GMAC_MAC_SELECT
	default ETH_SAM_GMAC_MAC_I2C_EEPROM
endchoice

config ETH_SAM_GMAC_MAC_I2C_SLAVE_ADDRESS
	hex
	default 0x5F

config ETH_SAM_GMAC_MAC_I2C_INT_ADDRESS
	hex
	default 0x9A

config ETH_SAM_GMAC_MAC_I2C_INT_ADDRESS_SIZE
	int
	default 1

config ETH_SAM_GMAC_MAC_I2C_DEV_NAME
	string
	default "I2C_0"

config ETH_SAM_GMAC_MAC_I2C_EEPROM
	bool
	select I2C

endif # ETH_SAM_GMAC

if I2C

config I2C_0
	default y

endif # I2C

if NETWORKING

config NET_L2_ETHERNET
	default y

config ETH_SAM_GMAC
	default y if NET_L2_ETHERNET

endif # NETWORKING

if SPI

if SPI_SAM_PORT_0

config SPI_SAME70_PORT_0_PIN_CS3
	def_bool y

endif # SPI_SAM_PORT_0

endif # SPI

endif # BOARD_SAM_E70_XPLAINED
