[PATCH] gpio: pxa: Set PXA GPIO irq_chip IRQCHIP_SKIP_SET_WAKE flag

Paul Parsons lost.distance at yahoo.com
Wed Apr 18 18:40:17 EDT 2012


--- On Wed, 18/4/12, Robert Jarzmik <robert.jarzmik at free.fr> wrote:
> > I had a quick look at arch/arm/mach-pxa/mioa701.c and
> > noticed that it didn't call gpio_set_wake() for GPIO0.
> > Does this help:
> >
> > diff --git a/arch/arm/mach-pxa/mioa701.c
> b/arch/arm/mach-pxa/mioa701.c
> > index 061d570..23190bf 100644
> > --- a/arch/arm/mach-pxa/mioa701.c
> > +++ b/arch/arm/mach-pxa/mioa701.c
> > @@ -726,6 +726,7 @@ static void __init
> mioa701_machine_init(void)
>>> >     
> pxa2xx_mfp_config(ARRAY_AND_SIZE(mioa701_pin_config));
> > +    gpio_set_wake(GPIO0_KEY_POWER, 1);
> >      pxa_set_ffuart_info(NULL);
> >      pxa_set_btuart_info(NULL);
> >      pxa_set_stuart_info(NULL);
> 
> Yes, the wakeup works again with the gpio_set_wake() call.
> But that shouldn't be necessary. The legacy method that
> worked, if I remember
> correctly, was :
>  - suspend is triggered
>  - gpio_keys.c: gpio_keys_suspend() is called
>  - as mioa701 setup the platform data for gpio_keys_data as
> :
>    MIO_KEY(KEY_EXIT, GPIO0_KEY_POWER, "Power
> button", 1),
>      => implies struct
> gpio_keys_button has the button with .wakeup=1
>    This triggers in gpio_keys_suspend():
>                
>      ->
> enable_irq_wake(bdata->irq)
> 
> This enable_irq_wake() should in the end call
> gpio_set_wake(0, 1), but apparently
> it doesn't for some reason. This the part I have to check.

I posted a question about that 6 days ago: whether the irq_chip
irq_set_wake() handler (which is called from enable_irq_wake())
should call gpio_set_wake():

http://lists.infradead.org/pipermail/linux-arm-kernel/2012-April/093953.html

Regards,
Paul



More information about the linux-arm-kernel mailing list