Lines Matching refs:pin

96 __set_direction(struct orion_gpio_chip *ochip, unsigned pin, int input)  in __set_direction()  argument
102 u |= 1 << pin; in __set_direction()
104 u &= ~(1 << pin); in __set_direction()
108 static void __set_level(struct orion_gpio_chip *ochip, unsigned pin, int high) in __set_level() argument
114 u |= 1 << pin; in __set_level()
116 u &= ~(1 << pin); in __set_level()
121 __set_blinking(struct orion_gpio_chip *ochip, unsigned pin, int blink) in __set_blinking() argument
127 u |= 1 << pin; in __set_blinking()
129 u &= ~(1 << pin); in __set_blinking()
134 orion_gpio_is_valid(struct orion_gpio_chip *ochip, unsigned pin, int mode) in orion_gpio_is_valid() argument
136 if (pin >= ochip->chip.ngpio) in orion_gpio_is_valid()
139 if ((mode & GPIO_INPUT_OK) && !test_bit(pin, &ochip->valid_input)) in orion_gpio_is_valid()
142 if ((mode & GPIO_OUTPUT_OK) && !test_bit(pin, &ochip->valid_output)) in orion_gpio_is_valid()
148 pr_debug("%s: invalid GPIO %d\n", __func__, pin); in orion_gpio_is_valid()
155 static int orion_gpio_request(struct gpio_chip *chip, unsigned pin) in orion_gpio_request() argument
160 if (orion_gpio_is_valid(ochip, pin, GPIO_INPUT_OK) || in orion_gpio_request()
161 orion_gpio_is_valid(ochip, pin, GPIO_OUTPUT_OK)) in orion_gpio_request()
167 static int orion_gpio_direction_input(struct gpio_chip *chip, unsigned pin) in orion_gpio_direction_input() argument
173 if (!orion_gpio_is_valid(ochip, pin, GPIO_INPUT_OK)) in orion_gpio_direction_input()
177 __set_direction(ochip, pin, 1); in orion_gpio_direction_input()
183 static int orion_gpio_get(struct gpio_chip *chip, unsigned pin) in orion_gpio_get() argument
189 if (readl(GPIO_IO_CONF(ochip)) & (1 << pin)) { in orion_gpio_get()
195 return (val >> pin) & 1; in orion_gpio_get()
199 orion_gpio_direction_output(struct gpio_chip *chip, unsigned pin, int value) in orion_gpio_direction_output() argument
205 if (!orion_gpio_is_valid(ochip, pin, GPIO_OUTPUT_OK)) in orion_gpio_direction_output()
209 __set_blinking(ochip, pin, 0); in orion_gpio_direction_output()
210 __set_level(ochip, pin, value); in orion_gpio_direction_output()
211 __set_direction(ochip, pin, 0); in orion_gpio_direction_output()
217 static void orion_gpio_set(struct gpio_chip *chip, unsigned pin, int value) in orion_gpio_set() argument
224 __set_level(ochip, pin, value); in orion_gpio_set()
228 static int orion_gpio_to_irq(struct gpio_chip *chip, unsigned pin) in orion_gpio_to_irq() argument
234 ochip->secondary_irq_base + pin); in orion_gpio_to_irq()
240 static struct orion_gpio_chip *orion_gpio_chip_find(int pin) in orion_gpio_chip_find() argument
248 if (pin >= chip->base && pin < chip->base + chip->ngpio) in orion_gpio_chip_find()
255 void __init orion_gpio_set_unused(unsigned pin) in orion_gpio_set_unused() argument
257 struct orion_gpio_chip *ochip = orion_gpio_chip_find(pin); in orion_gpio_set_unused()
262 pin -= ochip->chip.base; in orion_gpio_set_unused()
265 __set_level(ochip, pin, 0); in orion_gpio_set_unused()
266 __set_direction(ochip, pin, 0); in orion_gpio_set_unused()
269 void __init orion_gpio_set_valid(unsigned pin, int mode) in orion_gpio_set_valid() argument
271 struct orion_gpio_chip *ochip = orion_gpio_chip_find(pin); in orion_gpio_set_valid()
276 pin -= ochip->chip.base; in orion_gpio_set_valid()
282 __set_bit(pin, &ochip->valid_input); in orion_gpio_set_valid()
284 __clear_bit(pin, &ochip->valid_input); in orion_gpio_set_valid()
287 __set_bit(pin, &ochip->valid_output); in orion_gpio_set_valid()
289 __clear_bit(pin, &ochip->valid_output); in orion_gpio_set_valid()
292 void orion_gpio_set_blink(unsigned pin, int blink) in orion_gpio_set_blink() argument
294 struct orion_gpio_chip *ochip = orion_gpio_chip_find(pin); in orion_gpio_set_blink()
301 __set_level(ochip, pin & 31, 0); in orion_gpio_set_blink()
302 __set_blinking(ochip, pin & 31, blink); in orion_gpio_set_blink()
362 int pin; in gpio_irq_set_type() local
365 pin = d->hwirq - ochip->secondary_irq_base; in gpio_irq_set_type()
367 u = readl(GPIO_IO_CONF(ochip)) & (1 << pin); in gpio_irq_set_type()
386 u &= ~(1 << pin); in gpio_irq_set_type()
390 u |= 1 << pin; in gpio_irq_set_type()
401 if (v & (1 << pin)) in gpio_irq_set_type()
402 u |= 1 << pin; /* falling */ in gpio_irq_set_type()
404 u &= ~(1 << pin); /* rising */ in gpio_irq_set_type()