Message ID | 1479695060-27892-1-git-send-email-yuantian.tang@nxp.com |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
On 20 November 2016 at 19:24, <yuantian.tang@nxp.com> wrote: > From: Tang Yuantian <Yuantian.Tang@nxp.com> > > Commit d97dc8a0 separated the non-command code into its own file > which caused variable sata_curr_device can not be set to a correct > value. > > Before commit d97dc8a0, variable sata_curr_device can be set > correctly in sata_initialize(). > After commit d97dc8a0, sata_initialize() is moved out to its own file. > Accordingly, variable sata_curr_device is removed from sata_initialize() > too. This caused sata_curr_device never gets a chance to be set properly > which prevent other commands from being executed. > > This patch sets variable sata_curr_device properly. > > Fixes: d97dc8a0 (dm: sata: Separate the non-command code into its > own file) > > Signed-off-by: Tang Yuantian <yuantian.tang@nxp.com> > --- > v3: > - refine the commit message > v2: > - refined this patch and updated the commit title and message > > cmd/sata.c | 9 ++++++--- > common/sata.c | 8 +++++--- > 2 files changed, 11 insertions(+), 6 deletions(-) Reviewed-by: Simon Glass <sjg@chromium.org>
On Mon, Nov 21, 2016 at 10:24:20AM +0800, tang yuantian wrote: > From: Tang Yuantian <Yuantian.Tang@nxp.com> > > Commit d97dc8a0 separated the non-command code into its own file > which caused variable sata_curr_device can not be set to a correct > value. > > Before commit d97dc8a0, variable sata_curr_device can be set > correctly in sata_initialize(). > After commit d97dc8a0, sata_initialize() is moved out to its own file. > Accordingly, variable sata_curr_device is removed from sata_initialize() > too. This caused sata_curr_device never gets a chance to be set properly > which prevent other commands from being executed. > > This patch sets variable sata_curr_device properly. > > Fixes: d97dc8a0 (dm: sata: Separate the non-command code into its > own file) > > Signed-off-by: Tang Yuantian <yuantian.tang@nxp.com> > Reviewed-by: Simon Glass <sjg@chromium.org> Applied to u-boot/master, thanks!
diff --git a/cmd/sata.c b/cmd/sata.c index d18b523..f56622a 100644 --- a/cmd/sata.c +++ b/cmd/sata.c @@ -32,9 +32,12 @@ static int do_sata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } /* If the user has not yet run `sata init`, do it now */ - if (sata_curr_device == -1) - if (sata_initialize()) - return 1; + if (sata_curr_device == -1) { + rc = sata_initialize(); + if (rc == -1) + return rc; + sata_curr_device = rc; + } switch (argc) { case 0: diff --git a/common/sata.c b/common/sata.c index 88f08c9..42ff5c7 100644 --- a/common/sata.c +++ b/common/sata.c @@ -51,7 +51,7 @@ static unsigned long sata_bwrite(struct blk_desc *block_dev, lbaint_t start, int __sata_initialize(void) { - int rc; + int rc, ret = -1; int i; for (i = 0; i < CONFIG_SYS_SATA_MAX_DEVICE; i++) { @@ -71,12 +71,14 @@ int __sata_initialize(void) if (!rc) { rc = scan_sata(i); if (!rc && sata_dev_desc[i].lba > 0 && - sata_dev_desc[i].blksz > 0) + sata_dev_desc[i].blksz > 0) { part_init(&sata_dev_desc[i]); + ret = i; + } } } - return rc; + return ret; } int sata_initialize(void) __attribute__((weak, alias("__sata_initialize")));