Blame view

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