Skip to content

Commit

Permalink
morello: move MHU mailbox to AP non-trusted RAM
Browse files Browse the repository at this point in the history
Because of an issue with unaligned accesses with MHU SRAM, move
AP-SCP MHU mailbox memory region from SRAM to AP Non-trusted RAM.

Signed-off-by: Anurag Koul <anurag.koul@arm.com>
Change-Id: Ibd0f9cc8949b10dd1e9e67ba6e05df801832abd7
  • Loading branch information
anukou authored and nicola-mazzucato-arm committed Dec 9, 2021
1 parent 806214b commit 9488bc4
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 72 deletions.
2 changes: 2 additions & 0 deletions product/morello/include/morello_scp_mmap.h
Expand Up @@ -167,6 +167,8 @@
#define SCP_SSC_BASE (SCP_SYS1_BASE + 0x2A420000)
#define SCP_REFCLK_CNTCONTROL_BASE (SCP_SYS1_BASE + 0x2A430000)

/* Base address of AP-SCP mailbox for non-secure access */
#define SCP_AP_BASE_NS_MAILBOX_SRAM (SCP_NONTRUSTED_RAM_BASE)
/*
* Base addresses of MHU devices
*/
Expand Down
4 changes: 2 additions & 2 deletions product/morello/scp_ramfw_soc/config_armv7m_mpu.c
Expand Up @@ -80,8 +80,8 @@ static const ARM_MPU_Region_t regions[] = {
ARM_MPU_REGION_SIZE_256B),
},
{
/* 0x6520_0000 - 0x6520_FFFF */
.RBAR = ARM_MPU_RBAR(5, SCP_AP_SHARED_NONSECURE_RAM),
/* 0xA600_0000 - 0xA600_FFFF */
.RBAR = ARM_MPU_RBAR(5, SCP_AP_BASE_NS_MAILBOX_SRAM),
.RASR = ARM_MPU_RASR(
1,
ARM_MPU_AP_PRIV,
Expand Down
139 changes: 69 additions & 70 deletions product/morello/scp_ramfw_soc/config_smt.c
Expand Up @@ -21,76 +21,75 @@

#include <stdint.h>

static const struct fwk_element smt_element_table[] = {
[SCP_MORELLO_SCMI_SERVICE_IDX_PSCI] = {
.name = "PSCI",
.data = &((struct mod_smt_channel_config) {
.type =
MOD_SMT_CHANNEL_TYPE_SLAVE,
.policies =
MOD_SMT_POLICY_INIT_MAILBOX |
MOD_SMT_POLICY_SECURE,
.mailbox_address =
SCP_AP_SHARED_SECURE_RAM,
.mailbox_size =
SCP_SCMI_PAYLOAD_SIZE,
.driver_id =
FWK_ID_SUB_ELEMENT_INIT(
FWK_MODULE_IDX_MHU,
MORELLO_MHU_DEVICE_IDX_S_CLUS0,
0),
.driver_api_id =
FWK_ID_API_INIT(
FWK_MODULE_IDX_MHU,
0),
}),
},
[SCP_MORELLO_SCMI_SERVICE_IDX_OSPM] = {
.name = "OSPM",
.data = &((struct mod_smt_channel_config) {
.type =
MOD_SMT_CHANNEL_TYPE_SLAVE,
.policies =
MOD_SMT_POLICY_INIT_MAILBOX,
.mailbox_address =
SCP_AP_SHARED_NONSECURE_RAM,
.mailbox_size =
SCP_SCMI_PAYLOAD_SIZE,
.driver_id =
FWK_ID_SUB_ELEMENT_INIT(
FWK_MODULE_IDX_MHU,
MORELLO_MHU_DEVICE_IDX_NS_CLUS0,
0),
.driver_api_id =
FWK_ID_API_INIT(
FWK_MODULE_IDX_MHU,
0),
}),
},
[SCP_MORELLO_SCMI_SERVICE_IDX_MCP] = {
.name = "MCP",
.data = &((struct mod_smt_channel_config) {
.type =
MOD_SMT_CHANNEL_TYPE_SLAVE,
.policies =
MOD_SMT_POLICY_INIT_MAILBOX |
MOD_SMT_POLICY_SECURE,
.mailbox_address =
SCP_MCP_SHARED_SECURE_RAM,
.mailbox_size =
SCP_SCMI_PAYLOAD_SIZE,
.driver_id =
FWK_ID_SUB_ELEMENT_INIT(
FWK_MODULE_IDX_MHU,
MORELLO_MHU_DEVICE_IDX_S_MCP,
0),
.driver_api_id =
FWK_ID_API_INIT(
FWK_MODULE_IDX_MHU,
0),
}),
},
[SCP_MORELLO_SCMI_SERVICE_IDX_COUNT] = { 0 },
static const struct fwk_element
smt_element_table[SCP_MORELLO_SCMI_SERVICE_IDX_COUNT + 1] = {
[SCP_MORELLO_SCMI_SERVICE_IDX_PSCI] = {
.name = "PSCI",
.data = &((struct mod_smt_channel_config){
.type =
MOD_SMT_CHANNEL_TYPE_SLAVE,
.policies =
MOD_SMT_POLICY_INIT_MAILBOX |
MOD_SMT_POLICY_SECURE,
.mailbox_address =
SCP_AP_SHARED_SECURE_RAM,
.mailbox_size =
SCP_SCMI_PAYLOAD_SIZE,
.driver_id =
FWK_ID_SUB_ELEMENT_INIT(
FWK_MODULE_IDX_MHU,
MORELLO_MHU_DEVICE_IDX_S_CLUS0,
0),
.driver_api_id =
FWK_ID_API_INIT(
FWK_MODULE_IDX_MHU,
0),
}),
},
[SCP_MORELLO_SCMI_SERVICE_IDX_OSPM] = {
.name = "OSPM",
.data = &((struct mod_smt_channel_config){
.type =
MOD_SMT_CHANNEL_TYPE_SLAVE,
.policies =
MOD_SMT_POLICY_INIT_MAILBOX,
.mailbox_address =
SCP_AP_BASE_NS_MAILBOX_SRAM,
.mailbox_size =
SCP_SCMI_PAYLOAD_SIZE,
.driver_id =
FWK_ID_SUB_ELEMENT_INIT(
FWK_MODULE_IDX_MHU,
MORELLO_MHU_DEVICE_IDX_NS_CLUS0,
0),
.driver_api_id =
FWK_ID_API_INIT(
FWK_MODULE_IDX_MHU,
0),
}),
},
[SCP_MORELLO_SCMI_SERVICE_IDX_MCP] = {
.name = "MCP",
.data = &((struct mod_smt_channel_config){
.type =
MOD_SMT_CHANNEL_TYPE_SLAVE,
.policies =
MOD_SMT_POLICY_INIT_MAILBOX |
MOD_SMT_POLICY_SECURE,
.mailbox_address =
SCP_MCP_SHARED_SECURE_RAM,
.mailbox_size =
SCP_SCMI_PAYLOAD_SIZE,
.driver_id = FWK_ID_SUB_ELEMENT_INIT(
FWK_MODULE_IDX_MHU,
MORELLO_MHU_DEVICE_IDX_S_MCP,
0),
.driver_api_id = FWK_ID_API_INIT(
FWK_MODULE_IDX_MHU,
0),
}),
},
[SCP_MORELLO_SCMI_SERVICE_IDX_COUNT] = { 0 },
};

static const struct fwk_element *smt_get_element_table(fwk_id_t module_id)
Expand Down

0 comments on commit 9488bc4

Please sign in to comment.