/*
* ( C ) Copyright 2014
* Texas Instruments Incorporated
* Refactored common functions in to gpimage - common . 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"
/* Helper to convert size and load_addr to big endian */
void to_be32 ( uint32_t * gph_size , uint32_t * gph_load_addr )
{
* gph_size = cpu_to_be32 ( * gph_size ) ;
* gph_load_addr = cpu_to_be32 ( * gph_load_addr ) ;
}
int gph_verify_header ( struct gp_header * gph , int be )
{
uint32_t gph_size = gph - > size ;
uint32_t gph_load_addr = gph - > load_addr ;
if ( be )
to_be32 ( & gph_size , & gph_load_addr ) ;
if ( ! gph_size | | ! gph_load_addr )
return - 1 ;
return 0 ;
}
void gph_print_header ( const struct gp_header * gph , int be )
{
uint32_t gph_size = gph - > size , gph_load_addr = gph - > load_addr ;
if ( be )
to_be32 ( & gph_size , & gph_load_addr ) ;
if ( ! gph_size ) {
fprintf ( stderr , " Error: invalid image size %x \n " , gph_size ) ;
exit ( EXIT_FAILURE ) ;
}
if ( ! gph_load_addr ) {
fprintf ( stderr , " Error: invalid image load address %x \n " ,
gph_load_addr ) ;
exit ( EXIT_FAILURE ) ;
}
printf ( " GP Header: Size %x LoadAddr %x \n " , gph_size , gph_load_addr ) ;
}
void gph_set_header ( struct gp_header * gph , uint32_t size , uint32_t load_addr ,
int be )
{
gph - > size = size ;
gph - > load_addr = load_addr ;
if ( be )
to_be32 ( & gph - > size , & gph - > load_addr ) ;
}
int gpimage_check_params ( struct image_tool_params * params )
{
return ( params - > dflag & & ( params - > fflag | | params - > lflag ) ) | |
( params - > fflag & & ( params - > dflag | | params - > lflag ) ) | |
( params - > lflag & & ( params - > dflag | | params - > fflag ) ) ;
}