1 /* 2 * (C) Copyright 2014 3 * Texas Instruments Incorporated 4 * Add gpimage format for keystone devices to format spl image. This is 5 * Based on omapimage.c 6 * 7 * (C) Copyright 2010 8 * Linaro LTD, www.linaro.org 9 * Author: John Rigby <john.rigby@linaro.org> 10 * Based on TI's signGP.c 11 * 12 * (C) Copyright 2009 13 * Stefano Babic, DENX Software Engineering, sbabic@denx.de. 14 * 15 * (C) Copyright 2008 16 * Marvell Semiconductor <www.marvell.com> 17 * Written-by: Prafulla Wadaskar <prafulla@marvell.com> 18 * 19 * SPDX-License-Identifier: GPL-2.0+ 20 */ 21 22 #include "imagetool.h" 23 #include <compiler.h> 24 #include <image.h> 25 #include "gpheader.h" 26 27 static uint8_t gpimage_header[GPIMAGE_HDR_SIZE]; 28 29 /* to be in keystone gpimage */ 30 static int gpimage_check_image_types(uint8_t type) 31 { 32 if (type == IH_TYPE_GPIMAGE) 33 return EXIT_SUCCESS; 34 return EXIT_FAILURE; 35 } 36 37 static int gpimage_verify_header(unsigned char *ptr, int image_size, 38 struct image_tool_params *params) 39 { 40 struct gp_header *gph = (struct gp_header *)ptr; 41 42 return gph_verify_header(gph, 1); 43 } 44 45 static void gpimage_print_header(const void *ptr) 46 { 47 const struct gp_header *gph = (struct gp_header *)ptr; 48 49 gph_print_header(gph, 1); 50 } 51 52 static void gpimage_set_header(void *ptr, struct stat *sbuf, int ifd, 53 struct image_tool_params *params) 54 { 55 struct gp_header *gph = (struct gp_header *)ptr; 56 57 gph_set_header(gph, sbuf->st_size - GPIMAGE_HDR_SIZE, params->addr, 1); 58 } 59 60 /* 61 * gpimage parameters 62 */ 63 static struct image_type_params gpimage_params = { 64 .name = "TI KeyStone GP Image support", 65 .header_size = GPIMAGE_HDR_SIZE, 66 .hdr = (void *)&gpimage_header, 67 .check_image_type = gpimage_check_image_types, 68 .verify_header = gpimage_verify_header, 69 .print_header = gpimage_print_header, 70 .set_header = gpimage_set_header, 71 .check_params = gpimage_check_params, 72 }; 73 74 void init_gpimage_type(void) 75 { 76 register_image_type(&gpimage_params); 77 } 78