Thread (8 messages) 8 messages, 2 authors, 2014-07-15

Re: gpio-omap: wakeup mask

From: Tony Lindgren <tony@atomide.com>
Date: 2014-07-15 13:42:43
Also in: linux-omap, lkml

* Pascal Huerst [off-list ref] [140715 06:29]:

On 09.07.2014 17:24, Tony Lindgren wrote:
quoted
* Pascal Huerst [off-list ref] [140709 05:47]:
quoted
On 09.07.2014 12:41, Tony Lindgren wrote:
quoted
If you just comment out the _gpio_rmw part above do things work
as expected?
Yes. It only wakes up on gpio 6 not on gpio 11 anymore.
quoted
Then if that works as expected, maybe write only some unused
bits into wkup_en register and see if it still wakes to all
events while it should not?
If I use the following testcode, everything works as expected:

//WARN(true, "WARN: bank->base = %08X\n", bank->base);

if (likely(!(bank->non_wakeup_gpios & gpio_bit))) { 
//_gpio_rmw(base, bank->regs->wkup_en, gpio_bit, trigger != 0); 
writel(0xABC00000, base + bank->regs->wkup_en);

bank->context.wake_en = readl_relaxed(bank->base + 
bank->regs->wkup_en); printk("bank->base = %08X gpio = %i
bank->context->wake_en = %08X\n", bank->base, gpio,
bank->context.wake_en); }
Hmm weird. It sounds like something like the following is
happening:

1. The first GPIO bank is always powered, and does not need to set 
wake-up events
I dont think so. If I apply my hack (commenting the _gpio_rmw() call)
and don't have a wakeup source in the dt, I have to reboot the system,
sonce im not able to wake it up anymore. Or did I miss something?
Well this just from my head without looking at the code, so please
check..

When you comment out the _gpio_rmw() call you are not configuring
any GPIO bank wake-up events.

And the .dts entry just manages the keypad wake-up event for
suspend and resume and does not affect the GPIO bank after you
commented out the _gpio_rmw().
 
quoted
2. When setting the GPIO wake-up events it seems that enabling any 
wake-up event for the first (16?) bits wakes up the system

You might want to check this with some spare GPIOs not in the first
bank and see if you need the wake-up events and if enabling some
bits enables more than one GPIO for wake-up events.
Im not sure if this makes sense, since only the first gpio bank can
act as a wakeup source. So it should not be possible.
Usually on omaps the first GPIO bank is always powered but also
the other banks can provide wake-up events for most GPIOs
via the IO chain path. I think on am335x, there is no IO chain
path, maybe because of the support for dual voltage IO? So yeah
it could be that only the first GPIO bank can wake up the system
on am335x.

Regards,

Tony
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help