[Letux-kernel] omap_hsmmc + gta04 + sdio irq + runtime_suspend + 4 bit = trouble

Tony Lindgren tony at atomide.com
Thu Oct 4 17:02:25 CEST 2018


Hi,

* Andreas Kemnade <andreas at kemnade.info> [180926 21:16]:
> With the dirty letux patch (enabling SDIO_IRQ and adding a pair of
> pm_runtime_get_sync()/put() in omap_hsmmc_enable_sdio_irq()),
> the values are 30mA and > 1000KByte/s.
> The wifi chip (with libertas driver) just behaves better with low
> latency sdio irq.

Hmm so what is this sdio patch? We've had omap_hsmmc working for
years with sdio dat1 interrupt and waking to interrupts from off
idle as long as the wakeirq is configured with interrupts-extended
in the dts file. For omap3, there should not be any remuxing to
gpio needed, only am335x needs that. Maybe I just don't follow
you here :)

> On Fri, 7 Sep 2018 10:08:50 -0700
> Tony Lindgren <tony at atomide.com> wrote:
> 
> > * Andreas Kemnade <andreas at kemnade.info> [180907 16:52]:
> > > sdio irq + wakeirq via remapped dat1 as gpio + 4 bit -(=reverted)
> > > generic_wakeirq_patch = does not work  

Sounds like you're unnecessarily remapping dat1 to gpio for wake.
With omap3 just configure the dat1 padconf irq as the "wakeup".

Care to try something like this in the in omap3-gta04.dtsi:

&mmc2 {
      interrupts-extended = <&intc 86 &omap3_pmx_core 0x12e>;
      interrupt-names = "irq", "wakeup";
      vmmc-supply = <&vaux4>;
      bus-width = <4>;
      ti,non-removable;
      cap-power-off-card;
      mmc-pwrseq = <&wifi_pwrseq>;
};

Untested.. And I just hastily looked up that the the sdmmc2_dat1
is at 0x4800215C + 2 making the padconf interrupt then
0x4800215C + 2 - 0x48002030 = 0x12e. But I know a similar setup
works just fine with omap3 and mwifiex_sdio and off idle.

Please leave out all remuxing initially, then if the sdio
needs some pins with pull up/down configured for idle you
can add a pinctrl idle or sleep mode with PULL | MUX_MODE7.

Regards,

Tony


More information about the Letux-kernel mailing list