linux/drivers
Kevin Hilman 68942edb09 gpio/omap: fix wakeups on level-triggered GPIOs
While both level- and edge-triggered GPIOs are capable of generating
interrupts, only edge-triggered GPIOs are capable of generating a
module-level wakeup to the PRCM (c.f. 34xx NDA TRM section 25.5.3.2.)

In order to ensure that devices using level-triggered GPIOs as
interrupts can also cause wakeups (e.g. from idle), this patch enables
edge-triggering for wakeup-enabled, level-triggered GPIOs when a GPIO
bank is runtime-suspended (which also happens during idle.)

This fixes a problem found in GPMC-connected network cards with GPIO
interrupts (e.g. smsc911x on Zoom3, Overo, ...) where network booting
with NFSroot was very slow since the GPIO IRQs used by the NIC were
not generating PRCM wakeups, and thus not waking the system from idle.
NOTE: until v3.3, this boot-time problem was somewhat masked because
the UART init prevented WFI during boot until the full serial driver
was available.  Preventing WFI allowed regular GPIO interrupts to fire
and this problem was not seen.  After the UART runtime PM cleanups, we
no longer avoid WFI during boot, so GPIO IRQs that were not causing
wakeups resulted in very slow IRQ response times.

Tested on platforms using level-triggered GPIOs for network IRQs using
the SMSC911x NIC: 3530/Overo and 3630/Zoom3.

Reported-by: Tony Lindgren <tony@atomide.com>
Tested-by: Tarun Kanti DebBarma <tarun.kanti@ti.com>
Tested-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2012-03-12 10:16:11 -06:00
..
accessibility
acpi ACPI: remove duplicated lines of merging problems with acpi_processor_add 2012-02-08 15:07:03 -08:00
amba
ata pata/at91: use newly introduced SMC accessors 2012-02-13 18:31:37 +01:00
atm drivers/atm/solos-pci.c: exchange pci_iounmaps 2012-02-19 18:57:51 -05:00
auxdisplay
base Fixes a bootstrapping issue for some registers when a less commonly used 2012-02-18 15:37:25 -08:00
bcma bcma: don't fail for bad SPROM CRC 2012-02-06 14:37:52 -05:00
block floppy/scsi: fix setting of BIO flags 2012-03-05 15:49:43 -08:00
bluetooth Bluetooth: btusb: Add vendor specific ID (0a5c 21f3) for BCM20702A0 2012-02-15 13:09:26 +02:00
cdrom cdrom: move shared static to cdrom_device_info 2012-02-08 20:03:14 +01:00
char
clk
clocksource
connector
cpufreq
cpuidle cpuidle: Default y on powerpc pSeries 2012-02-22 16:48:51 +11:00
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2012-03-03 09:31:49 -08:00
dca
devfreq
dio
dma
edac asm-generic: architecture independent readq/writeq for 32bit environment 2012-02-21 16:47:28 -08:00
eisa
firewire
firmware
gpio gpio/omap: fix wakeups on level-triggered GPIOs 2012-03-12 10:16:11 -06:00
gpu drm/radeon/kms: fix hdmi duallink checks 2012-03-08 09:39:54 +00:00
hid HID: hid-input: allow array fields out of range 2012-03-05 10:28:58 +01:00
hv
hwmon hwmon: (jc42) Add support for AT30TS00, TS3000GB2, TSE2002GB2, and MCP9804 2012-03-07 09:48:44 -08:00
hwspinlock
i2c i2c: mxs: only flag completion when queue is completely done 2012-02-24 22:28:27 +01:00
ide ARM: at91: drop ide driver in favor of the pata one 2012-02-13 18:31:37 +01:00
idle
ieee802154
infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-02-10 14:18:46 -08:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2012-03-07 08:31:31 -08:00
iommu x86/amd: iommu_set_device_table() must not be __init 2012-03-08 11:36:06 +01:00
isdn isdn: type bug in isdn_net_header() 2012-02-09 15:41:29 -05:00
leds drivers/leds/leds-lm3530.c: fix setting pltfm->als_vmax 2012-02-08 19:03:51 -08:00
lguest
macintosh powerpc/adb: Use set_current_state() 2012-02-16 16:15:12 +11:00
mca
md Device-mapper fixes for 3.3. 2012-03-08 17:21:51 -08:00
media Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2012-02-24 12:32:51 -08:00
memstick
message
mfd Linux 3.3-rc7 2012-03-12 09:41:28 -06:00
misc c2port: class_create() returns an ERR_PTR 2012-03-05 15:49:43 -08:00
mmc mmc: core: Fixup suspend/resume issues for UHS-I cards 2012-03-04 12:25:15 -05:00
mtd
net Linux 3.3-rc7 2012-03-12 09:41:28 -06:00
nfc
nubus
of Linux 3.3-rc7 2012-03-12 09:41:28 -06:00
oprofile
parisc [PARISC] include <linux/prefetch.h> in drivers/parisc/iommu-helpers.h 2012-02-27 09:44:15 -06:00
parport
pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-02-18 15:26:11 -08:00
pcmcia ARM: pxa: fix error handling in pxa2xx_drv_pcmcia_probe 2012-02-16 10:41:23 +08:00
pinctrl
platform asm-generic: architecture independent readq/writeq for 32bit environment 2012-02-21 16:47:28 -08:00
pnp
power
pps pps: class_create() returns an ERR_PTR, not NULL 2012-03-05 15:49:43 -08:00
ps3
ptp
rapidio rapidio/tsi721: fix queue wrapping bug in inbound doorbell handler 2012-03-05 15:49:43 -08:00
regulator regulator: tps65910: Configure correct value for VDDCTRL vout reg 2012-03-07 19:28:37 +00:00
rtc drivers/rtc/rtc-r9701.c: fix crash in r9701_remove() 2012-03-05 15:49:43 -08:00
s390 [S390] qdio: fix handler function arguments for zfcp data router 2012-03-02 17:33:00 +01:00
sbus
scsi floppy/scsi: fix setting of BIO flags 2012-03-05 15:49:43 -08:00
sfi
sh
sn
spi Fix section mismatch in spi-pl022.c 2012-02-13 11:57:58 -07:00
ssb
staging staging: pohmelfs: remove drivers/staging/pohmelfs 2012-02-08 16:19:06 -08:00
target target: Fix unsupported WRITE_SAME sense payload 2012-02-07 06:48:58 +00:00
tc
telephony
thermal
tty tty/powerpc: early udbg consoles can't be modules 2012-02-24 16:11:50 -08:00
uio
usb Revert "powerpc/usb: fix issue of CPU halt when missing USB PHY clock" 2012-03-02 16:08:54 -08:00
uwb
vhost
video fbdev fixes for 3.3 2012-03-02 15:21:15 -08:00
virt
virtio virtio: balloon: leak / fill balloon across S4 2012-03-01 09:28:41 +10:30
vlynq
w1
watchdog watchdog: fix GETTIMEOUT ioctl in booke_wdt 2012-02-29 09:46:13 +01:00
xen
zorro
Kconfig
Makefile