1
linux/arch
Kevin Hilman eb350f74eb OMAP3: PM: Enable GPIO module-level wakeups
Currently, only GPIOs in the wakeup domain (GPIOs in bank 0) are
enabled as wakups.  This patch also enables GPIOs in the PER
powerdomain (banks 2-6) to be used as possible wakeup sources.

In addition, this patch ensures that all GPIO wakeups can wakeup
the MPU using the PM_MPUGRPSEL_<pwrdm> registers.

NOTE: this doesn't enable the individual GPIOs as wakeups, this simply
enables the per-bank wakeups at the powerdomain level.

This problem was discovered by Mike Chan when preventing the CORE
powerdomain from going into retention/off.  When CORE was allowed to
hit retention, GPIO wakeups via IO pad were working fine, but when
CORE remained on, GPIO module-level wakeups were not working properly.

To test, prevent CORE from going inactive/retention/off, thus
preventing the IO chain from being armed:

  # echo 3 > /debug/pm_debug/core_pwrdm/suspend

This ensures that GPIO wakeups happen via module-level wakeups and
not via IO pad.

Tested on 3430SDP using the touchscreen GPIO (gpio 2, in WKUP)
Tested on Zoom2 using the QUART interrup GPIO  (gpio 102, in PER)

Also, c.f. OMAP PM wiki for troubleshooting GPIO wakeup issues:
http://elinux.org/OMAP_Power_Management

Reported-by: Mike Chan <mikechan@google.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
2009-10-05 10:51:00 -07:00
..
alpha alpha: Fix duplicate <asm/thread_info.h> include 2009-09-27 14:46:05 -07:00
arm OMAP3: PM: Enable GPIO module-level wakeups 2009-10-05 10:51:00 -07:00
avr32 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next 2009-09-23 15:37:02 -07:00
blackfin blackfin: Cleanup linker script using new linker script macros. 2009-09-24 17:16:22 -07:00
cris Merge branch 'for-linus' of git://repo.or.cz/cris-mirror 2009-09-24 17:08:56 -07:00
frv FRV: Flash mappings for the MB93090-MB00 motherboard 2009-09-24 17:18:38 -07:00
h8300 h8300: Cleanup linker script using new linker script macros. 2009-09-24 17:16:22 -07:00
ia64 const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
m32r Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev 2009-09-24 17:25:09 -07:00
m68k headers: utsname.h redux 2009-09-23 18:13:10 -07:00
m68knommu headers: utsname.h redux 2009-09-23 18:13:10 -07:00
microblaze Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze 2009-09-24 09:01:44 -07:00
mips mips: fix build of vmlinux.lds 2009-09-25 19:49:27 +02:00
mn10300 mn10300: Clean up linker script using higher-level macros. 2009-09-24 17:16:22 -07:00
parisc parisc: Remove useless altinstructions code copied from x86. 2009-09-24 17:16:21 -07:00
powerpc const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
s390 sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
score Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next 2009-09-23 15:37:02 -07:00
sh sh: Add support DMA Engine to SH7780 2009-09-25 12:19:33 +09:00
sparc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 2009-09-26 10:08:23 -07:00
um um: Clean up linker script using standard macros. 2009-09-24 17:16:22 -07:00
x86 const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
xtensa xtensa: Cleanup linker script using new linker script macros. 2009-09-24 17:16:21 -07:00
.gitignore
Kconfig oprofile: fix oprofile regression: select RING_BUFFER_ALLOW_SWAP 2009-09-17 15:53:42 -04:00