Lines Matching refs:gpiochip
57 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip);
494 void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip, in gpiochip_set_chained_irqchip() argument
501 if (!gpiochip->irqdomain) { in gpiochip_set_chained_irqchip()
502 chip_err(gpiochip, "called %s before setting up irqchip\n", in gpiochip_set_chained_irqchip()
508 if (gpiochip->can_sleep) { in gpiochip_set_chained_irqchip()
509 chip_err(gpiochip, in gpiochip_set_chained_irqchip()
519 gpiochip); in gpiochip_set_chained_irqchip()
521 gpiochip->irq_parent = parent_irq; in gpiochip_set_chained_irqchip()
525 for (offset = 0; offset < gpiochip->ngpio; offset++) in gpiochip_set_chained_irqchip()
526 irq_set_parent(irq_find_mapping(gpiochip->irqdomain, offset), in gpiochip_set_chained_irqchip()
621 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip) in gpiochip_irqchip_remove() argument
625 acpi_gpiochip_free_interrupts(gpiochip); in gpiochip_irqchip_remove()
627 if (gpiochip->irq_parent) { in gpiochip_irqchip_remove()
628 irq_set_chained_handler(gpiochip->irq_parent, NULL); in gpiochip_irqchip_remove()
629 irq_set_handler_data(gpiochip->irq_parent, NULL); in gpiochip_irqchip_remove()
633 if (gpiochip->irqdomain) { in gpiochip_irqchip_remove()
634 for (offset = 0; offset < gpiochip->ngpio; offset++) in gpiochip_irqchip_remove()
636 irq_find_mapping(gpiochip->irqdomain, offset)); in gpiochip_irqchip_remove()
637 irq_domain_remove(gpiochip->irqdomain); in gpiochip_irqchip_remove()
640 if (gpiochip->irqchip) { in gpiochip_irqchip_remove()
641 gpiochip->irqchip->irq_request_resources = NULL; in gpiochip_irqchip_remove()
642 gpiochip->irqchip->irq_release_resources = NULL; in gpiochip_irqchip_remove()
643 gpiochip->irqchip = NULL; in gpiochip_irqchip_remove()
672 int _gpiochip_irqchip_add(struct gpio_chip *gpiochip, in _gpiochip_irqchip_add() argument
683 if (!gpiochip || !irqchip) in _gpiochip_irqchip_add()
686 if (!gpiochip->dev) { in _gpiochip_irqchip_add()
690 of_node = gpiochip->dev->of_node; in _gpiochip_irqchip_add()
696 if (gpiochip->of_node) in _gpiochip_irqchip_add()
697 of_node = gpiochip->of_node; in _gpiochip_irqchip_add()
699 gpiochip->irqchip = irqchip; in _gpiochip_irqchip_add()
700 gpiochip->irq_handler = handler; in _gpiochip_irqchip_add()
701 gpiochip->irq_default_type = type; in _gpiochip_irqchip_add()
702 gpiochip->to_irq = gpiochip_to_irq; in _gpiochip_irqchip_add()
703 gpiochip->lock_key = lock_key; in _gpiochip_irqchip_add()
704 gpiochip->irqdomain = irq_domain_add_simple(of_node, in _gpiochip_irqchip_add()
705 gpiochip->ngpio, first_irq, in _gpiochip_irqchip_add()
706 &gpiochip_domain_ops, gpiochip); in _gpiochip_irqchip_add()
707 if (!gpiochip->irqdomain) { in _gpiochip_irqchip_add()
708 gpiochip->irqchip = NULL; in _gpiochip_irqchip_add()
727 for (offset = 0; offset < gpiochip->ngpio; offset++) { in _gpiochip_irqchip_add()
728 irq_base = irq_create_mapping(gpiochip->irqdomain, offset); in _gpiochip_irqchip_add()
734 gpiochip->irq_base = irq_base; in _gpiochip_irqchip_add()
737 acpi_gpiochip_request_interrupts(gpiochip); in _gpiochip_irqchip_add()
745 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip) {} in gpiochip_irqchip_remove() argument