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:
Amaury Pouly 2020-05-17 20:17:14 +02:00
parent 1686093e78
commit f86723716c

View file

@ -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;