Thread (17 messages) 17 messages, 3 authors, 2015-09-14

sdhci: runtime suspend/resume on card insert/removal

From: Jisheng Zhang <hidden>
Date: 2015-09-10 08:04:02
Also in: linux-mmc

Hi Russell,

On Thu, 10 Sep 2015 09:02:33 +0100
Russell King - ARM Linux [off-list ref] wrote:
On Thu, Sep 10, 2015 at 03:31:29PM +0800, Jisheng Zhang wrote:
quoted
Hi Vaibhav,

On Thu, 10 Sep 2015 12:40:48 +0530
Vaibhav Hiremath [off-list ref] wrote:
quoted
Hi,

During my testing of SDHCI-PXAV3 driver on Marvell's pxa1928
based platform, I observed that runtime PM suspend/resume is having
issues with card insertion and removal.

Let me try to explain it using execution sequence -

During boot:

MMC SD card gets detected as expected.

[    2.431012] mmc1: new high speed SDHC card at address 1234
[    2.437235] mmcblk1: mmc1:1234 SA04G 3.63 GiB
[    2.444841]  mmcblk1: p1


Now after coming to the linux prompt, if card removal event occurs
then the call sequence is -

  sdhci_irq() -->
   -> sdhci_thread_irq(): host->thread_isr - 0x80
      -> sdhci_card_event()
      -> mmc_detect_change()
         --> _mmc_detect_change()
             --->  mmc_sd_detect()
                   mmc_sd_remove()
                   mmc_remove_card()
                   mmc_bus_remove()
                   mmc_power_off()
                   mmc_set_initial_state()
                   sdhci_set_ios()
                   ...
        sdhci_pxav3_runtime_suspend()
        sdhci_runtime_suspend_host()


Till here everything looks perfect :) (if I got it right)

Now on card insertion again, the expectation is, runtime resume should
get called as part of interrupt trigger from the SDHCI controller on
card insertion.
AFAIK, card insertion => wakeup irq, this irq doesn't come from SDHCI
Wakeup IRQs are what happens when the _system_ is in suspend, not
when the device is runtime suspended.
Oh, yes. Sorry for misleading, I didn't express myself clearly. What
I really means is that the card insertion/remove irq which could finally
cause sdhci host resumed.

Thanks for clarification,
Jisheng
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help