diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2012-11-12 18:34:22 +0100 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2012-11-13 18:25:00 +0100 |
commit | 02f67224f9c424bf9c3a613741adfccaf4847d12 (patch) | |
tree | 6bcb1be43e273642a4e6ca3c0d9be4512c7a73da /utils/nwztools/scsitools | |
parent | 12862df624c0b5ee01845b21e3b480c6c68f7300 (diff) | |
download | rockbox-02f67224f9c424bf9c3a613741adfccaf4847d12.tar.gz rockbox-02f67224f9c424bf9c3a613741adfccaf4847d12.zip |
scsitools: add nwz firmware upgrade scsi command
Change-Id: Iaebb442611c64fe4d47a07ce3b3d12c3230cafe5
Diffstat (limited to 'utils/nwztools/scsitools')
-rw-r--r-- | utils/nwztools/scsitools/scsitool.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/utils/nwztools/scsitools/scsitool.c b/utils/nwztools/scsitools/scsitool.c index 69e3ac8af1..9f241117af 100644 --- a/utils/nwztools/scsitools/scsitool.c +++ b/utils/nwztools/scsitools/scsitool.c | |||
@@ -595,6 +595,29 @@ int get_dev_info(int argc, char **argv) | |||
595 | return 0; | 595 | return 0; |
596 | } | 596 | } |
597 | 597 | ||
598 | int do_fw_upgrade(int argc, char **argv) | ||
599 | { | ||
600 | (void) argc; | ||
601 | (void )argv; | ||
602 | uint8_t cdb[12] = {0xfc, 0, 0x04, 'd', 'b', 'm', 'n', 0, 0x80, 0, 0, 0}; | ||
603 | |||
604 | char *buffer = buffer_alloc(0x81); | ||
605 | int buffer_size = 0x80; | ||
606 | uint8_t sense[32]; | ||
607 | int sense_size = 32; | ||
608 | |||
609 | int ret = do_scsi(cdb, 12, DO_READ, sense, &sense_size, buffer, &buffer_size); | ||
610 | if(ret < 0) | ||
611 | return ret; | ||
612 | ret = do_sense_analysis(ret, sense, sense_size); | ||
613 | if(ret) | ||
614 | return ret; | ||
615 | buffer[buffer_size] = 0; | ||
616 | cprintf_field("Result:", "\n"); | ||
617 | print_hex(buffer, buffer_size); | ||
618 | return 0; | ||
619 | } | ||
620 | |||
598 | typedef int (*cmd_fn_t)(int argc, char **argv); | 621 | typedef int (*cmd_fn_t)(int argc, char **argv); |
599 | 622 | ||
600 | struct cmd_t | 623 | struct cmd_t |
@@ -611,6 +634,7 @@ struct cmd_t cmd_list[] = | |||
611 | { "get_dpcc_prop", "Get DPCC property", get_dpcc_prop }, | 634 | { "get_dpcc_prop", "Get DPCC property", get_dpcc_prop }, |
612 | { "get_user_time", "Get user time", get_user_time }, | 635 | { "get_user_time", "Get user time", get_user_time }, |
613 | { "get_dev_info", "Get device info", get_dev_info }, | 636 | { "get_dev_info", "Get device info", get_dev_info }, |
637 | { "do_fw_upgrade", "Do a firmware upgrade", do_fw_upgrade }, | ||
614 | }; | 638 | }; |
615 | 639 | ||
616 | #define NR_CMDS (sizeof(cmd_list) / sizeof(cmd_list[0])) | 640 | #define NR_CMDS (sizeof(cmd_list) / sizeof(cmd_list[0])) |