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

Andreas Kemnade andreas at kemnade.info
Tue Sep 4 19:32:40 CEST 2018


Hi,

On Tue, 4 Sep 2018 08:47:50 -0700
Tony Lindgren <tony at atomide.com> wrote:

> * Andreas Kemnade <andreas at kemnade.info> [180902 20:46]:
> >         mmc2_pins: pinmux_mmc2_pins {
> >                 pinctrl-single,pins = <
> >                         /* sdmmc2_clk.sdmmc2_clk */
> >                         OMAP3_CORE1_IOPAD(0x2158, PIN_INPUT_PULLUP | MUX_MODE0)
> > 
> >                         /* sdmmc2_cmd.sdmmc2_cmd */
> >                         OMAP3_CORE1_IOPAD(0x215a, PIN_INPUT_PULLUP | MUX_MODE0)
> > 
> >                         /* sdmmc2_dat0.sdmmc2_dat0 */
> >                         OMAP3_CORE1_IOPAD(0x215c, PIN_INPUT_PULLUP | MUX_MODE0)
> > 
> >                         /* sdmmc2_dat0.sdmmc2_dat1 */
> >                         OMAP3_CORE1_IOPAD(0x215e, PIN_INPUT_PULLUP | MUX_MODE0 | WAKEUP_EN)  
> 
> Having WAKEUP_EN here is wrong nowadays, this bit is managed by
> Linux generic wakeirqs.
> 
> > &mmc2 {
> >         pinctrl-names = "default";
> >         pinctrl-0 = <&mmc2_pins>;
> > 
> >         interrupts-extended = <&intc 86>, <&omap3_pmx_core 0x12e>;   
> 
> And then the second interrupt here must match padconf register like
> you have 0x215e - 0x2030 = 0x12e which seems correct. And you should
> start seeing interrupts with grep wake /proc/interrupts.
> 
> > I can make it work by using bus-width = <1>;
> > But that is not what I want. The entry in /proc/interrupts behaves
> > sane.  
> 
> Please check that your board is using the pads you configured.
> Some signals may be using alternate pads.
> 
I have double checked these things, but maybe I missed something:
http://projects.goldelico.com/p/gta04-main/downloads/get/GTA04A4-4_System_Manual_Complete.pdf
page 100.

Just for clarification: If I force-enable runtime here via
echo on >/sys/bus/platform/devices/480b4000.mmc/power/control
or this dirty hack
http://git.goldelico.com/?p=letux-kernel.git;a=commit;h=72e47cfbef51e0f1cdb771d5ca59032fd489876b
sdio irq works even with 4 bit.

What I am not sure about is the interaction of sdmmc2_dir_dat1 with the
suspend/resume process. If it is wrong, the interrupt cannot get
through. Maybe the hsmmc does something strange when going to suspend
with it? That would explain the different behavior between 1 bit and 4
bit Unfortunately, the signal is not easily-accessible on the board.

Regards,
Andreas 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.goldelico.com/pipermail/letux-kernel/attachments/20180904/a52c171f/attachment.asc>


More information about the Letux-kernel mailing list