Re: sdhci_msm issues with cold-plugged SD cards

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

 



+ Bjorn, Sarthak, Veerabhadrarao

On Fri, 22 May 2020 at 17:51, Iskren Chernev <iskren.chernev@xxxxxxxxx> wrote:
>
>
> Hello,
>
> I'm trying to add SD Card support to a smartphone (Samsung Galaxy S5). After
> configuring the sdhci-msm driver through DT, it all seems to work fine except
> the case when the phone boots with the SD card inserted. If the card is
> re-inserted, or the driver is polling, or the probe code is forcefully executed
> a second time the card is properly detected.
>
> I logged the SD interrupts, commands and responses, and it looks like the
> hardware is returning Command Index Error and/or Command End Bit Error via the
> Error Interrupt Status Register, which gets converted to -EILSEQ error. On
> a second attempt (due to re-insertion, polling or re-execution) these errors
> are missing, and the card behaves correctly.
>
> On the downstream kernel, these errors resulting in EILSEQ do not appear, so it
> might be related to setup. Also I see that sdhci-msm driver has hardcoded
> a SDHCI_QUIRK_BROKEN_CARD_DETECTION quirk, which might imply that polling
> should be used (instead Card Detection GPIO), in which case this issue won't
> manifest itself. But polling wastes power, and the Card Detect pin works well,
> at least for this device, so I feel it can be made better.
>
> Any suggestions on how to track this down are appreciated!

I think the device is intended to be used with GPIO card detection.
Polling mode shouldn't be needed if there is GPIO.

Anyway, to me it sounds like the HW/controller isn't properly
initialized during ->probe(), but I can't help you much more than
that. I have looped in some of the recent active sdhci-msm developers
to see if they have some ideas that we can try.

Kind regards
Uffe



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

  Powered by Linux