diff options
| -rw-r--r-- | target/linux/ar7/files/include/asm-mips/ar7/gpio.h | 11 | 
1 files changed, 5 insertions, 6 deletions
| diff --git a/target/linux/ar7/files/include/asm-mips/ar7/gpio.h b/target/linux/ar7/files/include/asm-mips/ar7/gpio.h index 7d665ff62..00418b586 100644 --- a/target/linux/ar7/files/include/asm-mips/ar7/gpio.h +++ b/target/linux/ar7/files/include/asm-mips/ar7/gpio.h @@ -41,15 +41,14 @@ static inline int gpio_get_value(unsigned gpio)  static inline void gpio_set_value(unsigned gpio, int value)  { -	static unsigned addr; +	static void __iomem *gpio_out;  	unsigned tmp; -	void __iomem *gpio_out = -		(void __iomem *)KSEG1ADDR(AR7_REGS_GPIO + AR7_GPIO_OUTPUT); -	if (!addr) -		addr = readl(gpio_out); +	if (!gpio_out) +		gpio_out = (void __iomem *) +				KSEG1ADDR(AR7_REGS_GPIO + AR7_GPIO_OUTPUT); -	tmp = addr & ~(1 << gpio); +	tmp = readl(gpio_out) & ~(1 << gpio);  	if (value)  		tmp |= 1 << gpio;  	writel(tmp, gpio_out); | 
