@ -101,7 +101,6 @@ static uint32_t hdr_ver = 2;
static struct board_info custom_board ;
static char * board_id ;
static struct board_info * board ;
static char * layout_id ;
static struct flash_layout * layout ;
@ -169,73 +168,6 @@ static struct flash_layout layouts[] = {
}
} ;
static struct board_info boards [ ] = {
{
. id = " TD-W8970v1 " ,
. hw_id = 0x89700001 ,
. hw_rev = 1 ,
. layout_id = " 8Mltq " ,
} , {
. id = " TD-W8980v1 " ,
. hw_id = 0x89800001 ,
. hw_rev = 14 ,
. layout_id = " 8Mltq " ,
} , {
. id = " ArcherC20 " ,
. hw_id = 0xc2000001 ,
. hw_rev = 0x44 ,
. hw_ver_add = 0x1 ,
. layout_id = " 8Mmtk " ,
. hdr_ver = 3 ,
. flags = FLAG_LE_KERNEL_LA_EP
} , {
. id = " ArcherC20i " ,
. hw_id = 0xc2000001 ,
. hw_rev = 58 ,
. layout_id = " 8Mmtk " ,
. hdr_ver = 3 ,
. flags = FLAG_LE_KERNEL_LA_EP ,
} , {
. id = " ArcherVR200V " ,
. hw_id = 0x73b70801 ,
. hw_rev = 0x2f ,
. layout_id = " 16Mltq " ,
. hdr_ver = 2 ,
} , {
. id = " ArcherC50 " ,
. hw_id = 0xc7500001 ,
. hw_rev = 69 ,
. layout_id = " 8Mmtk " ,
. hdr_ver = 3 ,
. flags = FLAG_LE_KERNEL_LA_EP ,
} , {
. id = " ArcherMR200 " ,
. hw_id = 0xd7500001 ,
. hw_rev = 0x4a ,
. layout_id = " 8MLmtk " ,
. hdr_ver = 3 ,
. flags = FLAG_LE_KERNEL_LA_EP ,
} , {
. id = " TL-WR840NV4 " ,
. hw_id = 0x08400004 ,
. hw_rev = 0x1 ,
. hw_ver_add = 0x4 ,
. layout_id = " 8Mmtk " ,
. hdr_ver = 3 ,
. flags = FLAG_LE_KERNEL_LA_EP ,
} , {
. id = " TL-WR841NV13 " ,
. hw_id = 0x08410013 ,
. hw_rev = 0x268 ,
. hw_ver_add = 0x13 ,
. layout_id = " 8Mmtk " ,
. hdr_ver = 3 ,
. flags = FLAG_LE_KERNEL_LA_EP ,
} , {
/* terminating entry */
}
} ;
/*
* Message macros
*/
@ -256,34 +188,6 @@ static struct board_info boards[] = {
fprintf ( stderr , " [%s] " fmt " \n " , progname , # # __VA_ARGS__ ) ; \
} while ( 0 )
static struct board_info * find_board ( char * id )
{
struct board_info * ret ;
struct board_info * board ;
ret = NULL ;
for ( board = boards ; board - > id ! = NULL ; board + + ) {
if ( strcasecmp ( id , board - > id ) = = 0 ) {
ret = board ;
break ;
}
} ;
return ret ;
}
static struct board_info * find_board_by_hwid ( uint32_t hw_id )
{
struct board_info * board ;
for ( board = boards ; board - > id ! = NULL ; board + + ) {
if ( hw_id = = board - > hw_id )
return board ;
} ;
return NULL ;
}
static struct flash_layout * find_layout ( char * id )
{
struct flash_layout * ret ;
@ -309,7 +213,6 @@ static void usage(int status)
fprintf ( stream ,
" \n "
" Options: \n "
" -B <board> create image for the board specified with <board> \n "
" -c use combined kernel image \n "
" -e swap endianness in kernel load address and entry point \n "
" -E <ep> overwrite kernel entry point with <ep> (hexval prefixed with 0x) \n "
@ -406,23 +309,11 @@ static int check_options(void)
return - 1 ;
}
if ( board_id = = NULL & & opt_hw_id = = NULL ) {
ERR ( " either board or hardware id must be specified" ) ;
if ( opt_hw_id = = NULL ) {
ERR ( " hardware id must be specified " ) ;
return - 1 ;
}
if ( board_id ) {
board = find_board ( board_id ) ;
if ( board = = NULL ) {
ERR ( " unknown/unsupported board id \" %s \" " , board_id ) ;
return - 1 ;
}
if ( layout_id = = NULL )
layout_id = board - > layout_id ;
if ( board - > hdr_ver )
hdr_ver = board - > hdr_ver ;
} else {
board = & custom_board ;
if ( layout_id = = NULL ) {
@ -434,7 +325,6 @@ static int check_options(void)
board - > hw_rev = 1 ;
board - > hw_ver_add = 0 ;
}
if ( opt_hw_rev )
board - > hw_rev = strtoul ( opt_hw_rev , NULL , 0 ) ;
@ -799,8 +689,6 @@ static int inspect_fw(void)
goto out_free_buf ;
hdr = ( struct fw_header * ) buf ;
board = find_board_by_hwid ( ntohl ( hdr - > hw_id ) ) ;
if ( ! board )
board = & custom_board ;
if ( board - > flags & FLAG_LE_KERNEL_LA_EP ) {
@ -853,22 +741,12 @@ static int inspect_fw(void)
inspect_fw_pstr ( " Firmware version " , hdr - > fw_version ) ;
if ( board ! = & custom_board ) {
layout = find_layout ( board - > layout_id ) ;
inspect_fw_phexpost ( " Hardware ID " ,
ntohl ( hdr - > hw_id ) , board - > id ) ;
inspect_fw_phexexp ( " Hardware Revision " ,
ntohl ( hdr - > hw_rev ) , board - > hw_rev ) ;
inspect_fw_phexexp ( " Additional HW Version " ,
ntohl ( hdr - > hw_ver_add ) , board - > hw_ver_add ) ;
} else {
inspect_fw_phexpost ( " Hardware ID " ,
ntohl ( hdr - > hw_id ) , " unknown " ) ;
inspect_fw_phex ( " Hardware Revision " ,
ntohl ( hdr - > hw_rev ) ) ;
inspect_fw_phex ( " Additional HW Version " ,
ntohl ( hdr - > hw_ver_add ) ) ;
}
printf ( " %-23s: %d.%d.%d-%d.%d \n " , " Software version " ,
hdr - > ver_hi , hdr - > ver_mid , hdr - > ver_lo ,
@ -880,24 +758,12 @@ static int inspect_fw(void)
ntohl ( hdr - > kernel_ofs ) ) ;
inspect_fw_phexdec ( " Kernel data length " ,
ntohl ( hdr - > kernel_len ) ) ;
if ( board ! = & custom_board ) {
inspect_fw_phexdef ( " Kernel load address " ,
ntohl ( hdr - > kernel_la ) ,
layout ? layout - > kernel_la : 0xffffffff ) ;
inspect_fw_phexdef ( " Kernel entry point " ,
ntohl ( hdr - > kernel_ep ) ,
layout ? layout - > kernel_ep : 0xffffffff ) ;
inspect_fw_phexdecdef ( " Rootfs data offset " ,
ntohl ( hdr - > rootfs_ofs ) ,
layout ? layout - > rootfs_ofs : 0xffffffff ) ;
} else {
inspect_fw_phex ( " Kernel load address " ,
ntohl ( hdr - > kernel_la ) ) ;
inspect_fw_phex ( " Kernel entry point " ,
ntohl ( hdr - > kernel_ep ) ) ;
inspect_fw_phexdec ( " Rootfs data offset " ,
ntohl ( hdr - > rootfs_ofs ) ) ;
}
inspect_fw_phexdec ( " Rootfs data length " ,
ntohl ( hdr - > rootfs_len ) ) ;
inspect_fw_phexdec ( " Boot loader data offset " ,
@ -962,7 +828,7 @@ int main(int argc, char *argv[])
while ( 1 ) {
int c ;
c = getopt ( argc , argv , " a:B: H:E:F:L:V:N:W:w:ci:k:r:R:o:xhsjv:y:T:e " ) ;
c = getopt ( argc , argv , " a:H:E:F:L:V:N:W:w:ci:k:r:R:o:xhsjv:y:T:e " ) ;
if ( c = = - 1 )
break ;
@ -970,9 +836,6 @@ int main(int argc, char *argv[])
case ' a ' :
sscanf ( optarg , " 0x%x " , & rootfs_align ) ;
break ;
case ' B ' :
board_id = optarg ;
break ;
case ' H ' :
opt_hw_id = optarg ;
break ;