Re: omap_hsmmc + gta04 + sdio irq + runtime_suspend + 4 bit = trouble

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

 



Hi,

On Fri, 7 Sep 2018 09:19:06 -0700
Tony Lindgren <tony@xxxxxxxxxxx> wrote:

> * Andreas Kemnade <andreas@xxxxxxxxxxxx> [180904 20:57]:
> > Ok, what fixes the problem:
> > use above mentioned devicetree, reverting 5b83b2234be6 and
> > applying this patch:  
> 
> Hmm well the Linux generic wakeirqs are known to work, so
> if there's a bug lurking around somewhere we should fix it
> naturally :)
> 
> But I'm wondering if you have some SDIO pins floating type
> issue when your device enters deeper idle states? And maybe
> your patches actually end up blocking the deeper idle states
> hiding the issue?
> 
I guess you have read my mails a bit too fast and overread many
details, so I try to sumarize
Summary:
sdio irq + blocked runtime suspend = works

sdio irq + pinctl wakeirq + 1 bit = works

sdio irq + pinctl wakeirq + 4 bit = does not work

sdio irq + wakeirq via remapped dat1 as gpio + 4 bit= works but too many
interrupts if wlan is down (*)

sdio irq + wakeirq via remapped dat1 as gpio + 4 bit -(=reverted)
generic_wakeirq_patch = does not work

sdio irq + wakeirq via remapped dat1 as gpio + 1 bit -(=reverted)
generic_wakeirq_patch + reordering some things = works

Note: works means: sane number of wake interrupts seen in a low-traffic
wlan, network traffic works reliable and performant.

And there are some interesting sections in the sdio simplificated spec
regarding 4 bit mode and irqs missing...

> If that's the case, you could define separate pinctrl
> idle and default states. You can grep for something like
> pinctrl-names = "default", "idle" for some examples.
> 
> I fairly regularly test the mainline kernel with omap3
> hitting off mode during idle with wlan connected and
> things are working for me with no issues and the device
> wakes to a ping over wlan just fine.

What sdio device are you testing 1bit or 4bit? with or without
level shifter in between?

At least I now have a working not-so-clean solution, so I have a base to
experiment and analyze to get a better solution.

(*) here probably comes into account that the wlan chip is powered of
and as a side effect dat1 gets low (through a level shifter).
As the generic wakeup irq is not turned off (contrary to the older
solution) when sdio irq is disabled, it will always runtime resume
quickly. 

Regards,
Andreas

Attachment: pgpEtCis4IrDX.pgp
Description: OpenPGP digital signature


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux