Lines Matching refs:gpio
13 #include <linux/gpio/driver.h>
26 static int ssb_gpio_to_irq(struct gpio_chip *chip, unsigned int gpio)
31 return irq_find_mapping(bus->irq_domain, gpio);
41 static int ssb_gpio_chipco_get_value(struct gpio_chip *chip, unsigned int gpio)
45 return !!ssb_chipco_gpio_in(&bus->chipco, 1 << gpio);
48 static void ssb_gpio_chipco_set_value(struct gpio_chip *chip, unsigned int gpio,
53 ssb_chipco_gpio_out(&bus->chipco, 1 << gpio, value ? 1 << gpio : 0);
57 unsigned int gpio)
61 ssb_chipco_gpio_outen(&bus->chipco, 1 << gpio, 0);
66 unsigned int gpio, int value)
70 ssb_chipco_gpio_outen(&bus->chipco, 1 << gpio, 1 << gpio);
71 ssb_chipco_gpio_out(&bus->chipco, 1 << gpio, value ? 1 << gpio : 0);
75 static int ssb_gpio_chipco_request(struct gpio_chip *chip, unsigned int gpio)
79 ssb_chipco_gpio_control(&bus->chipco, 1 << gpio, 0);
81 ssb_chipco_gpio_pulldown(&bus->chipco, 1 << gpio, 0);
83 ssb_chipco_gpio_pullup(&bus->chipco, 1 << gpio, 1 << gpio);
88 static void ssb_gpio_chipco_free(struct gpio_chip *chip, unsigned int gpio)
93 ssb_chipco_gpio_pullup(&bus->chipco, 1 << gpio, 0);
100 int gpio = irqd_to_hwirq(d);
102 ssb_chipco_gpio_intmask(&bus->chipco, BIT(gpio), 0);
108 int gpio = irqd_to_hwirq(d);
109 u32 val = ssb_chipco_gpio_in(&bus->chipco, BIT(gpio));
111 ssb_chipco_gpio_polarity(&bus->chipco, BIT(gpio), val);
112 ssb_chipco_gpio_intmask(&bus->chipco, BIT(gpio), BIT(gpio));
129 int gpio;
134 for_each_set_bit(gpio, &irqs, bus->gpio.ngpio)
135 generic_handle_irq(ssb_gpio_to_irq(&bus->gpio, gpio));
144 struct gpio_chip *chip = &bus->gpio;
145 int gpio, hwirq, err;
156 for (gpio = 0; gpio < chip->ngpio; gpio++) {
157 int irq = irq_create_mapping(bus->irq_domain, gpio);
166 "gpio", bus);
176 for (gpio = 0; gpio < chip->ngpio; gpio++) {
177 int irq = irq_find_mapping(bus->irq_domain, gpio);
189 struct gpio_chip *chip = &bus->gpio;
190 int gpio;
197 for (gpio = 0; gpio < chip->ngpio; gpio++) {
198 int irq = irq_find_mapping(bus->irq_domain, gpio);
217 struct gpio_chip *chip = &bus->gpio;
259 static int ssb_gpio_extif_get_value(struct gpio_chip *chip, unsigned int gpio)
263 return !!ssb_extif_gpio_in(&bus->extif, 1 << gpio);
266 static void ssb_gpio_extif_set_value(struct gpio_chip *chip, unsigned int gpio,
271 ssb_extif_gpio_out(&bus->extif, 1 << gpio, value ? 1 << gpio : 0);
275 unsigned int gpio)
279 ssb_extif_gpio_outen(&bus->extif, 1 << gpio, 0);
284 unsigned int gpio, int value)
288 ssb_extif_gpio_outen(&bus->extif, 1 << gpio, 1 << gpio);
289 ssb_extif_gpio_out(&bus->extif, 1 << gpio, value ? 1 << gpio : 0);
297 int gpio = irqd_to_hwirq(d);
299 ssb_extif_gpio_intmask(&bus->extif, BIT(gpio), 0);
305 int gpio = irqd_to_hwirq(d);
306 u32 val = ssb_extif_gpio_in(&bus->extif, BIT(gpio));
308 ssb_extif_gpio_polarity(&bus->extif, BIT(gpio), val);
309 ssb_extif_gpio_intmask(&bus->extif, BIT(gpio), BIT(gpio));
326 int gpio;
331 for_each_set_bit(gpio, &irqs, bus->gpio.ngpio)
332 generic_handle_irq(ssb_gpio_to_irq(&bus->gpio, gpio));
341 struct gpio_chip *chip = &bus->gpio;
342 int gpio, hwirq, err;
353 for (gpio = 0; gpio < chip->ngpio; gpio++) {
354 int irq = irq_create_mapping(bus->irq_domain, gpio);
363 "gpio", bus);
372 for (gpio = 0; gpio < chip->ngpio; gpio++) {
373 int irq = irq_find_mapping(bus->irq_domain, gpio);
385 struct gpio_chip *chip = &bus->gpio;
386 int gpio;
392 for (gpio = 0; gpio < chip->ngpio; gpio++) {
393 int irq = irq_find_mapping(bus->irq_domain, gpio);
412 struct gpio_chip *chip = &bus->gpio;
470 gpiochip_remove(&bus->gpio);