diff options
Diffstat (limited to 'arch/avr32/mach-at32ap/pio.c')
-rw-r--r-- | arch/avr32/mach-at32ap/pio.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/avr32/mach-at32ap/pio.c b/arch/avr32/mach-at32ap/pio.c index 405ee6bad4ce..90ef538ae547 100644 --- a/arch/avr32/mach-at32ap/pio.c +++ b/arch/avr32/mach-at32ap/pio.c | |||
@@ -134,6 +134,25 @@ fail: | |||
134 | dump_stack(); | 134 | dump_stack(); |
135 | } | 135 | } |
136 | 136 | ||
137 | /* | ||
138 | * Undo a previous pin reservation. Will not affect the hardware | ||
139 | * configuration. | ||
140 | */ | ||
141 | void at32_deselect_pin(unsigned int pin) | ||
142 | { | ||
143 | struct pio_device *pio; | ||
144 | unsigned int pin_index = pin & 0x1f; | ||
145 | |||
146 | pio = gpio_to_pio(pin); | ||
147 | if (unlikely(!pio)) { | ||
148 | printk("pio: invalid pin %u\n", pin); | ||
149 | dump_stack(); | ||
150 | return; | ||
151 | } | ||
152 | |||
153 | clear_bit(pin_index, &pio->pinmux_mask); | ||
154 | } | ||
155 | |||
137 | /* Reserve a pin, preventing anyone else from changing its configuration. */ | 156 | /* Reserve a pin, preventing anyone else from changing its configuration. */ |
138 | void __init at32_reserve_pin(unsigned int pin) | 157 | void __init at32_reserve_pin(unsigned int pin) |
139 | { | 158 | { |