diff options
author | Jagadeesh Ujja <jagadeesh.ujja@arm.com> | 2019-07-21 22:21:07 +0530 |
---|---|---|
committer | Thomas Abraham <thomas.abraham@arm.com> | 2019-10-23 09:23:49 +0530 |
commit | 85be50be7b79f427a91c15767ada8f078ecb6c65 (patch) | |
tree | 77efad82f19d84be81170782d3a9877f01d0eb01 | |
parent | 967ad56a1d30e05bb9165d3717c6fea50a2b34e0 (diff) |
board/rddaniel: add board support for rd-daniel platformRD-INFRA-20191024-RC0
Add the initial board support for RD-Daniel Config-M platform. This
platform consists of 16 CPUs connected to the interconnect using
direct connect mode.
Change-Id: Ibe73ed136560ef64d2e0013ab8540a26f4fbd447
Signed-off-by: Jagadeesh Ujja <jagadeesh.ujja@arm.com>
-rw-r--r-- | plat/arm/board/rddaniel/fdts/rddaniel_nt_fw_config.dts | 21 | ||||
-rw-r--r-- | plat/arm/board/rddaniel/fdts/rddaniel_tb_fw_config.dts | 26 | ||||
-rw-r--r-- | plat/arm/board/rddaniel/include/platform_def.h | 38 | ||||
-rw-r--r-- | plat/arm/board/rddaniel/platform.mk | 43 | ||||
-rw-r--r-- | plat/arm/board/rddaniel/rddaniel_err.c | 17 | ||||
-rw-r--r-- | plat/arm/board/rddaniel/rddaniel_plat.c | 18 | ||||
-rw-r--r-- | plat/arm/board/rddaniel/rddaniel_security.c | 12 |
7 files changed, 175 insertions, 0 deletions
diff --git a/plat/arm/board/rddaniel/fdts/rddaniel_nt_fw_config.dts b/plat/arm/board/rddaniel/fdts/rddaniel_nt_fw_config.dts new file mode 100644 index 000000000..382d794dd --- /dev/null +++ b/plat/arm/board/rddaniel/fdts/rddaniel_nt_fw_config.dts @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/dts-v1/; +/ { + /* compatible string */ + compatible = "arm,rd-daniel"; + + /* + * Place holder for system-id node with default values. The + * value of platform-id and config-id will be set to the + * correct values during the BL2 stage of boot. + */ + system-id { + platform-id = <0x0>; + config-id = <0x0>; + }; +}; diff --git a/plat/arm/board/rddaniel/fdts/rddaniel_tb_fw_config.dts b/plat/arm/board/rddaniel/fdts/rddaniel_tb_fw_config.dts new file mode 100644 index 000000000..cf7b5f70d --- /dev/null +++ b/plat/arm/board/rddaniel/fdts/rddaniel_tb_fw_config.dts @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/dts-v1/; + +/ { + /* Platform Config */ + compatible = "arm,tb_fw"; + nt_fw_config_addr = <0x0 0xFEF00000>; + nt_fw_config_max_size = <0x0100000>; + + /* + * The following two entries are placeholders for Mbed TLS + * heap information. The default values don't matter since + * they will be overwritten by BL1. + * In case of having shared Mbed TLS heap between BL1 and BL2, + * BL1 will populate these two properties with the respective + * info about the shared heap. This info will be available for + * BL2 in order to locate and re-use the heap. + */ + mbedtls_heap_addr = <0x0 0x0>; + mbedtls_heap_size = <0x0>; +}; diff --git a/plat/arm/board/rddaniel/include/platform_def.h b/plat/arm/board/rddaniel/include/platform_def.h new file mode 100644 index 000000000..5168f79cd --- /dev/null +++ b/plat/arm/board/rddaniel/include/platform_def.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef PLATFORM_DEF_H +#define PLATFORM_DEF_H + +#include <lib/utils_def.h> +#include <sgi_base_platform_def.h> + +#define PLAT_ARM_CLUSTER_COUNT 16 +#define CSS_SGI_MAX_CPUS_PER_CLUSTER 1 +#define CSS_SGI_MAX_PE_PER_CPU 1 + +#define PLAT_CSS_MHU_BASE UL(0x45400000) +#define PLAT_MHUV2_BASE PLAT_CSS_MHU_BASE + +#define PLAT_CORE_PWR_LVL ARM_PWR_LVL0 +#define PLAT_CLUSTER_PWR_LVL ARM_PWR_LVL1 +#define PLAT_SYSTEM_PWR_LVL ARM_PWR_LVL2 + +#define PLAT_MIN_PWR_LVL PLAT_CORE_PWR_LVL +#define PLAT_MAX_PWR_LVL PLAT_CLUSTER_PWR_LVL + +/* + * Physical and virtual address space limits for MMU in AARCH64 & AARCH32 modes + */ +#ifdef __aarch64__ +#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 36) +#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 36) +#else +#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32) +#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32) +#endif + +#endif /* PLATFORM_DEF_H */ diff --git a/plat/arm/board/rddaniel/platform.mk b/plat/arm/board/rddaniel/platform.mk new file mode 100644 index 000000000..2511e425b --- /dev/null +++ b/plat/arm/board/rddaniel/platform.mk @@ -0,0 +1,43 @@ +# +# Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +include plat/arm/css/sgi/sgi-common.mk + +RDDANIEL_BASE = plat/arm/board/rddaniel + +PLAT_INCLUDES += -I${RDDANIEL_BASE}/include/ + +SGI_CPU_SOURCES := lib/cpus/aarch64/neoverse_zeus.S + +BL1_SOURCES += ${SGI_CPU_SOURCES} \ + ${RDDANIEL_BASE}/rddaniel_err.c + +BL2_SOURCES += ${RDDANIEL_BASE}/rddaniel_plat.c \ + ${RDDANIEL_BASE}/rddaniel_security.c \ + ${RDDANIEL_BASE}/rddaniel_err.c \ + lib/utils/mem_region.c \ + plat/arm/common/arm_nor_psci_mem_protect.c + +BL31_SOURCES += ${SGI_CPU_SOURCES} \ + ${RDDANIEL_BASE}/rddaniel_plat.c \ + drivers/cfi/v2m/v2m_flash.c \ + lib/utils/mem_region.c \ + plat/arm/common/arm_nor_psci_mem_protect.c + +# Add the FDT_SOURCES and options for Dynamic Config +FDT_SOURCES += ${RDDANIEL_BASE}/fdts/${PLAT}_tb_fw_config.dts +TB_FW_CONFIG := ${BUILD_PLAT}/fdts/${PLAT}_tb_fw_config.dtb + +# Add the TB_FW_CONFIG to FIP and specify the same to certtool +$(eval $(call TOOL_ADD_PAYLOAD,${TB_FW_CONFIG},--tb-fw-config)) + +FDT_SOURCES += ${RDDANIEL_BASE}/fdts/${PLAT}_nt_fw_config.dts +NT_FW_CONFIG := ${BUILD_PLAT}/fdts/${PLAT}_nt_fw_config.dtb + +# Add the NT_FW_CONFIG to FIP and specify the same to certtool +$(eval $(call TOOL_ADD_PAYLOAD,${NT_FW_CONFIG},--nt-fw-config)) + +override CTX_INCLUDE_AARCH32_REGS := 0 diff --git a/plat/arm/board/rddaniel/rddaniel_err.c b/plat/arm/board/rddaniel/rddaniel_err.c new file mode 100644 index 000000000..3d8324053 --- /dev/null +++ b/plat/arm/board/rddaniel/rddaniel_err.c @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <plat/arm/common/plat_arm.h> + +/* + * rddaniel error handler + */ +void __dead2 plat_arm_error_handler(int err) +{ + while (1) { + wfi(); + } +} diff --git a/plat/arm/board/rddaniel/rddaniel_plat.c b/plat/arm/board/rddaniel/rddaniel_plat.c new file mode 100644 index 000000000..11fec51b2 --- /dev/null +++ b/plat/arm/board/rddaniel/rddaniel_plat.c @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <plat/common/platform.h> + +unsigned int plat_arm_sgi_get_platform_id(void) +{ + return mmio_read_32(SID_REG_BASE + SID_SYSTEM_ID_OFFSET) + & SID_SYSTEM_ID_PART_NUM_MASK; +} + +unsigned int plat_arm_sgi_get_config_id(void) +{ + return mmio_read_32(SID_REG_BASE + SID_SYSTEM_CFG_OFFSET); +} diff --git a/plat/arm/board/rddaniel/rddaniel_security.c b/plat/arm/board/rddaniel/rddaniel_security.c new file mode 100644 index 000000000..302e2d033 --- /dev/null +++ b/plat/arm/board/rddaniel/rddaniel_security.c @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2019, ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <platform_def.h> + +/* Initialize the secure environment */ +void plat_arm_security_setup(void) +{ +} |