On Fri, Mar 11, 2011 at 6:01 AM, Raffaele Recalcati <[email protected]> wrote: > From: Raffaele Recalcati <[email protected]> > > The first SEND_OP_COND (CMD1) command added is used to ask card capabilities. > After it an AND operation is done between card capabilities and host > capabilities (at the moment only for the voltage field). > Finally the correct value is sent to the MMC, waiting that the card > exits from busy state. > > Signed-off-by: Raffaele Recalcati <[email protected]> > --- > drivers/mmc/mmc.c | 19 +++++++++++++++++-- > include/mmc.h | 2 ++ > 2 files changed, 19 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c > index fc1792a..5bea476 100644 > --- a/drivers/mmc/mmc.c > +++ b/drivers/mmc/mmc.c > @@ -351,17 +351,32 @@ sd_send_op_cond(struct mmc *mmc) > > int mmc_send_op_cond(struct mmc *mmc) > { > - int timeout = 1000; > + int timeout = 10000; > struct mmc_cmd cmd; > int err; > > /* Some cards seem to need this */ > mmc_go_idle(mmc); > > + /* Asking to the card its capabilities */ > + cmd.cmdidx = MMC_CMD_SEND_OP_COND; > + cmd.resp_type = MMC_RSP_R3; > + cmd.cmdarg = 0; > + cmd.flags = 0; > + > + err = mmc_send_cmd(mmc, &cmd, NULL); > + > + if (err) > + return err; > + > + udelay(1000); > + > do { > cmd.cmdidx = MMC_CMD_SEND_OP_COND; > cmd.resp_type = MMC_RSP_R3; > - cmd.cmdarg = OCR_HCS | mmc->voltages; > + cmd.cmdarg = ((mmc->voltages & > + (cmd.response[0] & OCR_VOLTAGE_MASK)) | > + (cmd.response[0] & OCR_ACCESS_MODE));
My concern here is that OCR_HCS has been dropped. I thought it was necessary to query the HCS abilities. I'm guessing I'm missing something, or that it's not needed, so I will apply this patch, and we'll see if anyone has issues. Andy _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

