aboutsummaryrefslogtreecommitdiffstats
path: root/arch/avr32/mach-at32ap/pio.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/avr32/mach-at32ap/pio.c')
-rw-r--r--arch/avr32/mach-at32ap/pio.c19
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 */
141void 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. */
138void __init at32_reserve_pin(unsigned int pin) 157void __init at32_reserve_pin(unsigned int pin)
139{ 158{