xref: /aosp_15_r20/external/arm-trusted-firmware/tools/fiptool/fiptool.h (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong Park /*
2*54fd6939SJiyong Park  * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
3*54fd6939SJiyong Park  *
4*54fd6939SJiyong Park  * SPDX-License-Identifier: BSD-3-Clause
5*54fd6939SJiyong Park  */
6*54fd6939SJiyong Park 
7*54fd6939SJiyong Park #ifndef FIPTOOL_H
8*54fd6939SJiyong Park #define FIPTOOL_H
9*54fd6939SJiyong Park 
10*54fd6939SJiyong Park #include <stddef.h>
11*54fd6939SJiyong Park #include <stdint.h>
12*54fd6939SJiyong Park 
13*54fd6939SJiyong Park #include <firmware_image_package.h>
14*54fd6939SJiyong Park #include <uuid.h>
15*54fd6939SJiyong Park 
16*54fd6939SJiyong Park #include "fiptool_platform.h"
17*54fd6939SJiyong Park 
18*54fd6939SJiyong Park #define NELEM(x) (sizeof (x) / sizeof *(x))
19*54fd6939SJiyong Park 
20*54fd6939SJiyong Park enum {
21*54fd6939SJiyong Park 	DO_UNSPEC = 0,
22*54fd6939SJiyong Park 	DO_PACK   = 1,
23*54fd6939SJiyong Park 	DO_UNPACK = 2,
24*54fd6939SJiyong Park 	DO_REMOVE = 3
25*54fd6939SJiyong Park };
26*54fd6939SJiyong Park 
27*54fd6939SJiyong Park enum {
28*54fd6939SJiyong Park 	LOG_DBG,
29*54fd6939SJiyong Park 	LOG_WARN,
30*54fd6939SJiyong Park 	LOG_ERR
31*54fd6939SJiyong Park };
32*54fd6939SJiyong Park 
33*54fd6939SJiyong Park typedef struct image_desc {
34*54fd6939SJiyong Park 	uuid_t             uuid;
35*54fd6939SJiyong Park 	char              *name;
36*54fd6939SJiyong Park 	char              *cmdline_name;
37*54fd6939SJiyong Park 	int                action;
38*54fd6939SJiyong Park 	char              *action_arg;
39*54fd6939SJiyong Park 	struct image      *image;
40*54fd6939SJiyong Park 	struct image_desc *next;
41*54fd6939SJiyong Park } image_desc_t;
42*54fd6939SJiyong Park 
43*54fd6939SJiyong Park typedef struct image {
44*54fd6939SJiyong Park 	struct fip_toc_entry toc_e;
45*54fd6939SJiyong Park 	void                *buffer;
46*54fd6939SJiyong Park } image_t;
47*54fd6939SJiyong Park 
48*54fd6939SJiyong Park typedef struct cmd {
49*54fd6939SJiyong Park 	char              *name;
50*54fd6939SJiyong Park 	int              (*handler)(int, char **);
51*54fd6939SJiyong Park 	void             (*usage)(int);
52*54fd6939SJiyong Park } cmd_t;
53*54fd6939SJiyong Park 
54*54fd6939SJiyong Park #endif /* FIPTOOL_H */
55