xref: /rk3399_ARM-atf/drivers/arm/ethosn/ethosn_big_fw.h (revision 42fb812a7525682362096d651a3749787b3bd555)
1*313b776fSMikael Olsson /*
2*313b776fSMikael Olsson  * Copyright (c) 2023, Arm Limited. All rights reserved.
3*313b776fSMikael Olsson  *
4*313b776fSMikael Olsson  * SPDX-License-Identifier: BSD-3-Clause
5*313b776fSMikael Olsson  */
6*313b776fSMikael Olsson 
7*313b776fSMikael Olsson #include <stdbool.h>
8*313b776fSMikael Olsson #include <stdint.h>
9*313b776fSMikael Olsson 
10*313b776fSMikael Olsson /*
11*313b776fSMikael Olsson  * Big FW binary structure.
12*313b776fSMikael Olsson  * Must be kept in sync with the Arm(R) Ethos(TM)-N NPU firmware binary layout.
13*313b776fSMikael Olsson  */
14*313b776fSMikael Olsson struct ethosn_big_fw {
15*313b776fSMikael Olsson 	uint32_t fw_magic;
16*313b776fSMikael Olsson 	uint32_t fw_ver_major;
17*313b776fSMikael Olsson 	uint32_t fw_ver_minor;
18*313b776fSMikael Olsson 	uint32_t fw_ver_patch;
19*313b776fSMikael Olsson 	uint32_t arch_min;
20*313b776fSMikael Olsson 	uint32_t arch_max;
21*313b776fSMikael Olsson 	uint32_t offset;
22*313b776fSMikael Olsson 	uint32_t size;
23*313b776fSMikael Olsson 	uint32_t code_offset;
24*313b776fSMikael Olsson 	uint32_t code_size;
25*313b776fSMikael Olsson 	uint32_t ple_offset;
26*313b776fSMikael Olsson 	uint32_t ple_size;
27*313b776fSMikael Olsson 	uint32_t vector_table_offset;
28*313b776fSMikael Olsson 	uint32_t vector_table_size;
29*313b776fSMikael Olsson 	uint32_t unpriv_stack_offset;
30*313b776fSMikael Olsson 	uint32_t unpriv_stack_size;
31*313b776fSMikael Olsson 	uint32_t priv_stack_offset;
32*313b776fSMikael Olsson 	uint32_t priv_stack_size;
33*313b776fSMikael Olsson } __packed;
34*313b776fSMikael Olsson 
35*313b776fSMikael Olsson bool ethosn_big_fw_verify_header(const struct ethosn_big_fw *big_fw,
36*313b776fSMikael Olsson 				 uint32_t npu_arch_ver);
37