diff options
author | Josua Mayer <josua@solid-run.com> | 2023-05-05 11:20:49 +0300 |
---|---|---|
committer | Stefan Roese <sr@denx.de> | 2023-05-08 10:47:13 +0200 |
commit | fa0af90a0ebd3557490640798ea4f5fad211d382 (patch) | |
tree | 5c196a3493503ff0ca1ef1dad14328df5def354f | |
parent | f6eff35b8c19dba52519fa0bbd0977787a9dbe8b (diff) | |
download | u-boot-fa0af90a0ebd3557490640798ea4f5fad211d382.zip u-boot-fa0af90a0ebd3557490640798ea4f5fad211d382.tar.gz u-boot-fa0af90a0ebd3557490640798ea4f5fad211d382.tar.bz2 |
cmd: tlv_eeprom: enable 'dev' subcommand before 'read'
Move the handler for "tlv_eeprom dev X" command to the beginning of
do_tlv_eeprom, to allow using it before issuing a "read" command for
currently selected eeprom.
Also remove the check if eeprom exists, since that can only work after
the first execution of read_eeprom triggered device lookup.
Instead accept values up to the defined array size (MAX_TLV_DEVICES).
Signed-off-by: Josua Mayer <josua@solid-run.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Cc: Stefan Roese <sr@denx.de>
Cc: Baruch Siach <baruch@tkos.co.il>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
-rw-r--r-- | cmd/tlv_eeprom.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/cmd/tlv_eeprom.c b/cmd/tlv_eeprom.c index 636c1fe..7979639 100644 --- a/cmd/tlv_eeprom.c +++ b/cmd/tlv_eeprom.c @@ -450,6 +450,22 @@ int do_tlv_eeprom(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) // "reset" will both be treated as "read". cmd = argv[1][0]; + // select device + if (cmd == 'd') { + /* 'dev' command */ + unsigned int devnum; + + devnum = simple_strtoul(argv[2], NULL, 0); + if (devnum >= MAX_TLV_DEVICES) { + printf("Invalid device number\n"); + return 0; + } + current_dev = devnum; + has_been_read = 0; + + return 0; + } + // Read the EEPROM contents if (cmd == 'r') { has_been_read = 0; @@ -508,16 +524,6 @@ int do_tlv_eeprom(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) tlvinfo_delete_tlv(eeprom, tcode); if (argc == 4) tlvinfo_add_tlv(eeprom, tcode, argv[3]); - } else if (cmd == 'd') { /* 'dev' command */ - unsigned int devnum; - - devnum = simple_strtoul(argv[2], NULL, 0); - if (devnum > MAX_TLV_DEVICES || !tlv_devices[devnum]) { - printf("Invalid device number\n"); - return 0; - } - current_dev = devnum; - has_been_read = 0; } else { return CMD_RET_USAGE; } |