summaryrefslogtreecommitdiff
path: root/chip/npcx/system.c
diff options
context:
space:
mode:
Diffstat (limited to 'chip/npcx/system.c')
-rw-r--r--chip/npcx/system.c33
1 files changed, 12 insertions, 21 deletions
diff --git a/chip/npcx/system.c b/chip/npcx/system.c
index a103292e0e..e1ae1c134a 100644
--- a/chip/npcx/system.c
+++ b/chip/npcx/system.c
@@ -19,11 +19,6 @@
#include "hwtimer_chip.h"
#include "system_chip.h"
-#ifdef CONFIG_CODERAM_ARCH
-/* base address for jumping */
-uint32_t base_addr;
-#endif
-
/* Flags for BBRM_DATA_INDEX_WAKE */
#define HIBERNATE_WAKE_MTC (1 << 0) /* MTC alarm */
#define HIBERNATE_WAKE_PIN (1 << 1) /* Wake pin */
@@ -829,16 +824,25 @@ void system_lpc_host_register_init(void){
system_sib_write_reg(SIO_OFFSET, 0x30, 0x01);
}
#ifdef CONFIG_CODERAM_ARCH
-uint32_t system_get_lfw_address(uint32_t flash_addr)
+uint32_t system_get_lfw_address(void)
{
/* Little FW located on top of flash - 4K */
uint32_t jump_addr = (CONFIG_FLASH_BASE + CONFIG_SPI_FLASH_SIZE
- CONFIG_LFW_OFFSET + 1);
- /* restore base address for jumping*/
- base_addr = flash_addr;
+
return jump_addr;
}
+void system_set_image_copy(enum system_image_copy_t copy)
+{
+ /* Jump to RO region -- set flag */
+ if (copy == SYSTEM_IMAGE_RO)
+ SET_BIT(NPCX_FWCTRL, NPCX_FWCTRL_RO_REGION);
+ else /* Jump to RW region -- clear flag */
+ CLEAR_BIT(NPCX_FWCTRL, NPCX_FWCTRL_RO_REGION);
+
+}
+
enum system_image_copy_t system_get_shrspi_image_copy(void)
{
/* RO region FW */
@@ -847,17 +851,4 @@ enum system_image_copy_t system_get_shrspi_image_copy(void)
else/* RW region FW */
return SYSTEM_IMAGE_RW;
}
-
-/**
- * Set flag for jumping across a sysjump.
- */
-static void system_sysjump(void)
-{
- /* Jump to RO region -- set flag */
- if (base_addr == CONFIG_FLASH_BASE + CONFIG_RO_MEM_OFF)
- SET_BIT(NPCX_FWCTRL, NPCX_FWCTRL_RO_REGION);
- else /* Jump to RW region -- clear flag */
- CLEAR_BIT(NPCX_FWCTRL, NPCX_FWCTRL_RO_REGION);
-}
-DECLARE_HOOK(HOOK_SYSJUMP, system_sysjump, HOOK_PRIO_DEFAULT);
#endif