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 37*65caa3d0SMasahiro 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; 61e0f083a0Sdp-arm struct image_desc *next; 62e0f083a0Sdp-arm } image_desc_t; 63e0f083a0Sdp-arm 64819281eeSdp-arm typedef struct image { 65*65caa3d0SMasahiro Yamada struct fip_toc_entry toc_e; 66819281eeSdp-arm void *buffer; 67e0f083a0Sdp-arm struct image *next; 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