arch: arm: soc: ti_simplelink: Add MSP432P401R SoC
This patch adds SoC support for TI SimpleLink family MSP432P401R.
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
diff --git a/CODEOWNERS b/CODEOWNERS
index 25ee6e1..87711a4 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -15,6 +15,7 @@
arch/arm/soc/st_stm32/* @erwango
arch/arm/soc/st_stm32/stm32f4/* @rsalveti @idlethread
arch/arm/soc/ti_simplelink/cc32xx @GAnthony
+arch/arm/soc/ti_simplelink/msp432p4xx @Mani-Sadhasivam
arch/nios2/* @andrewboie
arch/nios2/core/* @andrewboie
arch/riscv32 @fractalclone
diff --git a/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.defconfig.msp432p401r b/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.defconfig.msp432p401r
new file mode 100644
index 0000000..be0c223
--- /dev/null
+++ b/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.defconfig.msp432p401r
@@ -0,0 +1,26 @@
+# SPDX-License-Identifier: Apache-2.0
+#
+# Copyright (c) 2017, Linaro Ltd
+#
+# Kconfig.defconfig.msp432p401r- TI SimpleLink MSP432P401R SoC
+#
+
+if SOC_MSP432P401R
+
+config SOC
+ string
+ default msp432p401r
+
+config SYS_CLOCK_HW_CYCLES_PER_SEC
+ int
+ default 48000000
+
+config SYS_CLOCK_TICKS_PER_SEC
+ int
+ default 1000
+
+config NUM_IRQS
+ int
+ default 64
+
+endif # SOC_MSP432P401R
diff --git a/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.defconfig.series b/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.defconfig.series
new file mode 100644
index 0000000..d893dfd
--- /dev/null
+++ b/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.defconfig.series
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: Apache-2.0
+#
+# Copyright (c) 2017, Linaro Ltd
+#
+# Kconfig.defconfig.series - TI SimpleLink MSP432P4XX
+#
+
+if SOC_SERIES_MSP432P4XX
+
+source "arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.defconfig.msp432p4*"
+
+config SOC_SERIES
+ default msp432p4xx
+
+endif # SOC_SERIES_MSP432P4XX
diff --git a/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.series b/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.series
new file mode 100644
index 0000000..b231bc1
--- /dev/null
+++ b/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.series
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: Apache-2.0
+#
+# Copyright (c) 2017, Linaro Ltd
+#
+# Kconfig.series - TI SimpleLink MSP432P4XX
+#
+
+config SOC_SERIES_MSP432P4XX
+ bool "TI SimpleLink Family MSP432P4XX"
+ select CPU_CORTEX_M
+ select CPU_CORTEX_M4
+ select SOC_FAMILY_TISIMPLELINK
+ select CPU_HAS_FPU
+ select CPU_HAS_SYSTICK
+ help
+ Enable support for TI SimpleLink MSP432P4XX.
diff --git a/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.soc b/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.soc
new file mode 100644
index 0000000..7bcd038
--- /dev/null
+++ b/arch/arm/soc/ti_simplelink/msp432p4xx/Kconfig.soc
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: Apache-2.0
+#
+# Copyright (c) 2017, Linaro Ltd
+#
+# Kconfig.soc - Texas Instruments MSP432P401R
+#
+
+choice
+prompt "TI SimpleLink MCU Selection"
+depends on SOC_SERIES_MSP432P4XX
+
+config SOC_MSP432P401R
+ bool "MSP432P401R"
+ select HAS_MSP432P4XXSDK
+endchoice
diff --git a/arch/arm/soc/ti_simplelink/msp432p4xx/Makefile b/arch/arm/soc/ti_simplelink/msp432p4xx/Makefile
new file mode 100644
index 0000000..c0b387c
--- /dev/null
+++ b/arch/arm/soc/ti_simplelink/msp432p4xx/Makefile
@@ -0,0 +1,5 @@
+obj-y += soc.o
+
+ifdef CONFIG_SOC_MSP432P401R
+soc-cflags += -D__MSP432P401R__
+endif
diff --git a/arch/arm/soc/ti_simplelink/msp432p4xx/linker.ld b/arch/arm/soc/ti_simplelink/msp432p4xx/linker.ld
new file mode 100644
index 0000000..c4f825a
--- /dev/null
+++ b/arch/arm/soc/ti_simplelink/msp432p4xx/linker.ld
@@ -0,0 +1,3 @@
+/* linker.ld - Linker command/script file */
+
+#include <arch/arm/cortex_m/scripts/linker.ld>
diff --git a/arch/arm/soc/ti_simplelink/msp432p4xx/soc.c b/arch/arm/soc/ti_simplelink/msp432p4xx/soc.c
new file mode 100644
index 0000000..1851578
--- /dev/null
+++ b/arch/arm/soc/ti_simplelink/msp432p4xx/soc.c
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2017, Linaro Ltd
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include <kernel.h>
+#include <device.h>
+#include <init.h>
+#include <soc.h>
+
+static int ti_msp432p4xx_init(struct device *arg)
+{
+ ARG_UNUSED(arg);
+
+ SystemInit();
+
+ return 0;
+}
+
+SYS_INIT(ti_msp432p4xx_init, PRE_KERNEL_1, 0);
diff --git a/arch/arm/soc/ti_simplelink/msp432p4xx/soc.h b/arch/arm/soc/ti_simplelink/msp432p4xx/soc.h
new file mode 100644
index 0000000..972fda2
--- /dev/null
+++ b/arch/arm/soc/ti_simplelink/msp432p4xx/soc.h
@@ -0,0 +1,6 @@
+/*
+ * Copyright (c) 2017, Linaro Ltd
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+#include <ti/devices/msp432p4xx/inc/msp.h>
diff --git a/dts/arm/ti/mem.h b/dts/arm/ti/mem.h
index 30f6829..a347dc3 100644
--- a/dts/arm/ti/mem.h
+++ b/dts/arm/ti/mem.h
@@ -14,6 +14,10 @@
#define DT_FLASH_SIZE __SIZE_K(1024)
#define DT_SRAM_SIZE __SIZE_K(256)
#define DT_SRAM_START 0x20000000
+#elif defined(CONFIG_SOC_MSP432P401R)
+#define DT_FLASH_SIZE __SIZE_K(256)
+#define DT_SRAM_SIZE __SIZE_K(64)
+#define DT_SRAM_START 0x20000000
#else
#error "Flash and RAM sizes not defined for this chip"
#endif
diff --git a/dts/arm/ti/msp432p4xx.dtsi b/dts/arm/ti/msp432p4xx.dtsi
new file mode 100644
index 0000000..10146fd
--- /dev/null
+++ b/dts/arm/ti/msp432p4xx.dtsi
@@ -0,0 +1,34 @@
+#include <arm/armv7-m.dtsi>
+#include <ti/mem.h>
+
+/ {
+ cpus {
+ cpu@0 {
+ compatible = "arm,cortex-m4f";
+ };
+ };
+
+ sram0: memory {
+ compatible = "sram";
+ reg = <DT_SRAM_START DT_SRAM_SIZE>;
+ };
+
+ flash0: serial-flash {
+ compatible = "serial-flash";
+ reg = <0x0 DT_FLASH_SIZE>;
+ };
+
+ soc {
+ uart0: uart@40001000 {
+ compatible = "ti,msp432p4xx-uart";
+ reg = <0x40001000 0x400>;
+ interrupts = <32 0>;
+ status = "disabled";
+ label = "UART_0";
+ };
+ };
+};
+
+&nvic {
+ arm,num-irq-priority-bits = <3>;
+};