diff options
Diffstat (limited to 'arch/arm/mach-orion5x/gpio.c')
-rw-r--r-- | arch/arm/mach-orion5x/gpio.c | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/arch/arm/mach-orion5x/gpio.c b/arch/arm/mach-orion5x/gpio.c index 8108c316c426..d09797990f41 100644 --- a/arch/arm/mach-orion5x/gpio.c +++ b/arch/arm/mach-orion5x/gpio.c | |||
@@ -24,9 +24,12 @@ static DEFINE_SPINLOCK(gpio_lock); | |||
24 | static unsigned long gpio_valid[BITS_TO_LONGS(GPIO_MAX)]; | 24 | static unsigned long gpio_valid[BITS_TO_LONGS(GPIO_MAX)]; |
25 | static const char *gpio_label[GPIO_MAX]; /* non null for allocated GPIOs */ | 25 | static const char *gpio_label[GPIO_MAX]; /* non null for allocated GPIOs */ |
26 | 26 | ||
27 | void __init orion5x_gpio_set_valid_pins(u32 pins) | 27 | void __init orion5x_gpio_set_valid(unsigned pin, int valid) |
28 | { | 28 | { |
29 | gpio_valid[0] = pins; | 29 | if (valid) |
30 | __set_bit(pin, gpio_valid); | ||
31 | else | ||
32 | __clear_bit(pin, gpio_valid); | ||
30 | } | 33 | } |
31 | 34 | ||
32 | /* | 35 | /* |
@@ -93,10 +96,10 @@ int gpio_get_value(unsigned pin) | |||
93 | { | 96 | { |
94 | int val, mask = 1 << pin; | 97 | int val, mask = 1 << pin; |
95 | 98 | ||
96 | if (orion5x_read(GPIO_IO_CONF) & mask) | 99 | if (readl(GPIO_IO_CONF) & mask) |
97 | val = orion5x_read(GPIO_DATA_IN) ^ orion5x_read(GPIO_IN_POL); | 100 | val = readl(GPIO_DATA_IN) ^ readl(GPIO_IN_POL); |
98 | else | 101 | else |
99 | val = orion5x_read(GPIO_OUT); | 102 | val = readl(GPIO_OUT); |
100 | 103 | ||
101 | return val & mask; | 104 | return val & mask; |
102 | } | 105 | } |
@@ -188,39 +191,39 @@ void gpio_display(void) | |||
188 | printk("GPIO, free\n"); | 191 | printk("GPIO, free\n"); |
189 | } else { | 192 | } else { |
190 | printk("GPIO, used by %s, ", gpio_label[i]); | 193 | printk("GPIO, used by %s, ", gpio_label[i]); |
191 | if (orion5x_read(GPIO_IO_CONF) & (1 << i)) { | 194 | if (readl(GPIO_IO_CONF) & (1 << i)) { |
192 | printk("input, active %s, level %s, edge %s\n", | 195 | printk("input, active %s, level %s, edge %s\n", |
193 | ((orion5x_read(GPIO_IN_POL) >> i) & 1) ? "low" : "high", | 196 | ((readl(GPIO_IN_POL) >> i) & 1) ? "low" : "high", |
194 | ((orion5x_read(GPIO_LEVEL_MASK) >> i) & 1) ? "enabled" : "masked", | 197 | ((readl(GPIO_LEVEL_MASK) >> i) & 1) ? "enabled" : "masked", |
195 | ((orion5x_read(GPIO_EDGE_MASK) >> i) & 1) ? "enabled" : "masked"); | 198 | ((readl(GPIO_EDGE_MASK) >> i) & 1) ? "enabled" : "masked"); |
196 | } else { | 199 | } else { |
197 | printk("output, val=%d\n", (orion5x_read(GPIO_OUT) >> i) & 1); | 200 | printk("output, val=%d\n", (readl(GPIO_OUT) >> i) & 1); |
198 | } | 201 | } |
199 | } | 202 | } |
200 | } | 203 | } |
201 | 204 | ||
202 | printk(KERN_DEBUG "MPP_0_7_CTRL (0x%08x) = 0x%08x\n", | 205 | printk(KERN_DEBUG "MPP_0_7_CTRL (0x%08x) = 0x%08x\n", |
203 | MPP_0_7_CTRL, orion5x_read(MPP_0_7_CTRL)); | 206 | MPP_0_7_CTRL, readl(MPP_0_7_CTRL)); |
204 | printk(KERN_DEBUG "MPP_8_15_CTRL (0x%08x) = 0x%08x\n", | 207 | printk(KERN_DEBUG "MPP_8_15_CTRL (0x%08x) = 0x%08x\n", |
205 | MPP_8_15_CTRL, orion5x_read(MPP_8_15_CTRL)); | 208 | MPP_8_15_CTRL, readl(MPP_8_15_CTRL)); |
206 | printk(KERN_DEBUG "MPP_16_19_CTRL (0x%08x) = 0x%08x\n", | 209 | printk(KERN_DEBUG "MPP_16_19_CTRL (0x%08x) = 0x%08x\n", |
207 | MPP_16_19_CTRL, orion5x_read(MPP_16_19_CTRL)); | 210 | MPP_16_19_CTRL, readl(MPP_16_19_CTRL)); |
208 | printk(KERN_DEBUG "MPP_DEV_CTRL (0x%08x) = 0x%08x\n", | 211 | printk(KERN_DEBUG "MPP_DEV_CTRL (0x%08x) = 0x%08x\n", |
209 | MPP_DEV_CTRL, orion5x_read(MPP_DEV_CTRL)); | 212 | MPP_DEV_CTRL, readl(MPP_DEV_CTRL)); |
210 | printk(KERN_DEBUG "GPIO_OUT (0x%08x) = 0x%08x\n", | 213 | printk(KERN_DEBUG "GPIO_OUT (0x%08x) = 0x%08x\n", |
211 | GPIO_OUT, orion5x_read(GPIO_OUT)); | 214 | GPIO_OUT, readl(GPIO_OUT)); |
212 | printk(KERN_DEBUG "GPIO_IO_CONF (0x%08x) = 0x%08x\n", | 215 | printk(KERN_DEBUG "GPIO_IO_CONF (0x%08x) = 0x%08x\n", |
213 | GPIO_IO_CONF, orion5x_read(GPIO_IO_CONF)); | 216 | GPIO_IO_CONF, readl(GPIO_IO_CONF)); |
214 | printk(KERN_DEBUG "GPIO_BLINK_EN (0x%08x) = 0x%08x\n", | 217 | printk(KERN_DEBUG "GPIO_BLINK_EN (0x%08x) = 0x%08x\n", |
215 | GPIO_BLINK_EN, orion5x_read(GPIO_BLINK_EN)); | 218 | GPIO_BLINK_EN, readl(GPIO_BLINK_EN)); |
216 | printk(KERN_DEBUG "GPIO_IN_POL (0x%08x) = 0x%08x\n", | 219 | printk(KERN_DEBUG "GPIO_IN_POL (0x%08x) = 0x%08x\n", |
217 | GPIO_IN_POL, orion5x_read(GPIO_IN_POL)); | 220 | GPIO_IN_POL, readl(GPIO_IN_POL)); |
218 | printk(KERN_DEBUG "GPIO_DATA_IN (0x%08x) = 0x%08x\n", | 221 | printk(KERN_DEBUG "GPIO_DATA_IN (0x%08x) = 0x%08x\n", |
219 | GPIO_DATA_IN, orion5x_read(GPIO_DATA_IN)); | 222 | GPIO_DATA_IN, readl(GPIO_DATA_IN)); |
220 | printk(KERN_DEBUG "GPIO_LEVEL_MASK (0x%08x) = 0x%08x\n", | 223 | printk(KERN_DEBUG "GPIO_LEVEL_MASK (0x%08x) = 0x%08x\n", |
221 | GPIO_LEVEL_MASK, orion5x_read(GPIO_LEVEL_MASK)); | 224 | GPIO_LEVEL_MASK, readl(GPIO_LEVEL_MASK)); |
222 | printk(KERN_DEBUG "GPIO_EDGE_CAUSE (0x%08x) = 0x%08x\n", | 225 | printk(KERN_DEBUG "GPIO_EDGE_CAUSE (0x%08x) = 0x%08x\n", |
223 | GPIO_EDGE_CAUSE, orion5x_read(GPIO_EDGE_CAUSE)); | 226 | GPIO_EDGE_CAUSE, readl(GPIO_EDGE_CAUSE)); |
224 | printk(KERN_DEBUG "GPIO_EDGE_MASK (0x%08x) = 0x%08x\n", | 227 | printk(KERN_DEBUG "GPIO_EDGE_MASK (0x%08x) = 0x%08x\n", |
225 | GPIO_EDGE_MASK, orion5x_read(GPIO_EDGE_MASK)); | 228 | GPIO_EDGE_MASK, readl(GPIO_EDGE_MASK)); |
226 | } | 229 | } |