aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAditya Angadi <aditya.angadi@arm.com>2020-09-29 13:33:46 +0530
committerThomas Abraham <thomas.abraham@arm.com>2020-11-28 01:48:28 +0530
commit7bb1c9fd70b5c2f23a62a1cb288efcfffccb9beb (patch)
tree92a5934ade0f414e80d6c316d10a00ce5aaa0789
parent9ead250d0cbfc546d9c79a52fc8a229826c3dcb4 (diff)
product/rddanielxlr: migrate to isys_rom
Migrate from using mscp_rom module to isys_rom module as the boot ROM for both SCP and MCP controllers. As there is no support yet for MCP RAM firmware, the config data for the bootloader module is set to NULL. The isys_rom module ensures that the MCP processor is held in a idle state. Change-Id: Icfe6f6a0d01c49f63d432d188e9b5c98a492fd47 Signed-off-by: Aditya Angadi <aditya.angadi@arm.com>
-rw-r--r--product/rddanielxlr/mcp_romfw/config_bootloader.c11
-rw-r--r--product/rddanielxlr/mcp_romfw/config_rddanielxlr_rom.c19
-rw-r--r--product/rddanielxlr/mcp_romfw/firmware.mk5
-rw-r--r--product/rddanielxlr/module/mscp_rom/include/mod_mscp_rom.h45
-rw-r--r--product/rddanielxlr/module/mscp_rom/src/Makefile11
-rw-r--r--product/rddanielxlr/module/mscp_rom/src/mod_mscp_rom.c105
-rw-r--r--product/rddanielxlr/scp_romfw/config_bootloader.c24
-rw-r--r--product/rddanielxlr/scp_romfw/config_scp_rom.c21
-rw-r--r--product/rddanielxlr/scp_romfw/firmware.mk5
9 files changed, 41 insertions, 205 deletions
diff --git a/product/rddanielxlr/mcp_romfw/config_bootloader.c b/product/rddanielxlr/mcp_romfw/config_bootloader.c
new file mode 100644
index 00000000..903ee767
--- /dev/null
+++ b/product/rddanielxlr/mcp_romfw/config_bootloader.c
@@ -0,0 +1,11 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <fwk_module.h>
+
+struct fwk_module_config config_bootloader = {
+};
diff --git a/product/rddanielxlr/mcp_romfw/config_rddanielxlr_rom.c b/product/rddanielxlr/mcp_romfw/config_rddanielxlr_rom.c
deleted file mode 100644
index a8af750a..00000000
--- a/product/rddanielxlr/mcp_romfw/config_rddanielxlr_rom.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Arm SCP/MCP Software
- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include "mcp_software_mmap.h"
-
-#include <mod_mscp_rom.h>
-
-#include <fwk_module.h>
-
-const struct fwk_module_config config_mscp_rom = {
- .data = &((struct mscp_rom_config) {
- .ramfw_ram_base = MCP_RAM0_BASE,
- .ramfw_flash_size = 0,
- })
-};
diff --git a/product/rddanielxlr/mcp_romfw/firmware.mk b/product/rddanielxlr/mcp_romfw/firmware.mk
index 7b9f96e3..8c1c4551 100644
--- a/product/rddanielxlr/mcp_romfw/firmware.mk
+++ b/product/rddanielxlr/mcp_romfw/firmware.mk
@@ -16,11 +16,12 @@ BS_FIRMWARE_MODULE_HEADERS_ONLY := \
BS_FIRMWARE_MODULES := \
pl011 \
clock \
- mscp_rom
+ bootloader \
+ isys_rom
BS_FIRMWARE_SOURCES := \
config_pl011.c \
config_clock.c \
- config_rddanielxlr_rom.c
+ config_bootloader.c
include $(BS_DIR)/firmware.mk
diff --git a/product/rddanielxlr/module/mscp_rom/include/mod_mscp_rom.h b/product/rddanielxlr/module/mscp_rom/include/mod_mscp_rom.h
deleted file mode 100644
index 1cf3be61..00000000
--- a/product/rddanielxlr/module/mscp_rom/include/mod_mscp_rom.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Arm SCP/MCP Software
- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef MOD_MSCP_ROM_H
-#define MOD_MSCP_ROM_H
-
-#include <stdint.h>
-
-/*!
- * \addtogroup GroupSCPModule MSCP Product Modules
- * \{
- */
-
-/*!
- * \defgroup GroupSCP ROM Support
- * \{
- */
-
-/*!
- * \brief Module configuration data.
- */
-struct mscp_rom_config {
- /*! Base address in RAM at which RAM firmware image has to be loaded */
- const uintptr_t ramfw_ram_base;
-
- /*! Base address of RAM firmware image on the NOR flash memory */
- const uintptr_t ramfw_flash_base;
-
- /*! The size of the RAM firmware image on the NOR flash memory */
- const unsigned int ramfw_flash_size;
-};
-
-/*!
- * \}
- */
-
-/*!
- * \}
- */
-
-#endif /* MOD_MSCP_ROM_H */
diff --git a/product/rddanielxlr/module/mscp_rom/src/Makefile b/product/rddanielxlr/module/mscp_rom/src/Makefile
deleted file mode 100644
index ad0d7e5e..00000000
--- a/product/rddanielxlr/module/mscp_rom/src/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# Arm SCP/MCP Software
-# Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-
-BS_LIB_NAME := MSCP ROM
-BS_LIB_SOURCES := mod_mscp_rom.c
-
-include $(BS_DIR)/lib.mk
diff --git a/product/rddanielxlr/module/mscp_rom/src/mod_mscp_rom.c b/product/rddanielxlr/module/mscp_rom/src/mod_mscp_rom.c
deleted file mode 100644
index 095f36a5..00000000
--- a/product/rddanielxlr/module/mscp_rom/src/mod_mscp_rom.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Arm SCP/MCP Software
- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <mod_mscp_rom.h>
-
-#include <fwk_interrupt.h>
-#include <fwk_log.h>
-#include <fwk_module.h>
-#include <fwk_module_idx.h>
-#include <fwk_status.h>
-#include <fwk_thread.h>
-
-#include <fmw_cmsis.h>
-
-#include <stdint.h>
-#include <string.h>
-
-static const struct mscp_rom_config *rom_config;
-
-enum rom_event {
- ROM_EVENT_RUN,
- ROM_EVENT_COUNT
-};
-
-/*
- * This function assumes that the RAM firmware image is located at the beginning
- * of the SCP/MCP RAM. The reset handler will be at offset 0x4 (the second entry
- * of the vector table).
- */
-static void jump_to_ramfw(void)
-{
- uintptr_t const *reset_base =
- (uintptr_t *)(rom_config->ramfw_ram_base + 0x4);
- void (*ramfw_reset_handler)(void);
-
- /*
- * Disable interrupts for the duration of the ROM firmware to RAM firmware
- * transition.
- */
- fwk_interrupt_global_disable();
-
- ramfw_reset_handler = (void (*)(void))*reset_base;
-
- /* Set the vector table offset register to ramfw vector table */
- SCB->VTOR = rom_config->ramfw_ram_base;
-
- /*
- * Execute the RAM firmware's reset handler to pass control from ROM
- * firmware to the RAM firmware.
- */
- ramfw_reset_handler();
-}
-
-static int mscp_rom_init(fwk_id_t module_id, unsigned int element_count,
- const void *data)
-{
- rom_config = data;
-
- return FWK_SUCCESS;
-}
-
-static int mscp_rom_start(fwk_id_t id)
-{
- int status;
- struct fwk_event event = {
- .source_id = FWK_ID_MODULE(FWK_MODULE_IDX_MSCP_ROM),
- .target_id = FWK_ID_MODULE(FWK_MODULE_IDX_MSCP_ROM),
- .id = FWK_ID_EVENT(FWK_MODULE_IDX_MSCP_ROM, ROM_EVENT_RUN),
- };
-
- status = fwk_thread_put_event(&event);
-
- return status;
-}
-
-static int mscp_rom_process_event(const struct fwk_event *event,
- struct fwk_event *resp)
-{
- FWK_LOG_INFO("[ROM] Loading RAM firmware\n");
-
- if (rom_config->ramfw_flash_size != 0) {
- memcpy((void *)rom_config->ramfw_ram_base,
- (uint8_t *)rom_config->ramfw_flash_base,
- rom_config->ramfw_flash_size);
- }
-
- FWK_LOG_INFO("[ROM] Starting RAM firmware execution\n");
- jump_to_ramfw();
-
- return FWK_SUCCESS;
-}
-
-/* Module descriptor */
-const struct fwk_module module_mscp_rom = {
- .name = "MSCP_ROM",
- .type = FWK_MODULE_TYPE_SERVICE,
- .event_count = ROM_EVENT_COUNT,
- .init = mscp_rom_init,
- .start = mscp_rom_start,
- .process_event = mscp_rom_process_event,
-};
diff --git a/product/rddanielxlr/scp_romfw/config_bootloader.c b/product/rddanielxlr/scp_romfw/config_bootloader.c
new file mode 100644
index 00000000..34d4ad0e
--- /dev/null
+++ b/product/rddanielxlr/scp_romfw/config_bootloader.c
@@ -0,0 +1,24 @@
+/*
+ * Arm SCP/MCP Software
+ * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include "scp_mmap.h"
+#include "scp_software_mmap.h"
+
+#include <mod_bootloader.h>
+
+#include <fwk_module.h>
+
+static const struct mod_bootloader_config bootloader_module_config = {
+ .source_base = SCP_RAMFW_IMAGE_FLASH_BASE,
+ .source_size = SCP_RAMFW_IMAGE_FLASH_SIZE,
+ .destination_base = SCP_ITC_RAM_BASE,
+ .destination_size = SCP_RAMFW_IMAGE_FLASH_SIZE,
+};
+
+struct fwk_module_config config_bootloader = {
+ .data = &bootloader_module_config,
+};
diff --git a/product/rddanielxlr/scp_romfw/config_scp_rom.c b/product/rddanielxlr/scp_romfw/config_scp_rom.c
deleted file mode 100644
index 93b41811..00000000
--- a/product/rddanielxlr/scp_romfw/config_scp_rom.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Arm SCP/MCP Software
- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include "scp_mmap.h"
-#include "scp_software_mmap.h"
-
-#include <mod_mscp_rom.h>
-
-#include <fwk_module.h>
-
-const struct fwk_module_config config_mscp_rom = {
- .data = &((struct mscp_rom_config) {
- .ramfw_ram_base = SCP_ITC_RAM_BASE,
- .ramfw_flash_base = SCP_RAMFW_IMAGE_FLASH_BASE,
- .ramfw_flash_size = SCP_RAMFW_IMAGE_FLASH_SIZE,
- })
-};
diff --git a/product/rddanielxlr/scp_romfw/firmware.mk b/product/rddanielxlr/scp_romfw/firmware.mk
index 1239ac8c..902b3432 100644
--- a/product/rddanielxlr/scp_romfw/firmware.mk
+++ b/product/rddanielxlr/scp_romfw/firmware.mk
@@ -20,13 +20,14 @@ BS_FIRMWARE_MODULES := \
pcid \
pl011 \
clock \
- mscp_rom \
+ bootloader \
+ isys_rom
BS_FIRMWARE_SOURCES := \
config_sid.c \
config_system_info.c \
config_pl011.c \
config_clock.c \
- config_scp_rom.c \
+ config_bootloader.c
include $(BS_DIR)/firmware.mk