linux/arch/arm/plat-omap
Paul Walmsley b02b917211 ARM: OMAP3: PM: fix I/O wakeup and I/O chain clock control detection
The way that we detect which OMAP3 chips support I/O wakeup and
software I/O chain clock control is broken.

Currently, I/O wakeup is marked as present for all OMAP3 SoCs other
than the AM3505/3517.  The TI81xx family of SoCs are at present
considered to be OMAP3 SoCs, but don't support I/O wakeup.  To resolve
this, convert the existing blacklist approach to an explicit,
whitelist support, in which only SoCs which are known to support I/O
wakeup are listed.  (At present, this only includes OMAP34xx,
OMAP3503, OMAP3515, OMAP3525, OMAP3530, and OMAP36xx.)

Also, the current code incorrectly detects the presence of a
software-controllable I/O chain clock on several chips that don't
support it.  This results in writes to reserved bitfields, unnecessary
delays, and console messages on kernels running on those chips:

    http://www.spinics.net/lists/linux-omap/msg58735.html

Convert this test to a feature test with a chip-by-chip whitelist.

Thanks to Dave Hylands <dhylands@gmail.com> for reporting this problem
and doing some testing to help isolate the cause.  Thanks to Steve
Sakoman <sakoman@gmail.com> for catching a bug in the first version of
this patch.  Thanks to Russell King <linux@arm.linux.org.uk> for
comments.

Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Dave Hylands <dhylands@gmail.com>
Cc: Steve Sakoman <sakoman@gmail.com>
Tested-by: Steve Sakoman <sakoman@gmail.com>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>
Signed-off-by: Kevin Hilman <khilman@ti.com>
2011-10-07 13:41:49 -07:00
..
include/plat ARM: OMAP3: PM: fix I/O wakeup and I/O chain clock control detection 2011-10-07 13:41:49 -07:00
clock.c Merge branch 'next/devel2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc 2011-07-26 17:42:18 -07:00
common.c ARM: omap: move omap_board_config_kernel to .init.data 2011-02-09 16:36:41 -08:00
counter_32k.c Convert OMAPs 32kHz clocksource implementation to use the generic MMIO 2011-07-10 23:05:34 -07:00
cpu-omap.c arm: omap: fix section mismatch warning 2011-03-02 16:32:52 -08:00
debug-devices.c
debug-leds.c Replacing LEDS_OMAP_DEBUG with OMAP_DEBUG_LEDS 2010-07-05 17:03:58 +03:00
devices.c Fix common misspellings 2011-03-31 11:26:23 -03:00
dma.c Fix common misspellings 2011-03-31 11:26:23 -03:00
dmtimer.c OMAP4: DMTIMER: enable autoidle mode 2011-07-04 04:11:08 -07:00
fb.c Merge branch 'for-linus' of git://gitorious.org/linux-omap-dss2/linux 2010-10-26 10:02:39 -07:00
fb.h OMAP: plat-omap: Fix static function warnings 2010-10-08 10:12:38 -07:00
i2c.c arm: omap: i2c: fix compile warning 2011-01-27 16:39:41 -08:00
io.c TI816X: Update common OMAP machine specific sources 2011-02-16 08:31:39 -08:00
iommu-debug.c arm/omap: use generic_file_llseek in iommu_debug 2010-09-16 10:33:11 +02:00
iommu.c omap: iommu: Return IRQ_HANDLED in fault handler when no fault occured 2011-05-11 10:47:50 -07:00
iopgtable.h
iovmm.c arch:arm:plat-omap:iovmm: remove unused variable 'va' 2011-08-10 04:17:16 -07:00
Kconfig OMAP1: enable GENERIC_IRQ_CHIP 2011-08-05 11:54:56 -07:00
mailbox.c Merge branch 'for-2.6.39' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2011-03-16 08:20:19 -07:00
Makefile GPIO: OMAP: move to drivers/gpio 2011-05-27 08:43:34 -07:00
mcbsp.c ASoC: omap: McBSP: fix build breakage on OMAP1 2011-07-11 02:08:06 -07:00
mux.c omap: mux: Remove old mux code 2010-07-05 16:31:40 +03:00
ocpi.c
omap_device.c OMAP: omap_device: fix !CONFIG_SUSPEND case in _noirq handlers 2011-09-06 13:19:58 -07:00
omap-pm-noop.c OMAP: PM noop: implement context loss count for non-omap_devices 2010-12-21 21:31:55 -07:00
sram.c ARM: pm: omap3: run the ASM sleep code from DDR 2011-06-29 19:07:47 +01:00
sram.h OMAP: plat-omap: Fix static function warnings 2010-10-08 10:12:38 -07:00
usb.c omap: Move omap1 USB platform init code into mach-omap1/usb.c 2010-07-05 16:31:30 +03:00