Lines Matching refs:gpiochip
58 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip);
418 void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip, in gpiochip_set_chained_irqchip() argument
425 if (!gpiochip->irqdomain) { in gpiochip_set_chained_irqchip()
426 chip_err(gpiochip, "called %s before setting up irqchip\n", in gpiochip_set_chained_irqchip()
432 if (gpiochip->can_sleep) { in gpiochip_set_chained_irqchip()
433 chip_err(gpiochip, in gpiochip_set_chained_irqchip()
442 irq_set_handler_data(parent_irq, gpiochip); in gpiochip_set_chained_irqchip()
447 for (offset = 0; offset < gpiochip->ngpio; offset++) in gpiochip_set_chained_irqchip()
448 irq_set_parent(irq_find_mapping(gpiochip->irqdomain, offset), in gpiochip_set_chained_irqchip()
546 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip) in gpiochip_irqchip_remove() argument
550 acpi_gpiochip_free_interrupts(gpiochip); in gpiochip_irqchip_remove()
553 if (gpiochip->irqdomain) { in gpiochip_irqchip_remove()
554 for (offset = 0; offset < gpiochip->ngpio; offset++) in gpiochip_irqchip_remove()
556 irq_find_mapping(gpiochip->irqdomain, offset)); in gpiochip_irqchip_remove()
557 irq_domain_remove(gpiochip->irqdomain); in gpiochip_irqchip_remove()
560 if (gpiochip->irqchip) { in gpiochip_irqchip_remove()
561 gpiochip->irqchip->irq_request_resources = NULL; in gpiochip_irqchip_remove()
562 gpiochip->irqchip->irq_release_resources = NULL; in gpiochip_irqchip_remove()
563 gpiochip->irqchip = NULL; in gpiochip_irqchip_remove()
591 int gpiochip_irqchip_add(struct gpio_chip *gpiochip, in gpiochip_irqchip_add() argument
601 if (!gpiochip || !irqchip) in gpiochip_irqchip_add()
604 if (!gpiochip->dev) { in gpiochip_irqchip_add()
608 of_node = gpiochip->dev->of_node; in gpiochip_irqchip_add()
614 if (gpiochip->of_node) in gpiochip_irqchip_add()
615 of_node = gpiochip->of_node; in gpiochip_irqchip_add()
617 gpiochip->irqchip = irqchip; in gpiochip_irqchip_add()
618 gpiochip->irq_handler = handler; in gpiochip_irqchip_add()
619 gpiochip->irq_default_type = type; in gpiochip_irqchip_add()
620 gpiochip->to_irq = gpiochip_to_irq; in gpiochip_irqchip_add()
621 gpiochip->irqdomain = irq_domain_add_simple(of_node, in gpiochip_irqchip_add()
622 gpiochip->ngpio, first_irq, in gpiochip_irqchip_add()
623 &gpiochip_domain_ops, gpiochip); in gpiochip_irqchip_add()
624 if (!gpiochip->irqdomain) { in gpiochip_irqchip_add()
625 gpiochip->irqchip = NULL; in gpiochip_irqchip_add()
636 for (offset = 0; offset < gpiochip->ngpio; offset++) { in gpiochip_irqchip_add()
637 irq_base = irq_create_mapping(gpiochip->irqdomain, offset); in gpiochip_irqchip_add()
643 gpiochip->irq_base = irq_base; in gpiochip_irqchip_add()
646 acpi_gpiochip_request_interrupts(gpiochip); in gpiochip_irqchip_add()
654 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip) {} in gpiochip_irqchip_remove() argument