Lines Matching refs:irq_data
475 struct irq_data *irq_data) in irq_domain_set_mapping() argument
478 domain->linear_revmap[hwirq] = irq_data->irq; in irq_domain_set_mapping()
481 radix_tree_insert(&domain->revmap_tree, hwirq, irq_data); in irq_domain_set_mapping()
488 struct irq_data *irq_data = irq_get_irq_data(irq); in irq_domain_disassociate() local
491 if (WARN(!irq_data || irq_data->domain != domain, in irq_domain_disassociate()
495 hwirq = irq_data->hwirq; in irq_domain_disassociate()
509 irq_data->domain = NULL; in irq_domain_disassociate()
510 irq_data->hwirq = 0; in irq_domain_disassociate()
520 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_associate() local
526 if (WARN(!irq_data, "error: virq%i is not allocated", virq)) in irq_domain_associate()
528 if (WARN(irq_data->domain, "error: virq%i is already associated", virq)) in irq_domain_associate()
532 irq_data->hwirq = hwirq; in irq_domain_associate()
533 irq_data->domain = domain; in irq_domain_associate()
546 irq_data->domain = NULL; in irq_domain_associate()
547 irq_data->hwirq = 0; in irq_domain_associate()
553 if (!domain->name && irq_data->chip) in irq_domain_associate()
554 domain->name = irq_data->chip->name; in irq_domain_associate()
558 irq_domain_set_mapping(domain, hwirq, irq_data); in irq_domain_associate()
732 static void of_phandle_args_to_fwspec(struct of_phandle_args *irq_data, in of_phandle_args_to_fwspec() argument
737 fwspec->fwnode = irq_data->np ? &irq_data->np->fwnode : NULL; in of_phandle_args_to_fwspec()
738 fwspec->param_count = irq_data->args_count; in of_phandle_args_to_fwspec()
740 for (i = 0; i < irq_data->args_count; i++) in of_phandle_args_to_fwspec()
741 fwspec->param[i] = irq_data->args[i]; in of_phandle_args_to_fwspec()
747 struct irq_data *irq_data; in irq_create_fwspec_mapping() local
795 irq_data = irq_get_irq_data(virq); in irq_create_fwspec_mapping()
796 if (!irq_data) in irq_create_fwspec_mapping()
799 irqd_set_trigger_type(irq_data, type); in irq_create_fwspec_mapping()
819 irq_data = irq_get_irq_data(virq); in irq_create_fwspec_mapping()
820 if (!irq_data) { in irq_create_fwspec_mapping()
829 irqd_set_trigger_type(irq_data, type); in irq_create_fwspec_mapping()
835 unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data) in irq_create_of_mapping() argument
839 of_phandle_args_to_fwspec(irq_data, &fwspec); in irq_create_of_mapping()
850 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_dispose_mapping() local
853 if (!virq || !irq_data) in irq_dispose_mapping()
856 domain = irq_data->domain; in irq_dispose_mapping()
877 struct irq_data *data; in irq_find_mapping()
1034 struct irq_data *data; in irq_domain_insert_irq()
1052 struct irq_data *data; in irq_domain_remove_irq()
1068 static struct irq_data *irq_domain_insert_irq_data(struct irq_domain *domain, in irq_domain_insert_irq_data()
1069 struct irq_data *child) in irq_domain_insert_irq_data()
1071 struct irq_data *irq_data; in irq_domain_insert_irq_data() local
1073 irq_data = kzalloc_node(sizeof(*irq_data), GFP_KERNEL, in irq_domain_insert_irq_data()
1075 if (irq_data) { in irq_domain_insert_irq_data()
1076 child->parent_data = irq_data; in irq_domain_insert_irq_data()
1077 irq_data->irq = child->irq; in irq_domain_insert_irq_data()
1078 irq_data->common = child->common; in irq_domain_insert_irq_data()
1079 irq_data->domain = domain; in irq_domain_insert_irq_data()
1082 return irq_data; in irq_domain_insert_irq_data()
1087 struct irq_data *irq_data, *tmp; in irq_domain_free_irq_data() local
1091 irq_data = irq_get_irq_data(virq + i); in irq_domain_free_irq_data()
1092 tmp = irq_data->parent_data; in irq_domain_free_irq_data()
1093 irq_data->parent_data = NULL; in irq_domain_free_irq_data()
1094 irq_data->domain = NULL; in irq_domain_free_irq_data()
1097 irq_data = tmp; in irq_domain_free_irq_data()
1099 kfree(irq_data); in irq_domain_free_irq_data()
1107 struct irq_data *irq_data; in irq_domain_alloc_irq_data() local
1113 irq_data = irq_get_irq_data(virq + i); in irq_domain_alloc_irq_data()
1114 irq_data->domain = domain; in irq_domain_alloc_irq_data()
1117 irq_data = irq_domain_insert_irq_data(parent, irq_data); in irq_domain_alloc_irq_data()
1118 if (!irq_data) { in irq_domain_alloc_irq_data()
1133 struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain, in irq_domain_get_irq_data()
1136 struct irq_data *irq_data; in irq_domain_get_irq_data() local
1138 for (irq_data = irq_get_irq_data(virq); irq_data; in irq_domain_get_irq_data()
1139 irq_data = irq_data->parent_data) in irq_domain_get_irq_data()
1140 if (irq_data->domain == domain) in irq_domain_get_irq_data()
1141 return irq_data; in irq_domain_get_irq_data()
1159 struct irq_data *irq_data = irq_domain_get_irq_data(domain, virq); in irq_domain_set_hwirq_and_chip() local
1161 if (!irq_data) in irq_domain_set_hwirq_and_chip()
1164 irq_data->hwirq = hwirq; in irq_domain_set_hwirq_and_chip()
1165 irq_data->chip = chip ? chip : &no_irq_chip; in irq_domain_set_hwirq_and_chip()
1166 irq_data->chip_data = chip_data; in irq_domain_set_hwirq_and_chip()
1198 void irq_domain_reset_irq_data(struct irq_data *irq_data) in irq_domain_reset_irq_data() argument
1200 irq_data->hwirq = 0; in irq_domain_reset_irq_data()
1201 irq_data->chip = &no_irq_chip; in irq_domain_reset_irq_data()
1202 irq_data->chip_data = NULL; in irq_domain_reset_irq_data()
1215 struct irq_data *irq_data; in irq_domain_free_irqs_common() local
1219 irq_data = irq_domain_get_irq_data(domain, virq + i); in irq_domain_free_irqs_common()
1220 if (irq_data) in irq_domain_free_irqs_common()
1221 irq_domain_reset_irq_data(irq_data); in irq_domain_free_irqs_common()
1337 static void irq_domain_fix_revmap(struct irq_data *d) in irq_domain_fix_revmap()
1365 struct irq_data *child_irq_data; in irq_domain_push_irq()
1366 struct irq_data *root_irq_data = irq_get_irq_data(virq); in irq_domain_push_irq()
1446 struct irq_data *root_irq_data = irq_get_irq_data(virq); in irq_domain_pop_irq()
1447 struct irq_data *child_irq_data; in irq_domain_pop_irq()
1448 struct irq_data *tmp_irq_data; in irq_domain_pop_irq()
1512 struct irq_data *data = irq_get_irq_data(virq); in irq_domain_free_irqs()
1568 static void __irq_domain_deactivate_irq(struct irq_data *irq_data) in __irq_domain_deactivate_irq() argument
1570 if (irq_data && irq_data->domain) { in __irq_domain_deactivate_irq()
1571 struct irq_domain *domain = irq_data->domain; in __irq_domain_deactivate_irq()
1574 domain->ops->deactivate(domain, irq_data); in __irq_domain_deactivate_irq()
1575 if (irq_data->parent_data) in __irq_domain_deactivate_irq()
1576 __irq_domain_deactivate_irq(irq_data->parent_data); in __irq_domain_deactivate_irq()
1580 static int __irq_domain_activate_irq(struct irq_data *irqd, bool reserve) in __irq_domain_activate_irq()
1609 int irq_domain_activate_irq(struct irq_data *irq_data, bool reserve) in irq_domain_activate_irq() argument
1613 if (!irqd_is_activated(irq_data)) in irq_domain_activate_irq()
1614 ret = __irq_domain_activate_irq(irq_data, reserve); in irq_domain_activate_irq()
1616 irqd_set_activated(irq_data); in irq_domain_activate_irq()
1628 void irq_domain_deactivate_irq(struct irq_data *irq_data) in irq_domain_deactivate_irq() argument
1630 if (irqd_is_activated(irq_data)) { in irq_domain_deactivate_irq()
1631 __irq_domain_deactivate_irq(irq_data); in irq_domain_deactivate_irq()
1632 irqd_clr_activated(irq_data); in irq_domain_deactivate_irq()
1662 struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain, in irq_domain_get_irq_data()
1665 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_get_irq_data() local
1667 return (irq_data && irq_data->domain == domain) ? irq_data : NULL; in irq_domain_get_irq_data()