H A D | gpio-bcm-kona.c | 78 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()
|