Lines Matching refs:kona_gpio
80 struct bcm_kona_gpio *kona_gpio; member
90 static void bcm_kona_gpio_lock_gpio(struct bcm_kona_gpio *kona_gpio, in bcm_kona_gpio_lock_gpio() argument
97 raw_spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_lock_gpio()
99 val = readl(kona_gpio->reg_base + GPIO_PWD_STATUS(bank_id)); in bcm_kona_gpio_lock_gpio()
101 bcm_kona_gpio_write_lock_regs(kona_gpio->reg_base, bank_id, val); in bcm_kona_gpio_lock_gpio()
103 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_lock_gpio()
106 static void bcm_kona_gpio_unlock_gpio(struct bcm_kona_gpio *kona_gpio, in bcm_kona_gpio_unlock_gpio() argument
113 raw_spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_unlock_gpio()
115 val = readl(kona_gpio->reg_base + GPIO_PWD_STATUS(bank_id)); in bcm_kona_gpio_unlock_gpio()
117 bcm_kona_gpio_write_lock_regs(kona_gpio->reg_base, bank_id, val); in bcm_kona_gpio_unlock_gpio()
119 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_unlock_gpio()
124 struct bcm_kona_gpio *kona_gpio = gpiochip_get_data(chip); in bcm_kona_gpio_get_dir() local
125 void __iomem *reg_base = kona_gpio->reg_base; in bcm_kona_gpio_get_dir()
134 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_set() local
141 kona_gpio = gpiochip_get_data(chip); in bcm_kona_gpio_set()
142 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_set()
143 raw_spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_set()
156 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_set()
161 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_get() local
168 kona_gpio = gpiochip_get_data(chip); in bcm_kona_gpio_get()
169 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_get()
170 raw_spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_get()
180 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_get()
188 struct bcm_kona_gpio *kona_gpio = gpiochip_get_data(chip); in bcm_kona_gpio_request() local
190 bcm_kona_gpio_unlock_gpio(kona_gpio, gpio); in bcm_kona_gpio_request()
196 struct bcm_kona_gpio *kona_gpio = gpiochip_get_data(chip); in bcm_kona_gpio_free() local
198 bcm_kona_gpio_lock_gpio(kona_gpio, gpio); in bcm_kona_gpio_free()
203 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_direction_input() local
208 kona_gpio = gpiochip_get_data(chip); in bcm_kona_gpio_direction_input()
209 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_direction_input()
210 raw_spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_direction_input()
217 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_direction_input()
225 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_direction_output() local
232 kona_gpio = gpiochip_get_data(chip); in bcm_kona_gpio_direction_output()
233 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_direction_output()
234 raw_spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_direction_output()
246 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_direction_output()
253 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_to_irq() local
255 kona_gpio = gpiochip_get_data(chip); in bcm_kona_gpio_to_irq()
256 if (gpio >= kona_gpio->gpio_chip.ngpio) in bcm_kona_gpio_to_irq()
258 return irq_create_mapping(kona_gpio->irq_domain, gpio); in bcm_kona_gpio_to_irq()
264 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_set_debounce() local
269 kona_gpio = gpiochip_get_data(chip); in bcm_kona_gpio_set_debounce()
270 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_set_debounce()
290 raw_spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_set_debounce()
305 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_set_debounce()
339 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_irq_ack() local
347 kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_ack()
348 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_irq_ack()
349 raw_spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_ack()
355 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_ack()
360 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_irq_mask() local
368 kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_mask()
369 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_irq_mask()
370 raw_spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_mask()
375 gpiochip_disable_irq(&kona_gpio->gpio_chip, gpio); in bcm_kona_gpio_irq_mask()
377 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_mask()
382 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_irq_unmask() local
390 kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_unmask()
391 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_irq_unmask()
392 raw_spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_unmask()
397 gpiochip_enable_irq(&kona_gpio->gpio_chip, gpio); in bcm_kona_gpio_irq_unmask()
399 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_unmask()
404 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_irq_set_type() local
411 kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_set_type()
412 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_irq_set_type()
430 dev_err(kona_gpio->gpio_chip.parent, in bcm_kona_gpio_irq_set_type()
435 raw_spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_set_type()
442 raw_spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_set_type()
462 reg_base = bank->kona_gpio->reg_base; in bcm_kona_gpio_irq_handler()
470 irq_find_mapping(bank->kona_gpio->irq_domain, in bcm_kona_gpio_irq_handler()
488 struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_reqres() local
490 return gpiochip_reqres_irq(&kona_gpio->gpio_chip, d->hwirq); in bcm_kona_gpio_irq_reqres()
495 struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_relres() local
497 gpiochip_relres_irq(&kona_gpio->gpio_chip, d->hwirq); in bcm_kona_gpio_irq_relres()
549 static void bcm_kona_gpio_reset(struct bcm_kona_gpio *kona_gpio) in bcm_kona_gpio_reset() argument
554 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_reset()
556 for (i = 0; i < kona_gpio->num_bank; i++) { in bcm_kona_gpio_reset()
571 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_probe() local
582 kona_gpio = devm_kzalloc(dev, sizeof(*kona_gpio), GFP_KERNEL); in bcm_kona_gpio_probe()
583 if (!kona_gpio) in bcm_kona_gpio_probe()
586 kona_gpio->gpio_chip = template_chip; in bcm_kona_gpio_probe()
587 chip = &kona_gpio->gpio_chip; in bcm_kona_gpio_probe()
595 kona_gpio->num_bank = ret; in bcm_kona_gpio_probe()
597 if (kona_gpio->num_bank > GPIO_MAX_BANK_NUM) { in bcm_kona_gpio_probe()
602 kona_gpio->banks = devm_kcalloc(dev, in bcm_kona_gpio_probe()
603 kona_gpio->num_bank, in bcm_kona_gpio_probe()
604 sizeof(*kona_gpio->banks), in bcm_kona_gpio_probe()
606 if (!kona_gpio->banks) in bcm_kona_gpio_probe()
609 kona_gpio->pdev = pdev; in bcm_kona_gpio_probe()
610 platform_set_drvdata(pdev, kona_gpio); in bcm_kona_gpio_probe()
612 chip->ngpio = kona_gpio->num_bank * GPIO_PER_BANK; in bcm_kona_gpio_probe()
614 kona_gpio->irq_domain = irq_domain_add_linear(dev->of_node, in bcm_kona_gpio_probe()
617 kona_gpio); in bcm_kona_gpio_probe()
618 if (!kona_gpio->irq_domain) { in bcm_kona_gpio_probe()
623 kona_gpio->reg_base = devm_platform_ioremap_resource(pdev, 0); in bcm_kona_gpio_probe()
624 if (IS_ERR(kona_gpio->reg_base)) { in bcm_kona_gpio_probe()
625 ret = PTR_ERR(kona_gpio->reg_base); in bcm_kona_gpio_probe()
629 for (i = 0; i < kona_gpio->num_bank; i++) { in bcm_kona_gpio_probe()
630 bank = &kona_gpio->banks[i]; in bcm_kona_gpio_probe()
633 bank->kona_gpio = kona_gpio; in bcm_kona_gpio_probe()
643 bcm_kona_gpio_reset(kona_gpio); in bcm_kona_gpio_probe()
645 ret = devm_gpiochip_add_data(dev, chip, kona_gpio); in bcm_kona_gpio_probe()
650 for (i = 0; i < kona_gpio->num_bank; i++) { in bcm_kona_gpio_probe()
651 bank = &kona_gpio->banks[i]; in bcm_kona_gpio_probe()
657 raw_spin_lock_init(&kona_gpio->lock); in bcm_kona_gpio_probe()
662 irq_domain_remove(kona_gpio->irq_domain); in bcm_kona_gpio_probe()