On Feb 6, 2011, at 3:13 AM, Albert Herranz wrote:

> Hi,
> 
> On 02/06/2011 02:35 AM, Philip Rakity wrote:
>> 
>> proposed solution:  I cannot verify this fix until Monday.
>> =====
>> 
>> CMD52 is a reset for SDIO cards.  CMD0 is not sufficient when
>> the card is being re-initialized.  Only send CMD52 if
>> a) doing a reinitialize
>> b) card is SDIO or SDIO_COMBO
>> 
>> Signed-off-by: Philip Rakity <[email protected]>
>> ---
>> drivers/mmc/core/core.c |    7 ++++++-
>> 1 files changed, 6 insertions(+), 1 deletions(-)
>> 
>> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
>> index 30d4da4..f0ce6f6 100644
>> --- a/drivers/mmc/core/core.c
>> +++ b/drivers/mmc/core/core.c
>> @@ -1521,7 +1521,12 @@ static int mmc_rescan_try_freq(struct mmc_host *host, 
>> unsigned freq)
>>              mmc_hostname(host), __func__, host->f_init);
>> #endif
>>      mmc_power_up(host);
>> -    sdio_reset(host);
>> +
>> +    /* reset sdio before CMD0 when card is being reinitialized */
>> +    if (host->card &&
>> +            (host->card->type == MMC_TYPE_SDIO ||
>> +            host->card->type == MMC_TYPE_SD_COMBO))
>> +                    sdio_reset(host);
>>      mmc_go_idle(host);
>>      mmc_hwungate_clock(host);
>> 
> 
> At least on the Nintendo Wii, a platform reset _does not_ reset the SDIO 
> hardware, and there is no known way to power-off/power-on it.
> So, in some cases like after a system reboot, we need to issue a CMD52 before 
> a CMD0 (even if on that particular case host->card is NULL) to properly reset 
> the Nintendo Wii SDIO-based Wireless LAN card from its previous state, 
> otherwise the card is not detected.
> 
> The proposed fix breaks this and makes the card unavailable after a system 
> reboot.
> 
> If you are concerned about unconditionally issuing a CMD52 then we can use a 
> quirk to make sure that we always perform a SDIO reset at least for the 
> Nintendo Wii.

Would be happy with either a quirk or comment in the code.   Comment seems 
easiest.

/* sdhci_reset will generate CMD52 to reset card.  SD/eMMC cards are ignore 
this */

or something like that.
> 
> Cheers,
> Albert



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

Reply via email to