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 Tue, 4 Sep 2018 08:47:50 -0700
Tony Lindgren <tony@xxxxxxxxxxx> wrote:

> * Andreas Kemnade <andreas@xxxxxxxxxxxx> [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 

Attachment: pgp5Fa_yRJzKV.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