@ -68,6 +68,7 @@ struct image_cfg_element {
IMAGE_CFG_BINARY ,
IMAGE_CFG_PAYLOAD ,
IMAGE_CFG_DATA ,
IMAGE_CFG_BAUDRATE ,
} type ;
union {
unsigned int version ;
@ -85,6 +86,7 @@ struct image_cfg_element {
unsigned int nandeccmode ;
unsigned int nandpagesz ;
struct ext_hdr_v0_reg regdata ;
unsigned int baudrate ;
} ;
} ;
@ -195,6 +197,28 @@ static uint32_t image_checksum32(void *start, uint32_t len)
return csum ;
}
static uint8_t baudrate_to_option ( unsigned int baudrate )
{
switch ( baudrate ) {
case 2400 :
return MAIN_HDR_V1_OPT_BAUD_2400 ;
case 4800 :
return MAIN_HDR_V1_OPT_BAUD_4800 ;
case 9600 :
return MAIN_HDR_V1_OPT_BAUD_9600 ;
case 19200 :
return MAIN_HDR_V1_OPT_BAUD_19200 ;
case 38400 :
return MAIN_HDR_V1_OPT_BAUD_38400 ;
case 57600 :
return MAIN_HDR_V1_OPT_BAUD_57600 ;
case 115200 :
return MAIN_HDR_V1_OPT_BAUD_115200 ;
default :
return MAIN_HDR_V1_OPT_BAUD_DEFAULT ;
}
}
static void * image_create_v0 ( size_t * imagesz , struct image_tool_params * params ,
int payloadsz )
{
@ -398,6 +422,9 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
e = image_find_option ( IMAGE_CFG_NAND_BADBLK_LOCATION ) ;
if ( e )
main_hdr - > nandbadblklocation = e - > nandbadblklocation ;
e = image_find_option ( IMAGE_CFG_BAUDRATE ) ;
if ( e )
main_hdr - > options = baudrate_to_option ( e - > baudrate ) ;
binarye = image_find_option ( IMAGE_CFG_BINARY ) ;
if ( binarye ) {
@ -548,6 +575,10 @@ static int image_create_config_parse_oneline(char *line,
el - > type = IMAGE_CFG_DATA ;
el - > regdata . raddr = strtoul ( value1 , NULL , 16 ) ;
el - > regdata . rdata = strtoul ( value2 , NULL , 16 ) ;
} else if ( ! strcmp ( keyword , " BAUDRATE " ) ) {
char * value = strtok_r ( NULL , deliminiters , & saveptr ) ;
el - > type = IMAGE_CFG_BAUDRATE ;
el - > baudrate = strtoul ( value , NULL , 10 ) ;
} else {
fprintf ( stderr , " Ignoring unknown line '%s' \n " , line ) ;
}