Searched refs:kona_gpio (Results 1 - 1 of 1) sorted by relevance

/linux-4.1.27/drivers/gpio/
H A Dgpio-bcm-kona.c78 struct bcm_kona_gpio *kona_gpio; member in struct:bcm_kona_gpio_bank
93 static void bcm_kona_gpio_lock_gpio(struct bcm_kona_gpio *kona_gpio, bcm_kona_gpio_lock_gpio() argument
100 spin_lock_irqsave(&kona_gpio->lock, flags); bcm_kona_gpio_lock_gpio()
102 val = readl(kona_gpio->reg_base + GPIO_PWD_STATUS(bank_id)); bcm_kona_gpio_lock_gpio()
104 bcm_kona_gpio_write_lock_regs(kona_gpio->reg_base, bank_id, val); bcm_kona_gpio_lock_gpio()
106 spin_unlock_irqrestore(&kona_gpio->lock, flags); bcm_kona_gpio_lock_gpio()
109 static void bcm_kona_gpio_unlock_gpio(struct bcm_kona_gpio *kona_gpio, bcm_kona_gpio_unlock_gpio() argument
116 spin_lock_irqsave(&kona_gpio->lock, flags); bcm_kona_gpio_unlock_gpio()
118 val = readl(kona_gpio->reg_base + GPIO_PWD_STATUS(bank_id)); bcm_kona_gpio_unlock_gpio()
120 bcm_kona_gpio_write_lock_regs(kona_gpio->reg_base, bank_id, val); bcm_kona_gpio_unlock_gpio()
122 spin_unlock_irqrestore(&kona_gpio->lock, flags); bcm_kona_gpio_unlock_gpio()
127 struct bcm_kona_gpio *kona_gpio; bcm_kona_gpio_set() local
134 kona_gpio = to_kona_gpio(chip); bcm_kona_gpio_set()
135 reg_base = kona_gpio->reg_base; bcm_kona_gpio_set()
136 spin_lock_irqsave(&kona_gpio->lock, flags); bcm_kona_gpio_set()
153 spin_unlock_irqrestore(&kona_gpio->lock, flags); bcm_kona_gpio_set()
158 struct bcm_kona_gpio *kona_gpio; bcm_kona_gpio_get() local
165 kona_gpio = to_kona_gpio(chip); bcm_kona_gpio_get()
166 reg_base = kona_gpio->reg_base; bcm_kona_gpio_get()
167 spin_lock_irqsave(&kona_gpio->lock, flags); bcm_kona_gpio_get()
178 spin_unlock_irqrestore(&kona_gpio->lock, flags); bcm_kona_gpio_get()
186 struct bcm_kona_gpio *kona_gpio = to_kona_gpio(chip); bcm_kona_gpio_request() local
188 bcm_kona_gpio_unlock_gpio(kona_gpio, gpio); bcm_kona_gpio_request()
194 struct bcm_kona_gpio *kona_gpio = to_kona_gpio(chip); bcm_kona_gpio_free() local
196 bcm_kona_gpio_lock_gpio(kona_gpio, gpio); bcm_kona_gpio_free()
201 struct bcm_kona_gpio *kona_gpio; bcm_kona_gpio_direction_input() local
206 kona_gpio = to_kona_gpio(chip); bcm_kona_gpio_direction_input()
207 reg_base = kona_gpio->reg_base; bcm_kona_gpio_direction_input()
208 spin_lock_irqsave(&kona_gpio->lock, flags); bcm_kona_gpio_direction_input()
215 spin_unlock_irqrestore(&kona_gpio->lock, flags); bcm_kona_gpio_direction_input()
223 struct bcm_kona_gpio *kona_gpio; bcm_kona_gpio_direction_output() local
230 kona_gpio = to_kona_gpio(chip); bcm_kona_gpio_direction_output()
231 reg_base = kona_gpio->reg_base; bcm_kona_gpio_direction_output()
232 spin_lock_irqsave(&kona_gpio->lock, flags); bcm_kona_gpio_direction_output()
244 spin_unlock_irqrestore(&kona_gpio->lock, flags); bcm_kona_gpio_direction_output()
251 struct bcm_kona_gpio *kona_gpio; bcm_kona_gpio_to_irq() local
253 kona_gpio = to_kona_gpio(chip); bcm_kona_gpio_to_irq()
254 if (gpio >= kona_gpio->gpio_chip.ngpio) bcm_kona_gpio_to_irq()
256 return irq_create_mapping(kona_gpio->irq_domain, gpio); bcm_kona_gpio_to_irq()
262 struct bcm_kona_gpio *kona_gpio; bcm_kona_gpio_set_debounce() local
267 kona_gpio = to_kona_gpio(chip); bcm_kona_gpio_set_debounce()
268 reg_base = kona_gpio->reg_base; bcm_kona_gpio_set_debounce()
288 spin_lock_irqsave(&kona_gpio->lock, flags); bcm_kona_gpio_set_debounce()
303 spin_unlock_irqrestore(&kona_gpio->lock, flags); bcm_kona_gpio_set_debounce()
324 struct bcm_kona_gpio *kona_gpio; bcm_kona_gpio_irq_ack() local
332 kona_gpio = irq_data_get_irq_chip_data(d); bcm_kona_gpio_irq_ack()
333 reg_base = kona_gpio->reg_base; bcm_kona_gpio_irq_ack()
334 spin_lock_irqsave(&kona_gpio->lock, flags); bcm_kona_gpio_irq_ack()
340 spin_unlock_irqrestore(&kona_gpio->lock, flags); bcm_kona_gpio_irq_ack()
345 struct bcm_kona_gpio *kona_gpio; bcm_kona_gpio_irq_mask() local
353 kona_gpio = irq_data_get_irq_chip_data(d); bcm_kona_gpio_irq_mask()
354 reg_base = kona_gpio->reg_base; bcm_kona_gpio_irq_mask()
355 spin_lock_irqsave(&kona_gpio->lock, flags); bcm_kona_gpio_irq_mask()
361 spin_unlock_irqrestore(&kona_gpio->lock, flags); bcm_kona_gpio_irq_mask()
366 struct bcm_kona_gpio *kona_gpio; bcm_kona_gpio_irq_unmask() local
374 kona_gpio = irq_data_get_irq_chip_data(d); bcm_kona_gpio_irq_unmask()
375 reg_base = kona_gpio->reg_base; bcm_kona_gpio_irq_unmask()
376 spin_lock_irqsave(&kona_gpio->lock, flags); bcm_kona_gpio_irq_unmask()
382 spin_unlock_irqrestore(&kona_gpio->lock, flags); bcm_kona_gpio_irq_unmask()
387 struct bcm_kona_gpio *kona_gpio; bcm_kona_gpio_irq_set_type() local
394 kona_gpio = irq_data_get_irq_chip_data(d); bcm_kona_gpio_irq_set_type()
395 reg_base = kona_gpio->reg_base; bcm_kona_gpio_irq_set_type()
413 dev_err(kona_gpio->gpio_chip.dev, bcm_kona_gpio_irq_set_type()
418 spin_lock_irqsave(&kona_gpio->lock, flags); bcm_kona_gpio_irq_set_type()
425 spin_unlock_irqrestore(&kona_gpio->lock, flags); bcm_kona_gpio_irq_set_type()
441 * For bank interrupts, we can't use chip_data to store the kona_gpio bcm_kona_gpio_irq_handler()
445 reg_base = bank->kona_gpio->reg_base; bcm_kona_gpio_irq_handler()
453 irq_find_mapping(bank->kona_gpio->irq_domain, bcm_kona_gpio_irq_handler()
471 struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d); bcm_kona_gpio_irq_reqres() local
473 if (gpiochip_lock_as_irq(&kona_gpio->gpio_chip, d->hwirq)) { bcm_kona_gpio_irq_reqres()
474 dev_err(kona_gpio->gpio_chip.dev, bcm_kona_gpio_irq_reqres()
484 struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d); bcm_kona_gpio_irq_relres() local
486 gpiochip_unlock_as_irq(&kona_gpio->gpio_chip, d->hwirq); bcm_kona_gpio_irq_relres()
543 static void bcm_kona_gpio_reset(struct bcm_kona_gpio *kona_gpio) bcm_kona_gpio_reset() argument
548 reg_base = kona_gpio->reg_base; bcm_kona_gpio_reset()
550 for (i = 0; i < kona_gpio->num_bank; i++) { bcm_kona_gpio_reset()
566 struct bcm_kona_gpio *kona_gpio; bcm_kona_gpio_probe() local
577 kona_gpio = devm_kzalloc(dev, sizeof(*kona_gpio), GFP_KERNEL); bcm_kona_gpio_probe()
578 if (!kona_gpio) bcm_kona_gpio_probe()
581 kona_gpio->gpio_chip = template_chip; bcm_kona_gpio_probe()
582 chip = &kona_gpio->gpio_chip; bcm_kona_gpio_probe()
583 kona_gpio->num_bank = of_irq_count(dev->of_node); bcm_kona_gpio_probe()
584 if (kona_gpio->num_bank == 0) { bcm_kona_gpio_probe()
588 if (kona_gpio->num_bank > GPIO_MAX_BANK_NUM) { bcm_kona_gpio_probe()
593 kona_gpio->banks = devm_kzalloc(dev, bcm_kona_gpio_probe()
594 kona_gpio->num_bank * bcm_kona_gpio_probe()
595 sizeof(*kona_gpio->banks), GFP_KERNEL); bcm_kona_gpio_probe()
596 if (!kona_gpio->banks) bcm_kona_gpio_probe()
599 kona_gpio->pdev = pdev; bcm_kona_gpio_probe()
600 platform_set_drvdata(pdev, kona_gpio); bcm_kona_gpio_probe()
602 chip->ngpio = kona_gpio->num_bank * GPIO_PER_BANK; bcm_kona_gpio_probe()
604 kona_gpio->irq_domain = irq_domain_add_linear(dev->of_node, bcm_kona_gpio_probe()
607 kona_gpio); bcm_kona_gpio_probe()
608 if (!kona_gpio->irq_domain) { bcm_kona_gpio_probe()
614 kona_gpio->reg_base = devm_ioremap_resource(dev, res); bcm_kona_gpio_probe()
615 if (IS_ERR(kona_gpio->reg_base)) { bcm_kona_gpio_probe()
620 for (i = 0; i < kona_gpio->num_bank; i++) { bcm_kona_gpio_probe()
621 bank = &kona_gpio->banks[i]; bcm_kona_gpio_probe()
624 bank->kona_gpio = kona_gpio; bcm_kona_gpio_probe()
634 bcm_kona_gpio_reset(kona_gpio); bcm_kona_gpio_probe()
652 for (i = 0; i < kona_gpio->num_bank; i++) { bcm_kona_gpio_probe()
653 bank = &kona_gpio->banks[i]; bcm_kona_gpio_probe()
658 spin_lock_init(&kona_gpio->lock); bcm_kona_gpio_probe()
663 irq_domain_remove(kona_gpio->irq_domain); bcm_kona_gpio_probe()

Completed in 101 milliseconds