zaurus spitz suspend/resume issue
Pavel Machek
pavel at ucw.cz
Tue Apr 20 09:36:24 EDT 2010
Hi!
> >> Since resuming my spitz from a suspended state doesn't work in 2.6.34-rc3
> >> at the moment, I've tried to find out what the problem is with
> >> suspend/resume. Using CONFIG_PM_DEBUG I tried to test this by setting
> >> /sys/power/pm_test to "core" and switching the device off with the power
> >> button. This indeed suspends and resumes the device, but shows following
> >> in the system log:
> >
> > It works here.
>
> Or maybe we should allow these GPIOs to wakeup the system when either
> configured as generic GPIOs or keypad GPIOs.
So... there's a bug in pxa-keypad driver -- it enables wakeup on one
line when it needs wakeup on all.
So we invented a workaround, in mfp-pxa2xx.c, where we change wakeup
on many lines when pxa-keypad wants to toggle wakeup on one.
But that workaround causes problems, so we
> diff --git a/arch/arm/mach-pxa/mfp-pxa2xx.c b/arch/arm/mach-pxa/mfp-pxa2xx.c
> index cf6b720..29301d2 100644
> --- a/arch/arm/mach-pxa/mfp-pxa2xx.c
> +++ b/arch/arm/mach-pxa/mfp-pxa2xx.c
> @@ -178,8 +178,17 @@ int gpio_set_wake(unsigned int gpio, unsigned int on)
> - if (d->keypad_gpio)
> - return -EINVAL;
> + /* Allow keypad GPIOs to wakeup system when
> + * configured as generic GPIOs.
> + */
> + if (d->keypad_gpio && (MFP_AF(d->config) == 0) &&
> + (d->config & MFP_LPM_CAN_WAKEUP)) {
> + if (on)
> + PKWR |= d->mask;
> + else
> + PKWR &= ~d->mask;
> + return 0;
> + }
Add more hacks on top.
What about simply fixing pxa-keypad? Then we can git of workaround,
and spitz will be fixed.
Fix should be as simple as replacing enable_irq_wakeup() with more
enable_irq_wakeup()s.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
More information about the linux-arm-kernel
mailing list