Lines Matching defs:bus
28 struct ssb_bus *bus = gpiochip_get_data(chip);
30 if (bus->bustype == SSB_BUSTYPE_SSB)
31 return irq_find_mapping(bus->irq_domain, gpio);
43 struct ssb_bus *bus = gpiochip_get_data(chip);
45 return !!ssb_chipco_gpio_in(&bus->chipco, 1 << gpio);
51 struct ssb_bus *bus = gpiochip_get_data(chip);
53 ssb_chipco_gpio_out(&bus->chipco, 1 << gpio, value ? 1 << gpio : 0);
61 struct ssb_bus *bus = gpiochip_get_data(chip);
63 ssb_chipco_gpio_outen(&bus->chipco, 1 << gpio, 0);
70 struct ssb_bus *bus = gpiochip_get_data(chip);
72 ssb_chipco_gpio_outen(&bus->chipco, 1 << gpio, 1 << gpio);
73 ssb_chipco_gpio_out(&bus->chipco, 1 << gpio, value ? 1 << gpio : 0);
79 struct ssb_bus *bus = gpiochip_get_data(chip);
81 ssb_chipco_gpio_control(&bus->chipco, 1 << gpio, 0);
83 ssb_chipco_gpio_pulldown(&bus->chipco, 1 << gpio, 0);
85 ssb_chipco_gpio_pullup(&bus->chipco, 1 << gpio, 1 << gpio);
92 struct ssb_bus *bus = gpiochip_get_data(chip);
95 ssb_chipco_gpio_pullup(&bus->chipco, 1 << gpio, 0);
101 struct ssb_bus *bus = irq_data_get_irq_chip_data(d);
104 ssb_chipco_gpio_intmask(&bus->chipco, BIT(gpio), 0);
109 struct ssb_bus *bus = irq_data_get_irq_chip_data(d);
111 u32 val = ssb_chipco_gpio_in(&bus->chipco, BIT(gpio));
113 ssb_chipco_gpio_polarity(&bus->chipco, BIT(gpio), val);
114 ssb_chipco_gpio_intmask(&bus->chipco, BIT(gpio), BIT(gpio));
125 struct ssb_bus *bus = dev_id;
126 struct ssb_chipcommon *chipco = &bus->chipco;
136 for_each_set_bit(gpio, &irqs, bus->gpio.ngpio)
137 generic_handle_domain_irq_safe(bus->irq_domain, gpio);
144 static int ssb_gpio_irq_chipco_domain_init(struct ssb_bus *bus)
146 struct ssb_chipcommon *chipco = &bus->chipco;
147 struct gpio_chip *chip = &bus->gpio;
150 if (bus->bustype != SSB_BUSTYPE_SSB)
153 bus->irq_domain = irq_domain_create_linear(NULL, chip->ngpio, &irq_domain_simple_ops,
155 if (!bus->irq_domain) {
160 int irq = irq_create_mapping(bus->irq_domain, gpio);
162 irq_set_chip_data(irq, bus);
167 hwirq = ssb_mips_irq(bus->chipco.dev) + 2;
169 "gpio", bus);
173 ssb_chipco_gpio_intmask(&bus->chipco, ~0, 0);
180 int irq = irq_find_mapping(bus->irq_domain, gpio);
184 irq_domain_remove(bus->irq_domain);
189 static void ssb_gpio_irq_chipco_domain_exit(struct ssb_bus *bus)
191 struct ssb_chipcommon *chipco = &bus->chipco;
192 struct gpio_chip *chip = &bus->gpio;
195 if (bus->bustype != SSB_BUSTYPE_SSB)
199 free_irq(ssb_mips_irq(bus->chipco.dev) + 2, chipco);
201 int irq = irq_find_mapping(bus->irq_domain, gpio);
205 irq_domain_remove(bus->irq_domain);
208 static int ssb_gpio_irq_chipco_domain_init(struct ssb_bus *bus)
213 static void ssb_gpio_irq_chipco_domain_exit(struct ssb_bus *bus)
218 static int ssb_gpio_chipco_init(struct ssb_bus *bus)
220 struct gpio_chip *chip = &bus->gpio;
239 if (bus->bustype == SSB_BUSTYPE_SSB)
244 err = ssb_gpio_irq_chipco_domain_init(bus);
248 err = gpiochip_add_data(chip, bus);
250 ssb_gpio_irq_chipco_domain_exit(bus);
265 struct ssb_bus *bus = gpiochip_get_data(chip);
267 return !!ssb_extif_gpio_in(&bus->extif, 1 << gpio);
273 struct ssb_bus *bus = gpiochip_get_data(chip);
275 ssb_extif_gpio_out(&bus->extif, 1 << gpio, value ? 1 << gpio : 0);
283 struct ssb_bus *bus = gpiochip_get_data(chip);
285 ssb_extif_gpio_outen(&bus->extif, 1 << gpio, 0);
292 struct ssb_bus *bus = gpiochip_get_data(chip);
294 ssb_extif_gpio_outen(&bus->extif, 1 << gpio, 1 << gpio);
295 ssb_extif_gpio_out(&bus->extif, 1 << gpio, value ? 1 << gpio : 0);
302 struct ssb_bus *bus = irq_data_get_irq_chip_data(d);
305 ssb_extif_gpio_intmask(&bus->extif, BIT(gpio), 0);
310 struct ssb_bus *bus = irq_data_get_irq_chip_data(d);
312 u32 val = ssb_extif_gpio_in(&bus->extif, BIT(gpio));
314 ssb_extif_gpio_polarity(&bus->extif, BIT(gpio), val);
315 ssb_extif_gpio_intmask(&bus->extif, BIT(gpio), BIT(gpio));
326 struct ssb_bus *bus = dev_id;
327 struct ssb_extif *extif = &bus->extif;
337 for_each_set_bit(gpio, &irqs, bus->gpio.ngpio)
338 generic_handle_domain_irq_safe(bus->irq_domain, gpio);
345 static int ssb_gpio_irq_extif_domain_init(struct ssb_bus *bus)
347 struct ssb_extif *extif = &bus->extif;
348 struct gpio_chip *chip = &bus->gpio;
351 if (bus->bustype != SSB_BUSTYPE_SSB)
354 bus->irq_domain = irq_domain_create_linear(NULL, chip->ngpio, &irq_domain_simple_ops,
356 if (!bus->irq_domain) {
361 int irq = irq_create_mapping(bus->irq_domain, gpio);
363 irq_set_chip_data(irq, bus);
368 hwirq = ssb_mips_irq(bus->extif.dev) + 2;
370 "gpio", bus);
374 ssb_extif_gpio_intmask(&bus->extif, ~0, 0);
380 int irq = irq_find_mapping(bus->irq_domain, gpio);
384 irq_domain_remove(bus->irq_domain);
389 static void ssb_gpio_irq_extif_domain_exit(struct ssb_bus *bus)
391 struct ssb_extif *extif = &bus->extif;
392 struct gpio_chip *chip = &bus->gpio;
395 if (bus->bustype != SSB_BUSTYPE_SSB)
398 free_irq(ssb_mips_irq(bus->extif.dev) + 2, extif);
400 int irq = irq_find_mapping(bus->irq_domain, gpio);
404 irq_domain_remove(bus->irq_domain);
407 static int ssb_gpio_irq_extif_domain_init(struct ssb_bus *bus)
412 static void ssb_gpio_irq_extif_domain_exit(struct ssb_bus *bus)
417 static int ssb_gpio_extif_init(struct ssb_bus *bus)
419 struct gpio_chip *chip = &bus->gpio;
436 if (bus->bustype == SSB_BUSTYPE_SSB)
441 err = ssb_gpio_irq_extif_domain_init(bus);
445 err = gpiochip_add_data(chip, bus);
447 ssb_gpio_irq_extif_domain_exit(bus);
455 static int ssb_gpio_extif_init(struct ssb_bus *bus)
465 int ssb_gpio_init(struct ssb_bus *bus)
467 if (ssb_chipco_available(&bus->chipco))
468 return ssb_gpio_chipco_init(bus);
469 else if (ssb_extif_available(&bus->extif))
470 return ssb_gpio_extif_init(bus);
474 int ssb_gpio_unregister(struct ssb_bus *bus)
476 if (ssb_chipco_available(&bus->chipco) ||
477 ssb_extif_available(&bus->extif)) {
478 gpiochip_remove(&bus->gpio);