Lines Matching defs:gpio
14 #include <linux/gpio/driver.h>
99 static int wpcm450_gpio_irq_bitnum(struct wpcm450_gpio *gpio, struct irq_data *d)
101 const struct wpcm450_bank *bank = gpio->bank;
113 static int wpcm450_irq_bitnum_to_gpio(struct wpcm450_gpio *gpio, int bitnum)
115 const struct wpcm450_bank *bank = gpio->bank;
128 struct wpcm450_gpio *gpio = gpiochip_get_data(irq_data_get_irq_chip_data(d));
129 struct wpcm450_pinctrl *pctrl = gpio->pctrl;
133 bit = wpcm450_gpio_irq_bitnum(gpio, d);
145 struct wpcm450_gpio *gpio = gpiochip_get_data(gc);
146 struct wpcm450_pinctrl *pctrl = gpio->pctrl;
151 bit = wpcm450_gpio_irq_bitnum(gpio, d);
167 struct wpcm450_gpio *gpio = gpiochip_get_data(gc);
168 struct wpcm450_pinctrl *pctrl = gpio->pctrl;
173 bit = wpcm450_gpio_irq_bitnum(gpio, d);
193 static int wpcm450_gpio_get(struct wpcm450_gpio *gpio, int offset)
195 void __iomem *reg = gpio->pctrl->gpio_base + gpio->bank->datain;
199 raw_spin_lock_irqsave(&gpio->pctrl->lock, flags);
201 raw_spin_unlock_irqrestore(&gpio->pctrl->lock, flags);
213 static void wpcm450_gpio_fix_evpol(struct wpcm450_gpio *gpio, unsigned long all)
215 struct wpcm450_pinctrl *pctrl = gpio->pctrl;
219 int offset = wpcm450_irq_bitnum_to_gpio(gpio, bit);
225 level = wpcm450_gpio_get(gpio, offset);
234 } while (wpcm450_gpio_get(gpio, offset) != level);
240 struct wpcm450_gpio *gpio = gpiochip_get_data(irq_data_get_irq_chip_data(d));
241 struct wpcm450_pinctrl *pctrl = gpio->pctrl;
247 bit = wpcm450_gpio_irq_bitnum(gpio, d);
290 wpcm450_gpio_fix_evpol(gpio, BIT(bit));
307 struct wpcm450_gpio *gpio = gpiochip_get_data(irq_desc_get_handler_data(desc));
308 struct wpcm450_pinctrl *pctrl = gpio->pctrl;
315 ours = GENMASK(gpio->bank->num_irqs - 1, 0) << gpio->bank->first_irq_bit;
326 wpcm450_gpio_fix_evpol(gpio, pending & pctrl->both_edges);
330 int offset = wpcm450_irq_bitnum_to_gpio(gpio, bit);
332 generic_handle_domain_irq(gpio->gc.irq.domain, offset);
471 /* add placeholder for none/gpio */
472 WPCM450_GRP(gpio),
555 WPCM450_FUNC(gpio, WPCM450_GRPS);
619 WPCM450_MKFUNC(gpio),
769 #define WPCM450_PIN(n) PINCTRL_PIN(n, "gpio" #n)
926 static int debounce_bitnum(int gpio)
928 if (gpio >= 0 && gpio < 16)
929 return gpio;
1021 struct wpcm450_gpio *gpio = gpiochip_get_data(chip);
1023 return wpcm450_config_set_one(gpio->pctrl, offset, config);
1028 struct wpcm450_gpio *gpio = gpiochip_get_data(chip);
1029 const struct wpcm450_bank *bank = gpio->bank;
1031 return gpiochip_add_pin_range(&gpio->gc, dev_name(gpio->pctrl->dev),
1053 struct wpcm450_gpio *gpio;
1058 if (!fwnode_property_read_bool(child, "gpio-controller"))
1069 gpio = &pctrl->gpio_bank[reg];
1070 gpio->pctrl = pctrl;
1073 gpio->bank = bank;
1082 ret = bgpio_init(&gpio->gc, dev, 4,
1087 gpio->gc.ngpio = bank->length;
1088 gpio->gc.set_config = wpcm450_gpio_set_config;
1089 gpio->gc.fwnode = child;
1090 gpio->gc.add_pin_ranges = wpcm450_gpio_add_pin_ranges;
1092 girq = &gpio->gc.irq;
1116 ret = devm_gpiochip_add_data(dev, &gpio->gc, gpio);