Lines Matching refs:kona_gpio

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