summaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-samsung/gpio-config.c
diff options
context:
space:
mode:
authorChris Metcalf <cmetcalf@tilera.com>2010-10-14 11:57:29 -0400
committerChris Metcalf <cmetcalf@tilera.com>2010-10-14 11:57:29 -0400
commitce0ecc8abfa9904e27a5f3ac4dd83398b134278d (patch)
tree031363a799c1869889c961fcc49715896f59f703 /arch/arm/plat-samsung/gpio-config.c
parentde5bbad6770882209b0ac58b0ba9259a98cfb953 (diff)
parentcb655d0f3d57c23db51b981648e452988c0223f9 (diff)
downloadop-kernel-dev-ce0ecc8abfa9904e27a5f3ac4dd83398b134278d.zip
op-kernel-dev-ce0ecc8abfa9904e27a5f3ac4dd83398b134278d.tar.gz
Merge branch 'master' into for-linus
Diffstat (limited to 'arch/arm/plat-samsung/gpio-config.c')
-rw-r--r--arch/arm/plat-samsung/gpio-config.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/arm/plat-samsung/gpio-config.c b/arch/arm/plat-samsung/gpio-config.c
index 57b68a5..e3d41ea 100644
--- a/arch/arm/plat-samsung/gpio-config.c
+++ b/arch/arm/plat-samsung/gpio-config.c
@@ -273,13 +273,13 @@ s5p_gpio_drvstr_t s5p_gpio_get_drvstr(unsigned int pin)
if (!chip)
return -EINVAL;
- off = chip->chip.base - pin;
+ off = pin - chip->chip.base;
shift = off * 2;
reg = chip->base + 0x0C;
drvstr = __raw_readl(reg);
- drvstr = 0xffff & (0x3 << shift);
drvstr = drvstr >> shift;
+ drvstr &= 0x3;
return (__force s5p_gpio_drvstr_t)drvstr;
}
@@ -296,11 +296,12 @@ int s5p_gpio_set_drvstr(unsigned int pin, s5p_gpio_drvstr_t drvstr)
if (!chip)
return -EINVAL;
- off = chip->chip.base - pin;
+ off = pin - chip->chip.base;
shift = off * 2;
reg = chip->base + 0x0C;
tmp = __raw_readl(reg);
+ tmp &= ~(0x3 << shift);
tmp |= drvstr << shift;
__raw_writel(tmp, reg);
OpenPOWER on IntegriCloud