Hi, On 07/03/2014 10:56 AM, Wills Wang wrote: > --- > drivers/mmc/sunxi_mmc.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) >
Thanks for the patch, I see that hno has already applied it to u-boot-sunxi, we're going to need to do the same upstream, but before I prepare a patch for upstream, I've a few questions: > diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c > index bbfe8a3..f0cb760 100644 > --- a/drivers/mmc/sunxi_mmc.c > +++ b/drivers/mmc/sunxi_mmc.c > @@ -173,8 +173,6 @@ static int mmc_core_init(struct mmc *mmc) > /* Reset controller */ > writel(SUNXI_MMC_GCTRL_RESET, &mmchost->reg->gctrl); > udelay(1000); > - /* Always read / write data through the CPU */ > - writel(SUNXI_MMC_GCTRL_ACCESS_BY_AHB, &mmchost->reg->gctrl); > > return 0; > } > @@ -189,6 +187,13 @@ static int mmc_trans_data_by_cpu(struct mmc *mmc, struct > mmc_data *data) > unsigned byte_cnt = data->blocksize * data->blocks; > unsigned timeout_msecs = 2000; > unsigned *buff = (unsigned int *)(reading ? data->dest : data->src); > + unsigned int gctrl; > + > + /* Always read / write data through the CPU */ > + gctrl = readl(&mmchost->reg->gctrl); > + gctrl &= ~SUNXI_MMC_GCTRL_ACCESS_BY_AHB; The above line seems redundant / unnecessary. > + gctrl |= SUNXI_MMC_GCTRL_ACCESS_BY_AHB; > + writel(gctrl, &mmchost->reg->gctrl); And why is it necessary to move this call at all ? The only reason I can think of why you need this is because of the writel(SUNXI_MMC_GCTRL_RESET, &mmchost->reg->gctrl); Done in mmc_send_cmd on error, that call really should also include a delay and as such should probably just be replaced with a call to mmc_core_init(). Can you try to build u-boot with your fix reverted and with the above line in mmc_send_cmd replaced with a call to mmc_core_init(), and see if that also fixes things ? If that does not fix things, can you please try u-boot with the redundant line I indicated a few lines back removed ? Thanks, Hans -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
