Lines Matching refs:kona_gpio
73 struct bcm_kona_gpio *kona_gpio;
83 static void bcm_kona_gpio_lock_gpio(struct bcm_kona_gpio *kona_gpio,
90 raw_spin_lock_irqsave(&kona_gpio->lock, flags);
92 val = readl(kona_gpio->reg_base + GPIO_PWD_STATUS(bank_id));
94 bcm_kona_gpio_write_lock_regs(kona_gpio->reg_base, bank_id, val);
96 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
99 static void bcm_kona_gpio_unlock_gpio(struct bcm_kona_gpio *kona_gpio,
106 raw_spin_lock_irqsave(&kona_gpio->lock, flags);
108 val = readl(kona_gpio->reg_base + GPIO_PWD_STATUS(bank_id));
110 bcm_kona_gpio_write_lock_regs(kona_gpio->reg_base, bank_id, val);
112 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
117 struct bcm_kona_gpio *kona_gpio = gpiochip_get_data(chip);
118 void __iomem *reg_base = kona_gpio->reg_base;
127 struct bcm_kona_gpio *kona_gpio;
134 kona_gpio = gpiochip_get_data(chip);
135 reg_base = kona_gpio->reg_base;
136 raw_spin_lock_irqsave(&kona_gpio->lock, flags);
149 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
154 struct bcm_kona_gpio *kona_gpio;
161 kona_gpio = gpiochip_get_data(chip);
162 reg_base = kona_gpio->reg_base;
163 raw_spin_lock_irqsave(&kona_gpio->lock, flags);
173 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
181 struct bcm_kona_gpio *kona_gpio = gpiochip_get_data(chip);
183 bcm_kona_gpio_unlock_gpio(kona_gpio, gpio);
189 struct bcm_kona_gpio *kona_gpio = gpiochip_get_data(chip);
191 bcm_kona_gpio_lock_gpio(kona_gpio, gpio);
196 struct bcm_kona_gpio *kona_gpio;
201 kona_gpio = gpiochip_get_data(chip);
202 reg_base = kona_gpio->reg_base;
203 raw_spin_lock_irqsave(&kona_gpio->lock, flags);
210 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
218 struct bcm_kona_gpio *kona_gpio;
225 kona_gpio = gpiochip_get_data(chip);
226 reg_base = kona_gpio->reg_base;
227 raw_spin_lock_irqsave(&kona_gpio->lock, flags);
239 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
246 struct bcm_kona_gpio *kona_gpio;
248 kona_gpio = gpiochip_get_data(chip);
249 if (gpio >= kona_gpio->gpio_chip.ngpio)
251 return irq_create_mapping(kona_gpio->irq_domain, gpio);
257 struct bcm_kona_gpio *kona_gpio;
262 kona_gpio = gpiochip_get_data(chip);
263 reg_base = kona_gpio->reg_base;
283 raw_spin_lock_irqsave(&kona_gpio->lock, flags);
298 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
332 struct bcm_kona_gpio *kona_gpio;
340 kona_gpio = irq_data_get_irq_chip_data(d);
341 reg_base = kona_gpio->reg_base;
342 raw_spin_lock_irqsave(&kona_gpio->lock, flags);
348 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
353 struct bcm_kona_gpio *kona_gpio;
361 kona_gpio = irq_data_get_irq_chip_data(d);
362 reg_base = kona_gpio->reg_base;
363 raw_spin_lock_irqsave(&kona_gpio->lock, flags);
368 gpiochip_disable_irq(&kona_gpio->gpio_chip, gpio);
370 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
375 struct bcm_kona_gpio *kona_gpio;
383 kona_gpio = irq_data_get_irq_chip_data(d);
384 reg_base = kona_gpio->reg_base;
385 raw_spin_lock_irqsave(&kona_gpio->lock, flags);
390 gpiochip_enable_irq(&kona_gpio->gpio_chip, gpio);
392 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
397 struct bcm_kona_gpio *kona_gpio;
404 kona_gpio = irq_data_get_irq_chip_data(d);
405 reg_base = kona_gpio->reg_base;
423 dev_err(kona_gpio->gpio_chip.parent,
428 raw_spin_lock_irqsave(&kona_gpio->lock, flags);
435 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags);
451 * For bank interrupts, we can't use chip_data to store the kona_gpio
455 reg_base = bank->kona_gpio->reg_base;
469 generic_handle_domain_irq(bank->kona_gpio->irq_domain,
479 struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d);
481 return gpiochip_reqres_irq(&kona_gpio->gpio_chip, d->hwirq);
486 struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d);
488 gpiochip_relres_irq(&kona_gpio->gpio_chip, d->hwirq);
540 static void bcm_kona_gpio_reset(struct bcm_kona_gpio *kona_gpio)
545 reg_base = kona_gpio->reg_base;
547 for (i = 0; i < kona_gpio->num_bank; i++) {
561 struct bcm_kona_gpio *kona_gpio;
566 kona_gpio = devm_kzalloc(dev, sizeof(*kona_gpio), GFP_KERNEL);
567 if (!kona_gpio)
570 kona_gpio->gpio_chip = template_chip;
571 chip = &kona_gpio->gpio_chip;
579 kona_gpio->num_bank = ret;
581 if (kona_gpio->num_bank > GPIO_MAX_BANK_NUM) {
586 kona_gpio->banks = devm_kcalloc(dev,
587 kona_gpio->num_bank,
588 sizeof(*kona_gpio->banks),
590 if (!kona_gpio->banks)
594 chip->ngpio = kona_gpio->num_bank * GPIO_PER_BANK;
596 kona_gpio->irq_domain = irq_domain_create_linear(dev_fwnode(dev),
599 kona_gpio);
600 if (!kona_gpio->irq_domain) {
605 kona_gpio->reg_base = devm_platform_ioremap_resource(pdev, 0);
606 if (IS_ERR(kona_gpio->reg_base)) {
607 ret = PTR_ERR(kona_gpio->reg_base);
611 for (i = 0; i < kona_gpio->num_bank; i++) {
612 bank = &kona_gpio->banks[i];
615 bank->kona_gpio = kona_gpio;
625 bcm_kona_gpio_reset(kona_gpio);
627 ret = devm_gpiochip_add_data(dev, chip, kona_gpio);
632 for (i = 0; i < kona_gpio->num_bank; i++) {
633 bank = &kona_gpio->banks[i];
639 raw_spin_lock_init(&kona_gpio->lock);
644 irq_domain_remove(kona_gpio->irq_domain);