From 38d8c863d48feb784380b946a6a82b8a3bebcd22 Mon Sep 17 00:00:00 2001 From: Piotr Mienkowski Date: Fri, 5 May 2017 22:22:33 +0200 Subject: [PATCH] arm: dts: Add DTS support for SAME70 SoC Signed-off-by: Piotr Mienkowski --- .../atmel_sam/same70/Kconfig.defconfig.series | 30 --------------- .../sam_e70_xplained_defconfig | 1 + dts/arm/Makefile | 1 + dts/arm/atmel/same70.dtsi | 30 +++++++++++++++ dts/arm/atmel/same70_mem.h | 37 +++++++++++++++++++ dts/arm/sam_e70_xplained.dts | 13 +++++++ dts/arm/sam_e70_xplained.fixup | 7 ++++ 7 files changed, 89 insertions(+), 30 deletions(-) create mode 100644 dts/arm/atmel/same70.dtsi create mode 100644 dts/arm/atmel/same70_mem.h create mode 100644 dts/arm/sam_e70_xplained.dts create mode 100644 dts/arm/sam_e70_xplained.fixup diff --git a/arch/arm/soc/atmel_sam/same70/Kconfig.defconfig.series b/arch/arm/soc/atmel_sam/same70/Kconfig.defconfig.series index ea37144a09c..305d5a180dc 100644 --- a/arch/arm/soc/atmel_sam/same70/Kconfig.defconfig.series +++ b/arch/arm/soc/atmel_sam/same70/Kconfig.defconfig.series @@ -22,10 +22,6 @@ config SOC_PART_NUMBER default same70j20 if SOC_PART_NUMBER_SAME70J20 default same70j19 if SOC_PART_NUMBER_SAME70J19 -config NUM_IRQ_PRIO_BITS - int - default 3 - # # SAM E70 family has in total 71 peripherals capable of generating interrupts # (not all Peripheral Identifiers are used). @@ -38,30 +34,4 @@ config SYS_CLOCK_HW_CYCLES_PER_SEC int default 300000000 -# -# SRAM size and base address -# -config SRAM_BASE_ADDRESS - hex - default 0x20400000 - -config SRAM_SIZE - int - default 256 if SOC_PART_NUMBER_SAME70Q19 || SOC_PART_NUMBER_SAME70N19 || SOC_PART_NUMBER_SAME70J19 - default 384 if SOC_PART_NUMBER_SAME70Q20 || SOC_PART_NUMBER_SAME70N20 || SOC_PART_NUMBER_SAME70J20 - default 384 if SOC_PART_NUMBER_SAME70Q21 || SOC_PART_NUMBER_SAME70N21 || SOC_PART_NUMBER_SAME70J21 - -# -# Flash size and base address -# -config FLASH_BASE_ADDRESS - hex - default 0x00400000 - -config FLASH_SIZE - int - default 512 if SOC_PART_NUMBER_SAME70Q19 || SOC_PART_NUMBER_SAME70N19 || SOC_PART_NUMBER_SAME70J19 - default 1024 if SOC_PART_NUMBER_SAME70Q20 || SOC_PART_NUMBER_SAME70N20 || SOC_PART_NUMBER_SAME70J20 - default 2048 if SOC_PART_NUMBER_SAME70Q21 || SOC_PART_NUMBER_SAME70N21 || SOC_PART_NUMBER_SAME70J21 - endif # SOC_SERIES_SAME70 diff --git a/boards/arm/sam_e70_xplained/sam_e70_xplained_defconfig b/boards/arm/sam_e70_xplained/sam_e70_xplained_defconfig index b4fd7721eb2..1c37634bef6 100644 --- a/boards/arm/sam_e70_xplained/sam_e70_xplained_defconfig +++ b/boards/arm/sam_e70_xplained/sam_e70_xplained_defconfig @@ -14,3 +14,4 @@ CONFIG_SERIAL=y CONFIG_USART_SAM=y CONFIG_USART_SAM_PORT_1=y CONFIG_BOARD_SAM_E70_XPLAINED=y +CONFIG_HAS_DTS=y diff --git a/dts/arm/Makefile b/dts/arm/Makefile index 392b1ee74f4..0fa572c881b 100644 --- a/dts/arm/Makefile +++ b/dts/arm/Makefile @@ -29,6 +29,7 @@ dtb-$(CONFIG_BOARD_NRF51_BLENANO) = nrf51_blenano.dts_compiled dtb-$(CONFIG_BOARD_NRF51_PCA10028) = nrf51_pca10028.dts_compiled dtb-$(CONFIG_BOARD_QUARK_SE_C1000_BLE) = quark_se_c1000_ble.dts_compiled dtb-$(CONFIG_BOARD_QEMU_CORTEX_M3) = qemu_cortex_m3.dts_compiled +dtb-$(CONFIG_BOARD_SAM_E70_XPLAINED) = sam_e70_xplained.dts_compiled always := $(dtb-y) endif diff --git a/dts/arm/atmel/same70.dtsi b/dts/arm/atmel/same70.dtsi new file mode 100644 index 00000000000..2d032b5edb4 --- /dev/null +++ b/dts/arm/atmel/same70.dtsi @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2017 Piotr Mienkowski + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +/ { + cpus { + cpu@0 { + compatible = "arm,cortex-m7"; + }; + }; + + flash0: flash { + compatible = "flash"; + reg = <0x00400000 DT_FLASH_SIZE>; + }; + + sram0: memory { + compatible = "sram"; + reg = <0x20400000 DT_SRAM_SIZE>; + }; +}; + +&nvic { + arm,num-irq-priority-bits = <3>; +}; diff --git a/dts/arm/atmel/same70_mem.h b/dts/arm/atmel/same70_mem.h new file mode 100644 index 00000000000..33cb68d5c13 --- /dev/null +++ b/dts/arm/atmel/same70_mem.h @@ -0,0 +1,37 @@ +#ifndef __DT_BINDING_SAME70_MEM_H +#define __DT_BINDING_SAME70_MEM_H + +#define __SIZE_K(x) (x * 1024) + +#if defined CONFIG_SOC_PART_NUMBER_SAME70J19 +#define DT_FLASH_SIZE __SIZE_K(512) +#define DT_SRAM_SIZE __SIZE_K(256) +#elif defined CONFIG_SOC_PART_NUMBER_SAME70J20 +#define DT_FLASH_SIZE __SIZE_K(1024) +#define DT_SRAM_SIZE __SIZE_K(384) +#elif defined CONFIG_SOC_PART_NUMBER_SAME70J21 +#define DT_FLASH_SIZE __SIZE_K(2048) +#define DT_SRAM_SIZE __SIZE_K(384) +#elif defined CONFIG_SOC_PART_NUMBER_SAME70N19 +#define DT_FLASH_SIZE __SIZE_K(512) +#define DT_SRAM_SIZE __SIZE_K(256) +#elif defined CONFIG_SOC_PART_NUMBER_SAME70N20 +#define DT_FLASH_SIZE __SIZE_K(1024) +#define DT_SRAM_SIZE __SIZE_K(384) +#elif defined CONFIG_SOC_PART_NUMBER_SAME70N21 +#define DT_FLASH_SIZE __SIZE_K(2048) +#define DT_SRAM_SIZE __SIZE_K(384) +#elif defined CONFIG_SOC_PART_NUMBER_SAME70Q19 +#define DT_FLASH_SIZE __SIZE_K(512) +#define DT_SRAM_SIZE __SIZE_K(256) +#elif defined CONFIG_SOC_PART_NUMBER_SAME70Q20 +#define DT_FLASH_SIZE __SIZE_K(1024) +#define DT_SRAM_SIZE __SIZE_K(384) +#elif defined CONFIG_SOC_PART_NUMBER_SAME70Q21 +#define DT_FLASH_SIZE __SIZE_K(2048) +#define DT_SRAM_SIZE __SIZE_K(384) +#else +#error "Flash and RAM sizes not defined for this chip" +#endif + +#endif /* __DT_BINDING_SAME70_MEM_H */ diff --git a/dts/arm/sam_e70_xplained.dts b/dts/arm/sam_e70_xplained.dts new file mode 100644 index 00000000000..8433c520909 --- /dev/null +++ b/dts/arm/sam_e70_xplained.dts @@ -0,0 +1,13 @@ +/dts-v1/; + +#include + +/ { + model = "Atmel SAM E70 Xplained board"; + compatible = "atmel,sam_e70_xplained", "atmel,same70q21", "atmel,same70"; + + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + }; +}; diff --git a/dts/arm/sam_e70_xplained.fixup b/dts/arm/sam_e70_xplained.fixup new file mode 100644 index 00000000000..5957fbd61df --- /dev/null +++ b/dts/arm/sam_e70_xplained.fixup @@ -0,0 +1,7 @@ +/* This file is a temporary workaround for mapping of the generated information + * to the current driver definitions. This will be removed when the drivers + * are modified to handle the generated information, or the mapping of + * generated data matches the driver definitions. + */ + +#define CONFIG_NUM_IRQ_PRIO_BITS ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS