aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/ath79/gpio.c30
1 files changed, 6 insertions, 24 deletions
diff --git a/arch/mips/ath79/gpio.c b/arch/mips/ath79/gpio.c
index 662a10ecd8e7..b7ed207e94a1 100644
--- a/arch/mips/ath79/gpio.c
+++ b/arch/mips/ath79/gpio.c
@@ -154,46 +154,28 @@ static void __iomem *ath79_gpio_get_function_reg(void)
154 return ath79_gpio_base + reg; 154 return ath79_gpio_base + reg;
155} 155}
156 156
157void ath79_gpio_function_enable(u32 mask) 157void ath79_gpio_function_setup(u32 set, u32 clear)
158{ 158{
159 void __iomem *reg = ath79_gpio_get_function_reg(); 159 void __iomem *reg = ath79_gpio_get_function_reg();
160 unsigned long flags; 160 unsigned long flags;
161 161
162 spin_lock_irqsave(&ath79_gpio_lock, flags); 162 spin_lock_irqsave(&ath79_gpio_lock, flags);
163 163
164 __raw_writel(__raw_readl(reg) | mask, reg); 164 __raw_writel((__raw_readl(reg) & ~clear) | set, reg);
165 /* flush write */ 165 /* flush write */
166 __raw_readl(reg); 166 __raw_readl(reg);
167 167
168 spin_unlock_irqrestore(&ath79_gpio_lock, flags); 168 spin_unlock_irqrestore(&ath79_gpio_lock, flags);
169} 169}
170 170
171void ath79_gpio_function_disable(u32 mask) 171void ath79_gpio_function_enable(u32 mask)
172{ 172{
173 void __iomem *reg = ath79_gpio_get_function_reg(); 173 ath79_gpio_function_setup(mask, 0);
174 unsigned long flags;
175
176 spin_lock_irqsave(&ath79_gpio_lock, flags);
177
178 __raw_writel(__raw_readl(reg) & ~mask, reg);
179 /* flush write */
180 __raw_readl(reg);
181
182 spin_unlock_irqrestore(&ath79_gpio_lock, flags);
183} 174}
184 175
185void ath79_gpio_function_setup(u32 set, u32 clear) 176void ath79_gpio_function_disable(u32 mask)
186{ 177{
187 void __iomem *reg = ath79_gpio_get_function_reg(); 178 ath79_gpio_function_setup(0, mask);
188 unsigned long flags;
189
190 spin_lock_irqsave(&ath79_gpio_lock, flags);
191
192 __raw_writel((__raw_readl(reg) & ~clear) | set, reg);
193 /* flush write */
194 __raw_readl(reg);
195
196 spin_unlock_irqrestore(&ath79_gpio_lock, flags);
197} 179}
198 180
199void __init ath79_gpio_init(void) 181void __init ath79_gpio_init(void)