# Kconfig - Atmel SAM3 family processor configuration options

#
# Copyright (c) 2016 Intel Corporation.
# Copyright (c) 2014-2015 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

if SOC_ATMEL_SAM3

config SOC
	default atmel_sam3

config NUM_IRQ_PRIO_BITS
	int
	default 3

#
# SAM3X8E 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_ATMEL_SAM3X8E

config SRAM_BASE_ADDRESS
	default 0x20000000 if !SOC_ATMEL_SAM3X8E
	default 0x20070000 if SOC_ATMEL_SAM3X8E

#
# Atmel SAM3 family has flash starting @ 0x00080000.
#
# SAM3X8E has 512K of flash.
#
config FLASH_SIZE
	default 512 if 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_ATMEL_SAM3
