From: Daniele Castro Date: Thu, 24 Nov 2022 12:06:13 +0000 (+0000) Subject: feat(ethos-n): add NPU support in fiptool X-Git-Tag: baikal/aarch64/sdk5.10~1^2~111^2~17 X-Git-Url: https://git.baikalelectronics.ru/?a=commitdiff_plain;h=c91b08c8a44aafac4f72c64aa8d4777b8c73647e;p=arm-tf.git feat(ethos-n): add NPU support in fiptool Add platform specific Makefile to add UUIDs and command options for the Arm(R) Ethos(TM)-N NPU firmware binary and certificate data to the FIP so that the TF-A's BL2 can later be used to load the Arm(R) Ethos(TM)-N NPU firmware binary into memory and verify its integrity. Add separate driver specific include header file for the Arm(R) Ethos(TM)-N NPU images containing UUIDs and command options to make it easy to port the FIP support to other platforms. Signed-off-by: Daniele Castro Signed-off-by: Rob Hughes Signed-off-by: Mikael Olsson Change-Id: I8cd64fb20d58f8bd539facb085606213d6cead05 --- diff --git a/include/drivers/arm/ethosn_fip.h b/include/drivers/arm/ethosn_fip.h new file mode 100644 index 000000000..f2c7f932c --- /dev/null +++ b/include/drivers/arm/ethosn_fip.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2023, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef ETHOSN_FIP_H +#define ETHOSN_FIP_H + +#define UUID_ETHOSN_FW_KEY_CERTIFICATE \ + { { 0x56, 0x66, 0xd0, 0x04 }, { 0xab, 0x98 }, { 0x40, 0xaa }, \ + 0x89, 0x88, { 0xb7, 0x2a, 0x3, 0xa2, 0x56, 0xe2 } } + +#define UUID_ETHOSN_FW_CONTENT_CERTIFICATE \ + { { 0xa5, 0xc4, 0x18, 0xda }, { 0x43, 0x0f }, { 0x48, 0xb1 }, \ + 0x88, 0xcd, { 0x93, 0xf6, 0x78, 0x89, 0xd9, 0xed } } + +#define UUID_ETHOSN_FW \ + { { 0xcf, 0xd4, 0x99, 0xb5 }, { 0xa3, 0xbc }, { 0x4a, 0x7e }, \ + 0x98, 0xcb, { 0x48, 0xa4, 0x1c, 0xb8, 0xda, 0xe1 } } + +#define ETHOSN_FW_KEY_CERTIFICATE_DEF \ + { "Arm(R) Ethos(TM)-N NPU Firmware Key Certificate", \ + UUID_ETHOSN_FW_KEY_CERTIFICATE, \ + "npu-fw-key-cert" } + +#define ETHOSN_FW_CONTENT_CERTIFICATE_DEF \ + { "Arm(R) Ethos(TM)-N NPU Firmware Content Certificate",\ + UUID_ETHOSN_FW_CONTENT_CERTIFICATE, \ + "npu-fw-cert" } + +#define ETHOSN_FW_DEF \ + { "Arm(R) Ethos(TM)-N NPU Firmware", \ + UUID_ETHOSN_FW, \ + "npu-fw" } + +#endif /* ETHOSN_FIP_H */ diff --git a/plat/arm/board/juno/fip/plat_def_fip_uuid.h b/plat/arm/board/juno/fip/plat_def_fip_uuid.h new file mode 100644 index 000000000..0f0d11d41 --- /dev/null +++ b/plat/arm/board/juno/fip/plat_def_fip_uuid.h @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2023, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef PLAT_DEF_FIP_UUID_H +#define PLAT_DEF_FIP_UUID_H + +#ifdef ARM_ETHOSN_NPU_TZMP1 +#include +#endif + +#endif /* PLAT_DEF_FIP_UUID_H */ diff --git a/plat/arm/board/juno/fip/plat_def_uuid_config.c b/plat/arm/board/juno/fip/plat_def_uuid_config.c new file mode 100644 index 000000000..813392740 --- /dev/null +++ b/plat/arm/board/juno/fip/plat_def_uuid_config.c @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#include +#include + +#include "plat_def_fip_uuid.h" + +toc_entry_t plat_def_toc_entries[] = { +#ifdef ARM_ETHOSN_NPU_TZMP1 + ETHOSN_FW_KEY_CERTIFICATE_DEF, + ETHOSN_FW_CONTENT_CERTIFICATE_DEF, + ETHOSN_FW_DEF, +#endif + { + .name = NULL, + .uuid = { { 0 } }, + .cmdline_name = NULL, + } +}; diff --git a/plat/arm/board/juno/plat_fiptool.mk b/plat/arm/board/juno/plat_fiptool.mk new file mode 100644 index 000000000..46b517901 --- /dev/null +++ b/plat/arm/board/juno/plat_fiptool.mk @@ -0,0 +1,16 @@ +# +# Copyright (c) 2023, Arm Limited. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +PLAT_DEF_UUID := yes + +ifeq (${PLAT_DEF_UUID}, yes) +HOSTCCFLAGS += -DPLAT_DEF_FIP_UUID +ifeq (${ARM_ETHOSN_NPU_TZMP1},1) +HOSTCCFLAGS += -DARM_ETHOSN_NPU_TZMP1 +endif +INCLUDE_PATHS += -I./ -I${PLAT_DIR}fip -I../../include/ +OBJECTS += ${PLAT_DIR}fip/plat_def_uuid_config.o +endif