summaryrefslogtreecommitdiff
path: root/zephyr/shim/chip/npcx/include/system_chip.h
diff options
context:
space:
mode:
authorYuval Peress <peress@chromium.org>2021-06-03 00:13:27 -0600
committerCommit Bot <commit-bot@chromium.org>2021-06-06 05:44:05 +0000
commit03831f38edf58dfe2bc50b37a73b696a00ec5fd6 (patch)
treed12da3b2f9c839e318bcd2026d9b82c5ae21b4e4 /zephyr/shim/chip/npcx/include/system_chip.h
parente3d0d94a559dff751a4b4dc28617170be4f05ac8 (diff)
downloadchrome-ec-03831f38edf58dfe2bc50b37a73b696a00ec5fd6.tar.gz
zephyr: npcx9: implement system_mpu_config
This function is taken from chip/npcx/ and is used for the flash workaround. BRANCH=none BUG=b:188605676 TEST=build brya Signed-off-by: Yuval Peress <peress@chromium.org> Change-Id: I70775523d180a602c08f7059f0fe003c05007edf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2936007
Diffstat (limited to 'zephyr/shim/chip/npcx/include/system_chip.h')
-rw-r--r--zephyr/shim/chip/npcx/include/system_chip.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/zephyr/shim/chip/npcx/include/system_chip.h b/zephyr/shim/chip/npcx/include/system_chip.h
index 5ed7f655a6..e2e9d5379d 100644
--- a/zephyr/shim/chip/npcx/include/system_chip.h
+++ b/zephyr/shim/chip/npcx/include/system_chip.h
@@ -6,6 +6,48 @@
#ifndef __CROS_EC_SYSTEM_CHIP_H_
#define __CROS_EC_SYSTEM_CHIP_H_
+/*****************************************************************************/
+/* Memory mapping */
+#define CONFIG_LPRAM_BASE 0x40001400 /* memory address of lpwr ram */
+#define CONFIG_LPRAM_SIZE 0x00000620 /* 1568B low power ram */
+
+/******************************************************************************/
+/* Optional M4 Registers */
+#define CPU_MPU_CTRL REG32(0xE000ED94)
+#define CPU_MPU_RNR REG32(0xE000ED98)
+#define CPU_MPU_RBAR REG32(0xE000ED9C)
+#define CPU_MPU_RASR REG32(0xE000EDA0)
+
+/*
+ * Region assignment. 7 as the highest, a higher index has a higher priority.
+ * For example, using 7 for .iram.text allows us to mark entire RAM XN except
+ * .iram.text, which is used for hibernation.
+ * Region assignment is currently wasteful and can be changed if more
+ * regions are needed in the future. For example, a second region may not
+ * be necessary for all types, and REGION_CODE_RAM / REGION_STORAGE can be
+ * made mutually exclusive.
+ */
+enum mpu_region {
+ REGION_DATA_RAM = 0, /* For internal data RAM */
+ REGION_DATA_RAM2 = 1, /* Second region for unaligned size */
+ REGION_CODE_RAM = 2, /* For internal code RAM */
+ REGION_CODE_RAM2 = 3, /* Second region for unaligned size */
+ REGION_STORAGE = 4, /* For mapped internal storage */
+ REGION_STORAGE2 = 5, /* Second region for unaligned size */
+ REGION_DATA_RAM_TEXT = 6, /* Exempt region of data RAM */
+ REGION_CHIP_RESERVED = 7, /* Reserved for use in chip/ */
+ /* only for chips with MPU supporting 16 regions */
+ REGION_UNCACHED_RAM = 8, /* For uncached data RAM */
+ REGION_UNCACHED_RAM2 = 9, /* Second region for unaligned size */
+ REGION_ROLLBACK = 10, /* For rollback */
+};
+
+/*
+ * Configure the specific memory addresses in the the MPU
+ * (Memory Protection Unit) for Nuvoton different chip series.
+ */
+void system_mpu_config(void);
+
/* The utilities and variables depend on npcx chip family */
#if defined(CONFIG_SOC_SERIES_NPCX5) || \
defined(CONFIG_PLATFORM_EC_WORKAROUND_FLASH_DOWNLOAD_API)