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.

Reply via email to