]> git.karo-electronics.de Git - karo-tx-linux.git/commit
cs5535-gpio: apply CS5536 errata workaround for GPIOs
authorAndres Salomon <dilinger@queued.net>
Thu, 2 Dec 2010 22:31:17 +0000 (14:31 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 9 Dec 2010 21:33:14 +0000 (13:33 -0800)
commite6cc466ac1954e95006d81a17a549b3488dd0556
treea9be9099b69066c5115af8ff4761e65cd9ab3090
parent2f240adb909cd1752662a97c9f6d6a88eaf3675e
cs5535-gpio: apply CS5536 errata workaround for GPIOs

commit 853ff88324a248a9f5da6e110850223db353ec07 upstream.

The AMD Geode CS5536 Companion Device Silicon Revision B1 Specification
Update mentions the follow as issue #36:

 "Atomic write transactions to the atomic GPIO High Bank Feature Bit
  registers should only affect the bits selected [...]"

 "after Suspend, an atomic write transaction [...] will clear all
  non-selected bits of the accessed register."

In other words, writing to the high bank for a single GPIO bit will
clear every other GPIO bit (but only sometimes after a suspend).

The workaround described is obvious and simple; do a read-modify-write.
This patch does that, and documents why we're doing it.

Signed-off-by: Andres Salomon <dilinger@queued.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/gpio/cs5535-gpio.c