forked from len0rd/rockbox
scsitools: add nwz firmware upgrade scsi command
Change-Id: Iaebb442611c64fe4d47a07ce3b3d12c3230cafe5
This commit is contained in:
parent
12862df624
commit
02f67224f9
1 changed files with 24 additions and 0 deletions
|
@ -595,6 +595,29 @@ int get_dev_info(int argc, char **argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int do_fw_upgrade(int argc, char **argv)
|
||||||
|
{
|
||||||
|
(void) argc;
|
||||||
|
(void )argv;
|
||||||
|
uint8_t cdb[12] = {0xfc, 0, 0x04, 'd', 'b', 'm', 'n', 0, 0x80, 0, 0, 0};
|
||||||
|
|
||||||
|
char *buffer = buffer_alloc(0x81);
|
||||||
|
int buffer_size = 0x80;
|
||||||
|
uint8_t sense[32];
|
||||||
|
int sense_size = 32;
|
||||||
|
|
||||||
|
int ret = do_scsi(cdb, 12, DO_READ, sense, &sense_size, buffer, &buffer_size);
|
||||||
|
if(ret < 0)
|
||||||
|
return ret;
|
||||||
|
ret = do_sense_analysis(ret, sense, sense_size);
|
||||||
|
if(ret)
|
||||||
|
return ret;
|
||||||
|
buffer[buffer_size] = 0;
|
||||||
|
cprintf_field("Result:", "\n");
|
||||||
|
print_hex(buffer, buffer_size);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
typedef int (*cmd_fn_t)(int argc, char **argv);
|
typedef int (*cmd_fn_t)(int argc, char **argv);
|
||||||
|
|
||||||
struct cmd_t
|
struct cmd_t
|
||||||
|
@ -611,6 +634,7 @@ struct cmd_t cmd_list[] =
|
||||||
{ "get_dpcc_prop", "Get DPCC property", get_dpcc_prop },
|
{ "get_dpcc_prop", "Get DPCC property", get_dpcc_prop },
|
||||||
{ "get_user_time", "Get user time", get_user_time },
|
{ "get_user_time", "Get user time", get_user_time },
|
||||||
{ "get_dev_info", "Get device info", get_dev_info },
|
{ "get_dev_info", "Get device info", get_dev_info },
|
||||||
|
{ "do_fw_upgrade", "Do a firmware upgrade", do_fw_upgrade },
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NR_CMDS (sizeof(cmd_list) / sizeof(cmd_list[0]))
|
#define NR_CMDS (sizeof(cmd_list) / sizeof(cmd_list[0]))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue