forked from len0rd/rockbox
nwztools/scsitool: add alternative firmware upgrade command
Newer devices seem to require flags 0x00 where older devices wanted 0x80, now try both variants Change-Id: Ifeee641052857c66c1b64860d7309a235021a168
This commit is contained in:
parent
1686093e78
commit
f86723716c
1 changed files with 11 additions and 3 deletions
|
|
@ -757,13 +757,13 @@ int get_dhp(int argc, char **argv)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int do_fw_upgrade(int argc, char **argv)
|
||||
int try_fw_upgrade(unsigned flags, int argc, char **argv)
|
||||
{
|
||||
(void) argc;
|
||||
(void )argv;
|
||||
(void) argv;
|
||||
/* older devices may have used subcommand 3 instead of 4, but this is not
|
||||
* supported by any device I have seen */
|
||||
uint8_t cdb[12] = {0xfc, 0, 0x04, 'd', 'b', 'm', 'n', 0, 0x80, 0, 0, 0};
|
||||
uint8_t cdb[12] = {0xfc, 0, 0x04, 'd', 'b', 'm', 'n', 0, flags, 0, 0, 0};
|
||||
|
||||
char *buffer = malloc(0x81);
|
||||
int buffer_size = 0x80;
|
||||
|
|
@ -789,6 +789,14 @@ int do_fw_upgrade(int argc, char **argv)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int do_fw_upgrade(int argc, char **argv)
|
||||
{
|
||||
if(!try_fw_upgrade(0x80, argc, argv))
|
||||
return 0;
|
||||
cprintf(GREY, "Trying alternative firmware upgrade command...\n");
|
||||
return try_fw_upgrade(0, argc, argv);
|
||||
}
|
||||
|
||||
static struct
|
||||
{
|
||||
unsigned long dest;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue