Message ID | 1400873087-20921-1-git-send-email-swarren@wwwdotorg.org |
---|---|
State | Accepted |
Delegated to: | Pantelis Antoniou |
Headers | show |
On 05/23/2014 01:24 PM, Stephen Warren wrote: > From: Stephen Warren <swarren@nvidia.com> > > This allows callers to inject mmc->has_init = 0 between finding the > MMC device, and calling mmc_init(), which forces mmc_init() to rescan > the HW. Future changes will use this feature. Pantelis, does this series look good?
Hi, Stephen. Your patch-set looks good to me. Acked-by: Jaehoon Chung <jh80.chung@samsung.com> If card didn't insert, can we display the other log instead of the below log? #mmc rescan #mmc dev 1 "Card did not respond to voltage select!" Best Regards, Jaehoon Chung On 05/31/2014 06:12 AM, Stephen Warren wrote: > On 05/23/2014 01:24 PM, Stephen Warren wrote: >> From: Stephen Warren <swarren@nvidia.com> >> >> This allows callers to inject mmc->has_init = 0 between finding the >> MMC device, and calling mmc_init(), which forces mmc_init() to rescan >> the HW. Future changes will use this feature. > > Pantelis, does this series look good? > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot >
On 06/01/2014 10:59 PM, Jaehoon Chung wrote: > Hi, Stephen. > > Your patch-set looks good to me. > > Acked-by: Jaehoon Chung <jh80.chung@samsung.com> > > If card didn't insert, can we display the other log instead of the below log? > > #mmc rescan > #mmc dev 1 > "Card did not respond to voltage select!" Some SD slots have a "card detect" GPIO or similar, so it might be possible to do that. Of course, not all slots have that, and I don't know how to differentiate "card not present" from "command timed out". Is there a defined way to do that?
On 05/30/2014 03:12 PM, Stephen Warren wrote: > On 05/23/2014 01:24 PM, Stephen Warren wrote: >> From: Stephen Warren <swarren@nvidia.com> >> >> This allows callers to inject mmc->has_init = 0 between finding the >> MMC device, and calling mmc_init(), which forces mmc_init() to rescan >> the HW. Future changes will use this feature. > > Pantelis, does this series look good? Any comments?
Hi Stephen, On May 23, 2014, at 10:24 PM, Stephen Warren wrote: > From: Stephen Warren <swarren@nvidia.com> > > This allows callers to inject mmc->has_init = 0 between finding the > MMC device, and calling mmc_init(), which forces mmc_init() to rescan > the HW. Future changes will use this feature. > > Signed-off-by: Stephen Warren <swarren@nvidia.com> > --- > > common/cmd_mmc.c | 26 ++++++++++++++------------ > 1 file changed, 14 insertions(+), 12 deletions(-) > > diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c > index 9e6a26fe62a2..6741ebee3bca 100644 > --- a/common/cmd_mmc.c > +++ b/common/cmd_mmc.c > @@ -92,7 +92,7 @@ static void print_mmcinfo(struct mmc *mmc) > > printf("Bus Width: %d-bit\n", mmc->bus_width); > } > -static struct mmc *init_mmc_device(int dev) > +static struct mmc *init_mmc_device(int dev, bool force_init) > { > struct mmc *mmc; > mmc = find_mmc_device(dev); > @@ -100,6 +100,8 @@ static struct mmc *init_mmc_device(int dev) > printf("no mmc device at slot %x\n", dev); > return NULL; > } > + if (force_init) > + mmc->has_init = 0; > if (mmc_init(mmc)) > return NULL; > return mmc; > @@ -117,7 +119,7 @@ static int do_mmcinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) > } > } > > - mmc = init_mmc_device(curr_device); > + mmc = init_mmc_device(curr_device, false); > if (!mmc) > return CMD_RET_FAILURE; > > @@ -247,7 +249,7 @@ static int do_mmcrpmb(cmd_tbl_t *cmdtp, int flag, > if (flag == CMD_FLAG_REPEAT && !cp->repeatable) > return CMD_RET_SUCCESS; > > - mmc = init_mmc_device(curr_device); > + mmc = init_mmc_device(curr_device, false); > if (!mmc) > return CMD_RET_FAILURE; > > @@ -292,7 +294,7 @@ static int do_mmc_read(cmd_tbl_t *cmdtp, int flag, > blk = simple_strtoul(argv[2], NULL, 16); > cnt = simple_strtoul(argv[3], NULL, 16); > > - mmc = init_mmc_device(curr_device); > + mmc = init_mmc_device(curr_device, false); > if (!mmc) > return CMD_RET_FAILURE; > > @@ -320,7 +322,7 @@ static int do_mmc_write(cmd_tbl_t *cmdtp, int flag, > blk = simple_strtoul(argv[2], NULL, 16); > cnt = simple_strtoul(argv[3], NULL, 16); > > - mmc = init_mmc_device(curr_device); > + mmc = init_mmc_device(curr_device, false); > if (!mmc) > return CMD_RET_FAILURE; > > @@ -348,7 +350,7 @@ static int do_mmc_erase(cmd_tbl_t *cmdtp, int flag, > blk = simple_strtoul(argv[1], NULL, 16); > cnt = simple_strtoul(argv[2], NULL, 16); > > - mmc = init_mmc_device(curr_device); > + mmc = init_mmc_device(curr_device, false); > if (!mmc) > return CMD_RET_FAILURE; > > @@ -387,7 +389,7 @@ static int do_mmc_part(cmd_tbl_t *cmdtp, int flag, > block_dev_desc_t *mmc_dev; > struct mmc *mmc; > > - mmc = init_mmc_device(curr_device); > + mmc = init_mmc_device(curr_device, false); > if (!mmc) > return CMD_RET_FAILURE; > > @@ -422,7 +424,7 @@ static int do_mmc_dev(cmd_tbl_t *cmdtp, int flag, > return CMD_RET_USAGE; > } > > - mmc = init_mmc_device(dev); > + mmc = init_mmc_device(dev, false); > if (!mmc) > return CMD_RET_FAILURE; > > @@ -462,7 +464,7 @@ static int do_mmc_bootbus(cmd_tbl_t *cmdtp, int flag, > reset = simple_strtoul(argv[3], NULL, 10); > mode = simple_strtoul(argv[4], NULL, 10); > > - mmc = init_mmc_device(dev); > + mmc = init_mmc_device(dev, false); > if (!mmc) > return CMD_RET_FAILURE; > > @@ -487,7 +489,7 @@ static int do_mmc_boot_resize(cmd_tbl_t *cmdtp, int flag, > bootsize = simple_strtoul(argv[2], NULL, 10); > rpmbsize = simple_strtoul(argv[3], NULL, 10); > > - mmc = init_mmc_device(dev); > + mmc = init_mmc_device(dev, false); > if (!mmc) > return CMD_RET_FAILURE; > > @@ -520,7 +522,7 @@ static int do_mmc_partconf(cmd_tbl_t *cmdtp, int flag, > part_num = simple_strtoul(argv[3], NULL, 10); > access = simple_strtoul(argv[4], NULL, 10); > > - mmc = init_mmc_device(dev); > + mmc = init_mmc_device(dev, false); > if (!mmc) > return CMD_RET_FAILURE; > > @@ -555,7 +557,7 @@ static int do_mmc_rst_func(cmd_tbl_t *cmdtp, int flag, > return CMD_RET_USAGE; > } > > - mmc = init_mmc_device(dev); > + mmc = init_mmc_device(dev, false); > if (!mmc) > return CMD_RET_FAILURE; > > -- > 1.8.1.5 > Looks fine. I have a slight preference for not using bools in C code, but I see it's already creeping in the codebase. I'll apply it as is, and if we have any complaints by people using really ancient compilers I'll convert to int. Thanks, applied. -- Pantelis Acked-by: Pantelis Antoniou <panto@antoniou-consulting.com>
diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c index 9e6a26fe62a2..6741ebee3bca 100644 --- a/common/cmd_mmc.c +++ b/common/cmd_mmc.c @@ -92,7 +92,7 @@ static void print_mmcinfo(struct mmc *mmc) printf("Bus Width: %d-bit\n", mmc->bus_width); } -static struct mmc *init_mmc_device(int dev) +static struct mmc *init_mmc_device(int dev, bool force_init) { struct mmc *mmc; mmc = find_mmc_device(dev); @@ -100,6 +100,8 @@ static struct mmc *init_mmc_device(int dev) printf("no mmc device at slot %x\n", dev); return NULL; } + if (force_init) + mmc->has_init = 0; if (mmc_init(mmc)) return NULL; return mmc; @@ -117,7 +119,7 @@ static int do_mmcinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } } - mmc = init_mmc_device(curr_device); + mmc = init_mmc_device(curr_device, false); if (!mmc) return CMD_RET_FAILURE; @@ -247,7 +249,7 @@ static int do_mmcrpmb(cmd_tbl_t *cmdtp, int flag, if (flag == CMD_FLAG_REPEAT && !cp->repeatable) return CMD_RET_SUCCESS; - mmc = init_mmc_device(curr_device); + mmc = init_mmc_device(curr_device, false); if (!mmc) return CMD_RET_FAILURE; @@ -292,7 +294,7 @@ static int do_mmc_read(cmd_tbl_t *cmdtp, int flag, blk = simple_strtoul(argv[2], NULL, 16); cnt = simple_strtoul(argv[3], NULL, 16); - mmc = init_mmc_device(curr_device); + mmc = init_mmc_device(curr_device, false); if (!mmc) return CMD_RET_FAILURE; @@ -320,7 +322,7 @@ static int do_mmc_write(cmd_tbl_t *cmdtp, int flag, blk = simple_strtoul(argv[2], NULL, 16); cnt = simple_strtoul(argv[3], NULL, 16); - mmc = init_mmc_device(curr_device); + mmc = init_mmc_device(curr_device, false); if (!mmc) return CMD_RET_FAILURE; @@ -348,7 +350,7 @@ static int do_mmc_erase(cmd_tbl_t *cmdtp, int flag, blk = simple_strtoul(argv[1], NULL, 16); cnt = simple_strtoul(argv[2], NULL, 16); - mmc = init_mmc_device(curr_device); + mmc = init_mmc_device(curr_device, false); if (!mmc) return CMD_RET_FAILURE; @@ -387,7 +389,7 @@ static int do_mmc_part(cmd_tbl_t *cmdtp, int flag, block_dev_desc_t *mmc_dev; struct mmc *mmc; - mmc = init_mmc_device(curr_device); + mmc = init_mmc_device(curr_device, false); if (!mmc) return CMD_RET_FAILURE; @@ -422,7 +424,7 @@ static int do_mmc_dev(cmd_tbl_t *cmdtp, int flag, return CMD_RET_USAGE; } - mmc = init_mmc_device(dev); + mmc = init_mmc_device(dev, false); if (!mmc) return CMD_RET_FAILURE; @@ -462,7 +464,7 @@ static int do_mmc_bootbus(cmd_tbl_t *cmdtp, int flag, reset = simple_strtoul(argv[3], NULL, 10); mode = simple_strtoul(argv[4], NULL, 10); - mmc = init_mmc_device(dev); + mmc = init_mmc_device(dev, false); if (!mmc) return CMD_RET_FAILURE; @@ -487,7 +489,7 @@ static int do_mmc_boot_resize(cmd_tbl_t *cmdtp, int flag, bootsize = simple_strtoul(argv[2], NULL, 10); rpmbsize = simple_strtoul(argv[3], NULL, 10); - mmc = init_mmc_device(dev); + mmc = init_mmc_device(dev, false); if (!mmc) return CMD_RET_FAILURE; @@ -520,7 +522,7 @@ static int do_mmc_partconf(cmd_tbl_t *cmdtp, int flag, part_num = simple_strtoul(argv[3], NULL, 10); access = simple_strtoul(argv[4], NULL, 10); - mmc = init_mmc_device(dev); + mmc = init_mmc_device(dev, false); if (!mmc) return CMD_RET_FAILURE; @@ -555,7 +557,7 @@ static int do_mmc_rst_func(cmd_tbl_t *cmdtp, int flag, return CMD_RET_USAGE; } - mmc = init_mmc_device(dev); + mmc = init_mmc_device(dev, false); if (!mmc) return CMD_RET_FAILURE;