# Kconfig - Atmel SAM3X MCU series configuration options
#
# Copyright (c) 2017 Justin Watson
# Copyright (c) 2016 Intel Corporation.
# Copyright (c) 2014-2015 Wind River Systems, Inc.
# SPDX-License-Identifier: Apache-2.0
#

if SOC_SERIES_SAM3X || SOC_ATMEL_SAM3X8E

config SOC_SERIES
	string
	default sam3x

config SOC_PART_NUMBER
	string
	default sam3x8e if SOC_PART_NUMBER_SAM3X8E || SOC_ATMEL_SAM3X8E

config NUM_IRQ_PRIO_BITS
	int
	default 3

#
# SAM3 family has total 45 peripherals capable of
# generating interrupts.
#
config NUM_IRQS
	int
	default 45

config SYS_CLOCK_HW_CYCLES_PER_SEC
	int
	default 84000000

#
# SRAM address depends on the processor.
#
# SAM3X8E has two SRAM banks:
#   64K @ 0x20000000
#   32K @ 0x20080000
# The first 64K is mirrored at 0x20070000
# to provide one continuous 96K block.
#
config SRAM_SIZE
	default 96 if SOC_PART_NUMBER_SAM3X8E || SOC_ATMEL_SAM3X8E

config SRAM_BASE_ADDRESS
	default 0x20000000 if !SOC_PART_NUMBER_SAM3X8E && !SOC_ATMEL_SAM3X8E
	default 0x20070000 if SOC_PART_NUMBER_SAM3X8E || SOC_ATMEL_SAM3X8E

#
# Atmel SAM3X family has flash starting @ 0x00080000.
#
config FLASH_SIZE
	default 512 if SOC_PART_NUMBER_SAM3X8E || SOC_ATMEL_SAM3X8E

config FLASH_BASE_ADDRESS
	default 0x00080000

if UART_ATMEL_SAM3

config UART_ATMEL_SAM3_BAUD_RATE
	default 115200

config UART_ATMEL_SAM3_CLK_FREQ
	default 84000000

endif # UART_ATMEL_SAM3

if GPIO

config GPIO_ATMEL_SAM3
	def_bool y

config GPIO_ATMEL_SAM3_PORTA
	default y

config GPIO_ATMEL_SAM3_PORTB
	default y

config GPIO_ATMEL_SAM3_PORTC
	default y

config GPIO_ATMEL_SAM3_PORTD
	default y

endif # GPIO

if I2C

config I2C_ATMEL_SAM3
	def_bool y

config I2C_0
	default y
config I2C_0_IRQ_PRI
	default 0

config I2C_1
	default y

config I2C_1_IRQ_PRI
	default 0

endif # I2C

endif # SOC_SERIES_SAM3X
