Re: [PATCH]mmc: set timeout for SDHCI host before sending busy cmds

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mar 9, 2011, at 6:29 PM, Jaehoon Chung wrote:

> Chuanxiao Dong wrote:
>> Hi all,
>>   From the previous discussion, I do not think we have got a clear conclusion
>>   about using maximum timeout value. At least we know from Jae hoon Chung
>>   using 0xE for every case is not a good. So I want to suggest only use 0xE for
>>   busy command. I personally preferred below implementation, which is similar
>>   with a RFC patch submitted by Jae hoon Chung, but only without adding a new
>>   quirk.
> 
> thanks for remind. 
> Yes, i tested without quirks, i think that is not problem.
> (Just sent RFC patch with quirks, because i want to ask how think about adding quirks or not).



Sorry I am confused.

Setting 0x0E all the time does not solve the problem and has side effects ?
What are the side effects ?

Using BUSY patch for 0x0e (below) works ?

> 
>> 
>>   I think sdhci_calc_timeout should be left for data transfer since at least we
>>   can get a warning if 0xE is not enough for host to use. And if the host
>>   controller and the card have no bugs, then the calculated timeout should be
>>   safe. Left the old implementation unchanged is also compatible with all
>>   existed host controllers and cards.
>> 
>>   But for busy command, we are not clear about how long is safe enough for
>>   waiting and there is also no function to do the calculation for them. So
>>   preferred just using 0xE. Below the patch and comment:
>> 
>> Set the timeout control register for SDHCI host when send some commands which
>> need busy signal. Use the maximum timeout value 0xE will be safe.
>> 
>> Signed-off-by: Chuanxiao Dong <chuanxiao.dong@xxxxxxxxx>
>> ---
>> drivers/mmc/host/sdhci.c |    9 ++++++++-
>> 1 files changed, 8 insertions(+), 1 deletions(-)
>> 
>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
>> index 99c372e..8306323 100644
>> --- a/drivers/mmc/host/sdhci.c
>> +++ b/drivers/mmc/host/sdhci.c
>> @@ -659,8 +659,15 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_data *data)
>> 
>> 	WARN_ON(host->data);
>> 
>> -	if (data == NULL)
>> +	if (data == NULL) {
>> +		/*
>> +		 * set the timeout to be maximum value for commands those with
>> +		 * busy signal
>> +		 */
>> +		if (host->cmd->flags & MMC_RSP_BUSY)
>> +			sdhci_writeb(host, 0xE, SDHCI_TIMEOUT_CONTROL);
>> 		return;
>> +	}
>> 
>> 	/* Sanity checks */
>> 	BUG_ON(data->blksz * data->blocks > 524288);
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux