Lines Matching refs:kona_gpio

78 	struct bcm_kona_gpio *kona_gpio;  member
93 static void bcm_kona_gpio_lock_gpio(struct bcm_kona_gpio *kona_gpio, in bcm_kona_gpio_lock_gpio() argument
100 spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_lock_gpio()
102 val = readl(kona_gpio->reg_base + GPIO_PWD_STATUS(bank_id)); in bcm_kona_gpio_lock_gpio()
104 bcm_kona_gpio_write_lock_regs(kona_gpio->reg_base, bank_id, val); in bcm_kona_gpio_lock_gpio()
106 spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_lock_gpio()
109 static void bcm_kona_gpio_unlock_gpio(struct bcm_kona_gpio *kona_gpio, in bcm_kona_gpio_unlock_gpio() argument
116 spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_unlock_gpio()
118 val = readl(kona_gpio->reg_base + GPIO_PWD_STATUS(bank_id)); in bcm_kona_gpio_unlock_gpio()
120 bcm_kona_gpio_write_lock_regs(kona_gpio->reg_base, bank_id, val); in bcm_kona_gpio_unlock_gpio()
122 spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_unlock_gpio()
127 struct bcm_kona_gpio *kona_gpio = to_kona_gpio(chip); in bcm_kona_gpio_get_dir() local
128 void __iomem *reg_base = kona_gpio->reg_base; in bcm_kona_gpio_get_dir()
137 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_set() local
144 kona_gpio = to_kona_gpio(chip); in bcm_kona_gpio_set()
145 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_set()
146 spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_set()
159 spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_set()
164 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_get() local
171 kona_gpio = to_kona_gpio(chip); in bcm_kona_gpio_get()
172 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_get()
173 spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_get()
183 spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_get()
191 struct bcm_kona_gpio *kona_gpio = to_kona_gpio(chip); in bcm_kona_gpio_request() local
193 bcm_kona_gpio_unlock_gpio(kona_gpio, gpio); in bcm_kona_gpio_request()
199 struct bcm_kona_gpio *kona_gpio = to_kona_gpio(chip); in bcm_kona_gpio_free() local
201 bcm_kona_gpio_lock_gpio(kona_gpio, gpio); in bcm_kona_gpio_free()
206 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_direction_input() local
211 kona_gpio = to_kona_gpio(chip); in bcm_kona_gpio_direction_input()
212 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_direction_input()
213 spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_direction_input()
220 spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_direction_input()
228 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_direction_output() local
235 kona_gpio = to_kona_gpio(chip); in bcm_kona_gpio_direction_output()
236 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_direction_output()
237 spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_direction_output()
249 spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_direction_output()
256 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_to_irq() local
258 kona_gpio = to_kona_gpio(chip); in bcm_kona_gpio_to_irq()
259 if (gpio >= kona_gpio->gpio_chip.ngpio) in bcm_kona_gpio_to_irq()
261 return irq_create_mapping(kona_gpio->irq_domain, gpio); in bcm_kona_gpio_to_irq()
267 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_set_debounce() local
272 kona_gpio = to_kona_gpio(chip); in bcm_kona_gpio_set_debounce()
273 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_set_debounce()
293 spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_set_debounce()
308 spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_set_debounce()
330 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_irq_ack() local
338 kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_ack()
339 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_irq_ack()
340 spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_ack()
346 spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_ack()
351 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_irq_mask() local
359 kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_mask()
360 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_irq_mask()
361 spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_mask()
367 spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_mask()
372 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_irq_unmask() local
380 kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_unmask()
381 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_irq_unmask()
382 spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_unmask()
388 spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_unmask()
393 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_irq_set_type() local
400 kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_set_type()
401 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_irq_set_type()
419 dev_err(kona_gpio->gpio_chip.dev, in bcm_kona_gpio_irq_set_type()
424 spin_lock_irqsave(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_set_type()
431 spin_unlock_irqrestore(&kona_gpio->lock, flags); in bcm_kona_gpio_irq_set_type()
451 reg_base = bank->kona_gpio->reg_base; in bcm_kona_gpio_irq_handler()
459 irq_find_mapping(bank->kona_gpio->irq_domain, in bcm_kona_gpio_irq_handler()
477 struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_reqres() local
479 if (gpiochip_lock_as_irq(&kona_gpio->gpio_chip, d->hwirq)) { in bcm_kona_gpio_irq_reqres()
480 dev_err(kona_gpio->gpio_chip.dev, in bcm_kona_gpio_irq_reqres()
490 struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d); in bcm_kona_gpio_irq_relres() local
492 gpiochip_unlock_as_irq(&kona_gpio->gpio_chip, d->hwirq); in bcm_kona_gpio_irq_relres()
545 static void bcm_kona_gpio_reset(struct bcm_kona_gpio *kona_gpio) in bcm_kona_gpio_reset() argument
550 reg_base = kona_gpio->reg_base; in bcm_kona_gpio_reset()
552 for (i = 0; i < kona_gpio->num_bank; i++) { in bcm_kona_gpio_reset()
568 struct bcm_kona_gpio *kona_gpio; in bcm_kona_gpio_probe() local
579 kona_gpio = devm_kzalloc(dev, sizeof(*kona_gpio), GFP_KERNEL); in bcm_kona_gpio_probe()
580 if (!kona_gpio) in bcm_kona_gpio_probe()
583 kona_gpio->gpio_chip = template_chip; in bcm_kona_gpio_probe()
584 chip = &kona_gpio->gpio_chip; in bcm_kona_gpio_probe()
585 kona_gpio->num_bank = of_irq_count(dev->of_node); in bcm_kona_gpio_probe()
586 if (kona_gpio->num_bank == 0) { in bcm_kona_gpio_probe()
590 if (kona_gpio->num_bank > GPIO_MAX_BANK_NUM) { in bcm_kona_gpio_probe()
595 kona_gpio->banks = devm_kzalloc(dev, in bcm_kona_gpio_probe()
596 kona_gpio->num_bank * in bcm_kona_gpio_probe()
597 sizeof(*kona_gpio->banks), GFP_KERNEL); in bcm_kona_gpio_probe()
598 if (!kona_gpio->banks) in bcm_kona_gpio_probe()
601 kona_gpio->pdev = pdev; in bcm_kona_gpio_probe()
602 platform_set_drvdata(pdev, kona_gpio); in bcm_kona_gpio_probe()
604 chip->ngpio = kona_gpio->num_bank * GPIO_PER_BANK; in bcm_kona_gpio_probe()
606 kona_gpio->irq_domain = irq_domain_add_linear(dev->of_node, in bcm_kona_gpio_probe()
609 kona_gpio); in bcm_kona_gpio_probe()
610 if (!kona_gpio->irq_domain) { in bcm_kona_gpio_probe()
616 kona_gpio->reg_base = devm_ioremap_resource(dev, res); in bcm_kona_gpio_probe()
617 if (IS_ERR(kona_gpio->reg_base)) { in bcm_kona_gpio_probe()
622 for (i = 0; i < kona_gpio->num_bank; i++) { in bcm_kona_gpio_probe()
623 bank = &kona_gpio->banks[i]; in bcm_kona_gpio_probe()
626 bank->kona_gpio = kona_gpio; in bcm_kona_gpio_probe()
636 bcm_kona_gpio_reset(kona_gpio); in bcm_kona_gpio_probe()
643 for (i = 0; i < kona_gpio->num_bank; i++) { in bcm_kona_gpio_probe()
644 bank = &kona_gpio->banks[i]; in bcm_kona_gpio_probe()
650 spin_lock_init(&kona_gpio->lock); in bcm_kona_gpio_probe()
655 irq_domain_remove(kona_gpio->irq_domain); in bcm_kona_gpio_probe()