xref: /rk3399_ARM-atf/tools/fiptool/fiptool.h (revision b9589fe5560988c2fd33fa68d323f9544b2d41ee)
1819281eeSdp-arm /*
2819281eeSdp-arm  * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3819281eeSdp-arm  *
4819281eeSdp-arm  * Redistribution and use in source and binary forms, with or without
5819281eeSdp-arm  * modification, are permitted provided that the following conditions are met:
6819281eeSdp-arm  *
7819281eeSdp-arm  * Redistributions of source code must retain the above copyright notice, this
8819281eeSdp-arm  * list of conditions and the following disclaimer.
9819281eeSdp-arm  *
10819281eeSdp-arm  * Redistributions in binary form must reproduce the above copyright notice,
11819281eeSdp-arm  * this list of conditions and the following disclaimer in the documentation
12819281eeSdp-arm  * and/or other materials provided with the distribution.
13819281eeSdp-arm  *
14819281eeSdp-arm  * Neither the name of ARM nor the names of its contributors may be used
15819281eeSdp-arm  * to endorse or promote products derived from this software without specific
16819281eeSdp-arm  * prior written permission.
17819281eeSdp-arm  *
18819281eeSdp-arm  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19819281eeSdp-arm  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20819281eeSdp-arm  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21819281eeSdp-arm  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
22819281eeSdp-arm  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23819281eeSdp-arm  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24819281eeSdp-arm  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25819281eeSdp-arm  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26819281eeSdp-arm  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27819281eeSdp-arm  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28819281eeSdp-arm  * POSSIBILITY OF SUCH DAMAGE.
29819281eeSdp-arm  */
30819281eeSdp-arm 
31819281eeSdp-arm #ifndef __FIPTOOL_H__
32819281eeSdp-arm #define __FIPTOOL_H__
33819281eeSdp-arm 
34819281eeSdp-arm #include <stddef.h>
35819281eeSdp-arm #include <stdint.h>
36819281eeSdp-arm 
3765caa3d0SMasahiro Yamada #include "firmware_image_package.h"
38819281eeSdp-arm #include "uuid.h"
39819281eeSdp-arm 
40819281eeSdp-arm #define NELEM(x) (sizeof (x) / sizeof *(x))
41819281eeSdp-arm 
42819281eeSdp-arm enum {
43e0f083a0Sdp-arm 	DO_UNSPEC = 0,
44819281eeSdp-arm 	DO_PACK   = 1,
45819281eeSdp-arm 	DO_UNPACK = 2,
46819281eeSdp-arm 	DO_REMOVE = 3
47819281eeSdp-arm };
48819281eeSdp-arm 
49819281eeSdp-arm enum {
50819281eeSdp-arm 	LOG_DBG,
51819281eeSdp-arm 	LOG_WARN,
52819281eeSdp-arm 	LOG_ERR
53819281eeSdp-arm };
54819281eeSdp-arm 
55e0f083a0Sdp-arm typedef struct image_desc {
56e0f083a0Sdp-arm 	uuid_t             uuid;
57e0f083a0Sdp-arm 	char              *name;
58e0f083a0Sdp-arm 	char              *cmdline_name;
59e0f083a0Sdp-arm 	int                action;
60e0f083a0Sdp-arm 	char              *action_arg;
61*b9589fe5Sdp-arm 	struct image      *image;
62e0f083a0Sdp-arm 	struct image_desc *next;
63e0f083a0Sdp-arm } image_desc_t;
64e0f083a0Sdp-arm 
65819281eeSdp-arm typedef struct image {
6665caa3d0SMasahiro Yamada 	struct fip_toc_entry toc_e;
67819281eeSdp-arm 	void                *buffer;
68819281eeSdp-arm } image_t;
69819281eeSdp-arm 
70819281eeSdp-arm typedef struct cmd {
71819281eeSdp-arm 	char              *name;
72819281eeSdp-arm 	int              (*handler)(int, char **);
73819281eeSdp-arm 	void             (*usage)(void);
74819281eeSdp-arm } cmd_t;
75819281eeSdp-arm 
76819281eeSdp-arm #endif /* __FIPTOOL_H__ */
77