ARM: OMAP3: PM: fix I/O wakeup and I/O chain clock control detection
authorPaul Walmsley <paul@pwsan.com>
Thu, 6 Oct 2011 23:18:45 +0000 (17:18 -0600)
committerKevin Hilman <khilman@ti.com>
Fri, 7 Oct 2011 20:41:49 +0000 (13:41 -0700)
commitb02b917211d50ad5dc13e49c933ef916b10e0d00
tree138707c1aab31b0263cb1bd02ba4678c6a7d80f5
parentff2f8e5ffb23de6e2284f31651447cb80a4c9d1b
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>
arch/arm/mach-omap2/id.c
arch/arm/mach-omap2/pm34xx.c
arch/arm/plat-omap/include/plat/cpu.h