From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/3] ARM: PXA27x: save/restore PWER on suspend/resume
Date: Mon, 27 Feb 2012 00:18:38 +0000 [thread overview]
Message-ID: <20120227001838.GE4706@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <201202270047.01509.marek.vasut@gmail.com>
On Mon, Feb 27, 2012 at 12:47:01AM +0100, Marek Vasut wrote:
> > On Sun, Feb 26, 2012 at 11:20:27PM +0100, Marek Vasut wrote:
> > > > On Sun, Feb 26, 2012 at 04:47:41PM +0300, Vasily Khoruzhick wrote:
> > > > > Bootloader can clobber PWER value, so save it state on suspend.
> > > >
> > > > What boot loader is this,
> > >
> > > U-Boot, patched, not mainline.
> > >
> > > > and why is it being so idiotic?
> > >
> > > Mainline doesn't touch PWER, so please be careful about your accusations.
> > >
> > > > Why can't it
> > > > be fixed?
> > >
> > > Yes, either by using mainline uboot (to rule out the bootloader problem),
> > > finding bug in linux kernel or reading the CPU manual.
> >
> > Was there supposed to be any useful information in your reply, or are
> > you just trying to be your usual antagonistic self?
>
> Um ...
>
> 1) PWER isn't reconfigured by uboot (see above)
Given that virtually everyone seems to use a modified version of uboot,
how can you be so sure?
> 2) That you should try mainline uboot to avoid debugging problems with not-
> mainlined patches
Why should _I_ try anything with uboot? I'm not the one experiencing
problems.
I'll point out that Vasily is reporting that _his_ boot loader, whatever
it is, is clobbering the PWER register. That's *his* statement in the
commit log, and I have no reason *not* to think that he's put in the
research to confirm that. Otherwise, why make such a positive statement
about where the problem lies?
> 3) That the bug with PWER is likely in kernel, since there's an issue with
> gpio_set_wake() on PXA
I've reviewed this function and its associated data, and can't see
anything wrong with it (see below).
> 4) That the CPU might not preserve PWER throughout the suspend and that this
> information might be found in the CPU manual
No. The PXA270 manual says that this register is preserved on exit from
deep sleep and sleep modes. It appends a note against each bit in the
reset status for the PWER register which says "Exit from sleep or
deep sleep mode does not clear or set this bit".
The setup for GPIO0 is:
for (i = 0; i <= 15; i++) {
/* skip GPIO2, 5, 6, 7, 8 */
if (GPIO_bit(i) & 0x1e4)
continue;
gpio_desc[i].can_wakeup = 1;
gpio_desc[i].mask = GPIO_bit(i);
}
So, gpio_desc[0].can_wakeup = 1 and gpio_desc[0].mask is the bitmask for
GPIO0.
gpio_set_wake() does this:
d = &gpio_desc[gpio];
c = d->config;
if (!d->valid)
return -EINVAL;
well, that's already been set valid by pxa27x_mfp_init().
if (d->keypad_gpio && (MFP_AF(d->config) == 0) &&
it's not a keypad gpio...
mux_taken = (PWER & d->mux_mask) & (~d->mask);
if (on && mux_taken)
return -EBUSY;
well, d->mux_mask is zero, so this check fails.
if (d->can_wakeup && (c & MFP_LPM_CAN_WAKEUP)) {
if (on) {
PWER = (PWER & ~d->mux_mask) | d->mask;
Now, we know d->can_wakeup is true. However, what about the MFP
configuration?
Well, that depends on the platform. I suspect that's where the problem
with wakeup sources not working is located, because the MFP configuration
hasn't been properly set, and that comes from platform code.
So please, stop blaming PXA code without full and proper analysis of
bugs. It's a waste of everyone's time, and it hurts proper kernel
maintenance if these ill-researched 'workarounds' get merged instead
of proper fixes.
next prev parent reply other threads:[~2012-02-27 0:18 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-26 13:47 [PATCH 1/3] ARM: PXA: Zipit Z2: Fix oops in z2_power_off Vasily Khoruzhick
2012-02-26 13:47 ` [PATCH 2/3] ARM: PXA27x: save/restore PWER on suspend/resume Vasily Khoruzhick
2012-02-26 14:27 ` Russell King - ARM Linux
2012-02-26 14:55 ` Vasily Khoruzhick
2012-02-26 15:26 ` Russell King - ARM Linux
2012-02-26 22:20 ` Marek Vasut
2012-02-26 23:36 ` Russell King - ARM Linux
2012-02-26 23:47 ` Marek Vasut
2012-02-27 0:18 ` Russell King - ARM Linux [this message]
2012-02-27 0:40 ` Marek Vasut
2012-02-26 13:47 ` [PATCH 3/3] ARM: PXA27x: Zipit Z2: disable wake on GPIO0 Vasily Khoruzhick
2012-02-26 14:26 ` Russell King - ARM Linux
2012-02-26 15:11 ` Vasily Khoruzhick
2012-02-26 15:29 ` Russell King - ARM Linux
2012-02-26 15:35 ` Vasily Khoruzhick
2012-02-26 22:21 ` Marek Vasut
2012-02-26 23:35 ` Russell King - ARM Linux
2012-02-26 23:47 ` Marek Vasut
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120227001838.GE4706@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).