]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
feat(ethos-n): add NPU support in fiptool
authorDaniele Castro <daniele.castro@arm.com>
Thu, 24 Nov 2022 12:06:13 +0000 (12:06 +0000)
committerJoanna Farley <joanna.farley@arm.com>
Tue, 4 Apr 2023 09:36:20 +0000 (11:36 +0200)
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 <daniele.castro@arm.com>
Signed-off-by: Rob Hughes <robert.hughes@arm.com>
Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
Change-Id: I8cd64fb20d58f8bd539facb085606213d6cead05

include/drivers/arm/ethosn_fip.h [new file with mode: 0644]
plat/arm/board/juno/fip/plat_def_fip_uuid.h [new file with mode: 0644]
plat/arm/board/juno/fip/plat_def_uuid_config.c [new file with mode: 0644]
plat/arm/board/juno/plat_fiptool.mk [new file with mode: 0644]

diff --git a/include/drivers/arm/ethosn_fip.h b/include/drivers/arm/ethosn_fip.h
new file mode 100644 (file)
index 0000000..f2c7f93
--- /dev/null
@@ -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 (file)
index 0000000..0f0d11d
--- /dev/null
@@ -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 <drivers/arm/ethosn_fip.h>
+#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 (file)
index 0000000..8133927
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2023, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <stddef.h>
+
+#include <firmware_image_package.h>
+#include <tbbr_config.h>
+
+#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 (file)
index 0000000..46b5179
--- /dev/null
@@ -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