From: Soby Mathew Date: Mon, 14 Nov 2016 12:44:32 +0000 (+0000) Subject: Add SCMI support for Juno platform X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=40111d4473043a823eb0d2bdcac093a3ffc9df2b;p=project%2Fbcm63xx%2Fatf.git Add SCMI support for Juno platform This patch adds the memory map region for the SCMI payload memory and maps the Juno core indices to SCMI power domains via the `plat_css_core_pos_to_scmi_dmn_id_map` array. Change-Id: I0d2bb2a719ff5b6a9d8e22e91e1625ab14453665 Signed-off-by: Soby Mathew --- diff --git a/include/plat/arm/css/common/css_def.h b/include/plat/arm/css/common/css_def.h index 4c4dece6..0b74cede 100644 --- a/include/plat/arm/css/common/css_def.h +++ b/include/plat/arm/css/common/css_def.h @@ -74,6 +74,11 @@ CSS_DEVICE_SIZE, \ MT_DEVICE | MT_RW | MT_SECURE) +#define CSS_MAP_NSRAM MAP_REGION_FLAT( \ + NSRAM_BASE, \ + NSRAM_SIZE, \ + MT_DEVICE | MT_RW | MT_SECURE) + /* Platform ID address */ #define SSC_VERSION_OFFSET 0x040 diff --git a/plat/arm/board/common/board_css_common.c b/plat/arm/board/common/board_css_common.c index 1758a235..42f754e2 100644 --- a/plat/arm/board/common/board_css_common.c +++ b/plat/arm/board/common/board_css_common.c @@ -49,6 +49,15 @@ const mmap_region_t plat_arm_mmap[] = { ARM_MAP_SHARED_RAM, V2M_MAP_IOFPGA, CSS_MAP_DEVICE, +#if CSS_USE_SCMI_DRIVER + /* + * The SCMI payload area is currently in the Non Secure SRAM. This is + * a potential security risk but this will be resolved once SCP + * completely replaces SCPI with SCMI as the only communication + * protocol. + */ + CSS_MAP_NSRAM, +#endif SOC_CSS_MAP_DEVICE, {0} }; diff --git a/plat/arm/board/juno/include/platform_def.h b/plat/arm/board/juno/include/platform_def.h index 8f038267..68c38ee1 100644 --- a/plat/arm/board/juno/include/platform_def.h +++ b/plat/arm/board/juno/include/platform_def.h @@ -74,8 +74,13 @@ #endif #ifdef IMAGE_BL31 -# define PLAT_ARM_MMAP_ENTRIES 5 -# define MAX_XLAT_TABLES 2 +# if CSS_USE_SCMI_DRIVER +# define PLAT_ARM_MMAP_ENTRIES 6 +# define MAX_XLAT_TABLES 3 +# else +# define PLAT_ARM_MMAP_ENTRIES 5 +# define MAX_XLAT_TABLES 2 +# endif #endif #ifdef IMAGE_BL32 diff --git a/plat/arm/board/juno/juno_topology.c b/plat/arm/board/juno/juno_topology.c index d2e0c77e..b9412b1f 100644 --- a/plat/arm/board/juno/juno_topology.c +++ b/plat/arm/board/juno/juno_topology.c @@ -51,3 +51,10 @@ unsigned int plat_arm_get_cluster_core_count(u_register_t mpidr) return (((mpidr) & 0x100) ? JUNO_CLUSTER1_CORE_COUNT :\ JUNO_CLUSTER0_CORE_COUNT); } + +/* + * The array mapping platform core position (implemented by plat_my_core_pos()) + * to the SCMI power domain ID implemented by SCP. + */ +const uint32_t plat_css_core_pos_to_scmi_dmn_id_map[PLATFORM_CORE_COUNT] = { + 2, 3, 4, 5, 0, 1 };