diff options
author | Ye Li <ye.li@nxp.com> | 2017-05-24 02:12:04 -0500 |
---|---|---|
committer | Ye Li <ye.li@nxp.com> | 2017-05-24 03:21:53 -0500 |
commit | 2bfe86770d875de180f698a65371417d7cd67c43 (patch) | |
tree | 40b28a48a0b2a8b685dbac735fcfdc972fbb7d74 | |
parent | a4461cb2d050d7556fb163b8241a05a76ec42e69 (diff) | |
download | u-boot-imx-2bfe86770d875de180f698a65371417d7cd67c43.zip u-boot-imx-2bfe86770d875de180f698a65371417d7cd67c43.tar.gz u-boot-imx-2bfe86770d875de180f698a65371417d7cd67c43.tar.bz2 |
MLK-14930-1 cmd: sata: Fix sata init and stop issue
When sata stop is executed, the sata_curr_device is not reset to -1, so
any following sata commands will not initialize the sata again and cause
problem.
Additional, in sata init implementation, the sata_curr_device should be updated,
otherwise sata will be initialized again when doing other sata commands like
read/write/info/part/device.
Signed-off-by: Ye Li <ye.li@nxp.com>
(cherry picked from commit e2a66807f3573e8344dcd285dcb7d53f0e5fcf8e)
-rw-r--r-- | cmd/sata.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -21,15 +21,21 @@ static int do_sata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int rc = 0; - if (argc == 2 && strcmp(argv[1], "stop") == 0) + if (argc == 2 && strcmp(argv[1], "stop") == 0) { + sata_curr_device = -1; return sata_stop(); + } if (argc == 2 && strcmp(argv[1], "init") == 0) { if (sata_curr_device != -1) sata_stop(); - return (sata_initialize() < 0) ? - CMD_RET_FAILURE : CMD_RET_SUCCESS; + rc = sata_initialize(); + if (rc == -1) + return CMD_RET_FAILURE; + + sata_curr_device = rc; + return CMD_RET_SUCCESS; } /* If the user has not yet run `sata init`, do it now */ |