From d0bbe9933ec866563fa13a4addb4fa3245880981 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Sun, 20 Apr 2008 16:32:28 +0000
Subject: [PATCH] fix gpio on rb532 - fixes the cf driver

SVN-Revision: 10888
---
 target/linux/rb532/files/arch/mips/rb500/gpio.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/target/linux/rb532/files/arch/mips/rb500/gpio.c b/target/linux/rb532/files/arch/mips/rb500/gpio.c
index f7c417355a..6c92a8fe56 100644
--- a/target/linux/rb532/files/arch/mips/rb500/gpio.c
+++ b/target/linux/rb532/files/arch/mips/rb500/gpio.c
@@ -43,7 +43,7 @@
 
 static volatile unsigned char *devCtl3Base;
 static unsigned char latchU5State;
-static spinlock_t clu5Lock;
+static spinlock_t clu5Lock = SPIN_LOCK_UNLOCKED;
 
 struct rb500_gpio_reg __iomem *rb500_gpio_reg0;
 EXPORT_SYMBOL(rb500_gpio_reg0);
@@ -116,7 +116,7 @@ EXPORT_SYMBOL(rb500_gpio_set_value);
 
 int rb500_gpio_direction_input(unsigned gpio)
 {
-	writel(readl(&rb500_gpio_reg0->gpiocfg) | (1 << gpio), (void *)&rb500_gpio_reg0->gpiocfg);
+	writel(readl(&rb500_gpio_reg0->gpiocfg) & ~(1 << gpio), (void *)&rb500_gpio_reg0->gpiocfg);
 
 	return 0;
 }
@@ -125,7 +125,7 @@ EXPORT_SYMBOL(rb500_gpio_direction_input);
 int rb500_gpio_direction_output(unsigned gpio, int value)
 {
 	gpio_set_value(gpio, value);
-	writel(readl(&rb500_gpio_reg0->gpiocfg) & ~(1 << gpio), (void *)&rb500_gpio_reg0->gpiocfg);
+	writel(readl(&rb500_gpio_reg0->gpiocfg) | (1 << gpio), (void *)&rb500_gpio_reg0->gpiocfg);
 
 	return 0;
 }
-- 
2.30.2