Thread (7 messages) flat view 7 messages, 3 authors, 2012-05-19
STALE5195d

[PATCH 1/2] gpio/generic: initialize basic_mmio_gpio shadow variables properly

From: Grant Likely <hidden>
Date: 2012-05-19 05:44:03

On Thu, 17 May 2012 15:35:02 +0800, Shawn Guo [off-list ref] wrote:
quoted hunk ↗ jump to hunk
It fixes the issue in gpio-generic that commit fb14921 (gpio/mxc: add
missing initialization of basic_mmio_gpio shadow variables) manged to
fix in gpio-mxc driver, so that other platform specific drivers do not
suffer from the same problem over and over again.

Signed-off-by: Shawn Guo <redacted>
---
 drivers/gpio/gpio-generic.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/gpio/gpio-generic.c b/drivers/gpio/gpio-generic.c
index e38dd0c..cfc9439 100644
--- a/drivers/gpio/gpio-generic.c
+++ b/drivers/gpio/gpio-generic.c
@@ -394,6 +394,10 @@ int bgpio_init(struct bgpio_chip *bgc, struct device *dev,
 		return ret;
 
 	bgc->data = bgc->read_reg(bgc->reg_dat);
+	if (bgc->gc.set == bgpio_set_set)
+		bgc->data = bgc->read_reg(bgc->reg_set);
+	if (bgc->reg_dir)
+		bgc->dir = bgc->read_reg(bgc->reg_dir);
This assumes that the set and dir registers are actually readable
which isn't the case on some hardware.  There needs to be a mechanism
for drivers using bgpio_init to control how data & dir are initialized
(possibly with some flags; maybe replace the big_endian arg with a
flags arg).

g.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help