From 02f67224f9c424bf9c3a613741adfccaf4847d12 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Mon, 12 Nov 2012 18:34:22 +0100 Subject: scsitools: add nwz firmware upgrade scsi command Change-Id: Iaebb442611c64fe4d47a07ce3b3d12c3230cafe5 --- utils/nwztools/scsitools/scsitool.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'utils/nwztools/scsitools') 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) 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); struct cmd_t @@ -611,6 +634,7 @@ struct cmd_t cmd_list[] = { "get_dpcc_prop", "Get DPCC property", get_dpcc_prop }, { "get_user_time", "Get user time", get_user_time }, { "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])) -- cgit v1.2.3