[U-Boot] [PATCH] i.MX: fsl_esdhc: allow use with cache enabled.

Eric Nelson eric.nelson at boundarydevices.com
Sat Mar 24 23:36:14 CET 2012


Hi Stefano,

Sorry I let this linger.

On 03/17/2012 03:50 AM, Stefano Babic wrote:
> On 03/03/2012 23:37, Eric Nelson wrote:
>> Signed-off-by: Eric Nelson<eric.nelson at boundarydevices.com>
>> ---
>
> Hi Eric,
>
> I have added Andy in CC as MMC Maintainer
>
>>   drivers/mmc/fsl_esdhc.c |   12 +++++++++++-
>>   1 files changed, 11 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
>> index a2f35e3..8e4bcef 100644
>> --- a/drivers/mmc/fsl_esdhc.c
>> +++ b/drivers/mmc/fsl_esdhc.c
>> @@ -190,6 +190,8 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)
>>   		esdhc_clrsetbits32(&regs->wml, WML_RD_WML_MASK, wml_value);
>>   		esdhc_write32(&regs->dsaddr, (u32)data->dest);
>>   	} else {
>> +                flush_dcache_range((ulong)data->src,(ulong)data->src+data->blocks*data->blocksize);
>
> This breaks PowerPC boards.
>

Can you tell me how?

AFAIK, blocksize needs to be a multiple of 512 so this should be cache-safe with
any cacheline size.

>> +
>>   		if (wml_value>  WML_WR_WML_MAX)
>>   			wml_value = WML_WR_WML_MAX_VAL;
>>   		if ((esdhc_read32(&regs->prsstat)&  PRSSTAT_WPSPL) == 0) {
>> @@ -249,7 +251,12 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)
>>   	return 0;
>>   }
>>
>> -
>> +static void check_and_invalidate_dcache_range(struct mmc_cmd *cmd, struct mmc_data *data) {
>> +	unsigned start = data->dest ;
>
> A cast is missing, a warning is generated.
>

Yep. I recognized that right **after** I hit <send>...

If you can give me some guidance on the comment above, I'll address with a V2.

Regards,


Eric



More information about the U-Boot mailing list