Lines Matching full:gpio

2  * GPIO functions for Au1000, Au1500, Au1100, Au1550, Au1200
14 /* The default GPIO numberspace as documented in the Alchemy manuals.
43 struct gpio;
45 static inline int au1000_gpio1_to_irq(int gpio) in au1000_gpio1_to_irq() argument
47 return MAKE_IRQ(1, gpio - ALCHEMY_GPIO1_BASE); in au1000_gpio1_to_irq()
50 static inline int au1000_gpio2_to_irq(int gpio) in au1000_gpio2_to_irq() argument
63 static inline int au1500_gpio1_to_irq(int gpio) in au1500_gpio1_to_irq() argument
65 gpio -= ALCHEMY_GPIO1_BASE; in au1500_gpio1_to_irq()
67 switch (gpio) { in au1500_gpio1_to_irq()
70 case 23 ... 28: return MAKE_IRQ(1, gpio); in au1500_gpio1_to_irq()
76 static inline int au1500_gpio2_to_irq(int gpio) in au1500_gpio2_to_irq() argument
78 gpio -= ALCHEMY_GPIO2_BASE; in au1500_gpio2_to_irq()
80 switch (gpio) { in au1500_gpio2_to_irq()
81 case 0 ... 3: return MAKE_IRQ(1, 16 + gpio - 0); in au1500_gpio2_to_irq()
82 case 4 ... 5: return MAKE_IRQ(1, 21 + gpio - 4); in au1500_gpio2_to_irq()
83 case 6 ... 7: return MAKE_IRQ(1, 29 + gpio - 6); in au1500_gpio2_to_irq()
109 static inline int au1100_gpio1_to_irq(int gpio) in au1100_gpio1_to_irq() argument
111 return MAKE_IRQ(1, gpio - ALCHEMY_GPIO1_BASE); in au1100_gpio1_to_irq()
114 static inline int au1100_gpio2_to_irq(int gpio) in au1100_gpio2_to_irq() argument
116 gpio -= ALCHEMY_GPIO2_BASE; in au1100_gpio2_to_irq()
118 if ((gpio >= 8) && (gpio <= 15)) in au1100_gpio2_to_irq()
136 static inline int au1550_gpio1_to_irq(int gpio) in au1550_gpio1_to_irq() argument
138 gpio -= ALCHEMY_GPIO1_BASE; in au1550_gpio1_to_irq()
140 switch (gpio) { in au1550_gpio1_to_irq()
142 case 20 ... 28: return MAKE_IRQ(1, gpio); in au1550_gpio1_to_irq()
143 case 16 ... 17: return MAKE_IRQ(1, 18 + gpio - 16); in au1550_gpio1_to_irq()
149 static inline int au1550_gpio2_to_irq(int gpio) in au1550_gpio2_to_irq() argument
151 gpio -= ALCHEMY_GPIO2_BASE; in au1550_gpio2_to_irq()
153 switch (gpio) { in au1550_gpio2_to_irq()
156 case 6 ... 7: return MAKE_IRQ(1, 29 + gpio - 6); in au1550_gpio2_to_irq()
180 static inline int au1200_gpio1_to_irq(int gpio) in au1200_gpio1_to_irq() argument
182 return MAKE_IRQ(1, gpio - ALCHEMY_GPIO1_BASE); in au1200_gpio1_to_irq()
185 static inline int au1200_gpio2_to_irq(int gpio) in au1200_gpio2_to_irq() argument
187 gpio -= ALCHEMY_GPIO2_BASE; in au1200_gpio2_to_irq()
189 switch (gpio) { in au1200_gpio2_to_irq()
190 case 0 ... 2: return MAKE_IRQ(0, 5 + gpio - 0); in au1200_gpio2_to_irq()
192 case 4 ... 7: return MAKE_IRQ(0, 24 + gpio - 4); in au1200_gpio2_to_irq()
216 * GPIO1 block macros for common linux gpio functions.
218 static inline void alchemy_gpio1_set_value(int gpio, int v) in alchemy_gpio1_set_value() argument
220 unsigned long mask = 1 << (gpio - ALCHEMY_GPIO1_BASE); in alchemy_gpio1_set_value()
225 static inline int alchemy_gpio1_get_value(int gpio) in alchemy_gpio1_get_value() argument
227 unsigned long mask = 1 << (gpio - ALCHEMY_GPIO1_BASE); in alchemy_gpio1_get_value()
231 static inline int alchemy_gpio1_direction_input(int gpio) in alchemy_gpio1_direction_input() argument
233 unsigned long mask = 1 << (gpio - ALCHEMY_GPIO1_BASE); in alchemy_gpio1_direction_input()
238 static inline int alchemy_gpio1_direction_output(int gpio, int v) in alchemy_gpio1_direction_output() argument
243 alchemy_gpio1_set_value(gpio, v); in alchemy_gpio1_direction_output()
247 static inline int alchemy_gpio1_is_valid(int gpio) in alchemy_gpio1_is_valid() argument
249 return ((gpio >= ALCHEMY_GPIO1_BASE) && (gpio <= ALCHEMY_GPIO1_MAX)); in alchemy_gpio1_is_valid()
252 static inline int alchemy_gpio1_to_irq(int gpio) in alchemy_gpio1_to_irq() argument
256 return au1000_gpio1_to_irq(gpio); in alchemy_gpio1_to_irq()
258 return au1100_gpio1_to_irq(gpio); in alchemy_gpio1_to_irq()
260 return au1500_gpio1_to_irq(gpio); in alchemy_gpio1_to_irq()
262 return au1550_gpio1_to_irq(gpio); in alchemy_gpio1_to_irq()
264 return au1200_gpio1_to_irq(gpio); in alchemy_gpio1_to_irq()
281 * GPIO2 block macros for common linux GPIO functions. The 'gpio'
284 static inline void __alchemy_gpio2_mod_dir(int gpio, int to_out) in __alchemy_gpio2_mod_dir() argument
287 unsigned long mask = 1 << (gpio - ALCHEMY_GPIO2_BASE); in __alchemy_gpio2_mod_dir()
298 static inline void alchemy_gpio2_set_value(int gpio, int v) in alchemy_gpio2_set_value() argument
302 mask = ((v) ? 0x00010001 : 0x00010000) << (gpio - ALCHEMY_GPIO2_BASE); in alchemy_gpio2_set_value()
307 static inline int alchemy_gpio2_get_value(int gpio) in alchemy_gpio2_get_value() argument
311 (1 << (gpio - ALCHEMY_GPIO2_BASE)); in alchemy_gpio2_get_value()
314 static inline int alchemy_gpio2_direction_input(int gpio) in alchemy_gpio2_direction_input() argument
318 __alchemy_gpio2_mod_dir(gpio, 0); in alchemy_gpio2_direction_input()
323 static inline int alchemy_gpio2_direction_output(int gpio, int v) in alchemy_gpio2_direction_output() argument
326 alchemy_gpio2_set_value(gpio, v); in alchemy_gpio2_direction_output()
328 __alchemy_gpio2_mod_dir(gpio, 1); in alchemy_gpio2_direction_output()
333 static inline int alchemy_gpio2_is_valid(int gpio) in alchemy_gpio2_is_valid() argument
335 return ((gpio >= ALCHEMY_GPIO2_BASE) && (gpio <= ALCHEMY_GPIO2_MAX)); in alchemy_gpio2_is_valid()
338 static inline int alchemy_gpio2_to_irq(int gpio) in alchemy_gpio2_to_irq() argument
342 return au1000_gpio2_to_irq(gpio); in alchemy_gpio2_to_irq()
344 return au1100_gpio2_to_irq(gpio); in alchemy_gpio2_to_irq()
346 return au1500_gpio2_to_irq(gpio); in alchemy_gpio2_to_irq()
348 return au1550_gpio2_to_irq(gpio); in alchemy_gpio2_to_irq()
350 return au1200_gpio2_to_irq(gpio); in alchemy_gpio2_to_irq()
379 * can be enabled. As with all other GPIO-based interrupts, the INTC
464 /* wrappers for on-chip gpios; can be used before gpio chips have been
467 static inline int alchemy_gpio_direction_input(int gpio) in alchemy_gpio_direction_input() argument
469 return (gpio >= ALCHEMY_GPIO2_BASE) ? in alchemy_gpio_direction_input()
470 alchemy_gpio2_direction_input(gpio) : in alchemy_gpio_direction_input()
471 alchemy_gpio1_direction_input(gpio); in alchemy_gpio_direction_input()
474 static inline int alchemy_gpio_direction_output(int gpio, int v) in alchemy_gpio_direction_output() argument
476 return (gpio >= ALCHEMY_GPIO2_BASE) ? in alchemy_gpio_direction_output()
477 alchemy_gpio2_direction_output(gpio, v) : in alchemy_gpio_direction_output()
478 alchemy_gpio1_direction_output(gpio, v); in alchemy_gpio_direction_output()
481 static inline int alchemy_gpio_get_value(int gpio) in alchemy_gpio_get_value() argument
483 return (gpio >= ALCHEMY_GPIO2_BASE) ? in alchemy_gpio_get_value()
484 alchemy_gpio2_get_value(gpio) : in alchemy_gpio_get_value()
485 alchemy_gpio1_get_value(gpio); in alchemy_gpio_get_value()
488 static inline void alchemy_gpio_set_value(int gpio, int v) in alchemy_gpio_set_value() argument
490 if (gpio >= ALCHEMY_GPIO2_BASE) in alchemy_gpio_set_value()
491 alchemy_gpio2_set_value(gpio, v); in alchemy_gpio_set_value()
493 alchemy_gpio1_set_value(gpio, v); in alchemy_gpio_set_value()
496 static inline int alchemy_gpio_is_valid(int gpio) in alchemy_gpio_is_valid() argument
498 return (gpio >= ALCHEMY_GPIO2_BASE) ? in alchemy_gpio_is_valid()
499 alchemy_gpio2_is_valid(gpio) : in alchemy_gpio_is_valid()
500 alchemy_gpio1_is_valid(gpio); in alchemy_gpio_is_valid()
503 static inline int alchemy_gpio_to_irq(int gpio) in alchemy_gpio_to_irq() argument
505 return (gpio >= ALCHEMY_GPIO2_BASE) ? in alchemy_gpio_to_irq()
506 alchemy_gpio2_to_irq(gpio) : in alchemy_gpio_to_irq()
507 alchemy_gpio1_to_irq(gpio); in alchemy_gpio_to_irq()