Lines Matching refs:irq_data

524 				   struct irq_data *irq_data)  in irq_domain_set_mapping()  argument
536 rcu_assign_pointer(domain->revmap[hwirq], irq_data); in irq_domain_set_mapping()
538 radix_tree_insert(&domain->revmap_tree, hwirq, irq_data); in irq_domain_set_mapping()
543 struct irq_data *irq_data = irq_get_irq_data(irq); in irq_domain_disassociate() local
546 if (WARN(!irq_data || irq_data->domain != domain, in irq_domain_disassociate()
550 hwirq = irq_data->hwirq; in irq_domain_disassociate()
567 irq_data->domain = NULL; in irq_domain_disassociate()
568 irq_data->hwirq = 0; in irq_domain_disassociate()
580 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_associate_locked() local
586 if (WARN(!irq_data, "error: virq%i is not allocated", virq)) in irq_domain_associate_locked()
588 if (WARN(irq_data->domain, "error: virq%i is already associated", virq)) in irq_domain_associate_locked()
591 irq_data->hwirq = hwirq; in irq_domain_associate_locked()
592 irq_data->domain = domain; in irq_domain_associate_locked()
605 irq_data->domain = NULL; in irq_domain_associate_locked()
606 irq_data->hwirq = 0; in irq_domain_associate_locked()
612 irq_domain_set_mapping(domain, hwirq, irq_data); in irq_domain_associate_locked()
794 struct irq_data *irq_data; in irq_create_fwspec_mapping() local
844 irq_data = irq_get_irq_data(virq); in irq_create_fwspec_mapping()
845 if (!irq_data) { in irq_create_fwspec_mapping()
850 irqd_set_trigger_type(irq_data, type); in irq_create_fwspec_mapping()
874 irq_data = irq_get_irq_data(virq); in irq_create_fwspec_mapping()
875 if (WARN_ON(!irq_data)) { in irq_create_fwspec_mapping()
881 irqd_set_trigger_type(irq_data, type); in irq_create_fwspec_mapping()
889 unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data) in irq_create_of_mapping() argument
893 of_phandle_args_to_fwspec(irq_data->np, irq_data->args, in irq_create_of_mapping()
894 irq_data->args_count, &fwspec); in irq_create_of_mapping()
906 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_dispose_mapping() local
909 if (!virq || !irq_data) in irq_dispose_mapping()
912 domain = irq_data->domain; in irq_dispose_mapping()
938 struct irq_data *data; in __irq_resolve_mapping()
1109 void irq_domain_reset_irq_data(struct irq_data *irq_data) in irq_domain_reset_irq_data() argument
1111 irq_data->hwirq = 0; in irq_domain_reset_irq_data()
1112 irq_data->chip = &no_irq_chip; in irq_domain_reset_irq_data()
1113 irq_data->chip_data = NULL; in irq_domain_reset_irq_data()
1162 struct irq_data *data; in irq_domain_insert_irq()
1176 struct irq_data *data; in irq_domain_remove_irq()
1192 static struct irq_data *irq_domain_insert_irq_data(struct irq_domain *domain, in irq_domain_insert_irq_data()
1193 struct irq_data *child) in irq_domain_insert_irq_data()
1195 struct irq_data *irq_data; in irq_domain_insert_irq_data() local
1197 irq_data = kzalloc_node(sizeof(*irq_data), GFP_KERNEL, in irq_domain_insert_irq_data()
1199 if (irq_data) { in irq_domain_insert_irq_data()
1200 child->parent_data = irq_data; in irq_domain_insert_irq_data()
1201 irq_data->irq = child->irq; in irq_domain_insert_irq_data()
1202 irq_data->common = child->common; in irq_domain_insert_irq_data()
1203 irq_data->domain = domain; in irq_domain_insert_irq_data()
1206 return irq_data; in irq_domain_insert_irq_data()
1209 static void __irq_domain_free_hierarchy(struct irq_data *irq_data) in __irq_domain_free_hierarchy() argument
1211 struct irq_data *tmp; in __irq_domain_free_hierarchy()
1213 while (irq_data) { in __irq_domain_free_hierarchy()
1214 tmp = irq_data; in __irq_domain_free_hierarchy()
1215 irq_data = irq_data->parent_data; in __irq_domain_free_hierarchy()
1222 struct irq_data *irq_data, *tmp; in irq_domain_free_irq_data() local
1226 irq_data = irq_get_irq_data(virq + i); in irq_domain_free_irq_data()
1227 tmp = irq_data->parent_data; in irq_domain_free_irq_data()
1228 irq_data->parent_data = NULL; in irq_domain_free_irq_data()
1229 irq_data->domain = NULL; in irq_domain_free_irq_data()
1251 struct irq_data *irqd; in irq_domain_disconnect_hierarchy()
1264 struct irq_data *tail, *irqd, *irq_data; in irq_domain_trim_hierarchy() local
1266 irq_data = irq_get_irq_data(virq); in irq_domain_trim_hierarchy()
1270 if (!irq_data->chip || IS_ERR(irq_data->chip)) in irq_domain_trim_hierarchy()
1277 for (irqd = irq_data->parent_data; irqd; irq_data = irqd, irqd = irqd->parent_data) { in irq_domain_trim_hierarchy()
1291 tail = irq_data; in irq_domain_trim_hierarchy()
1314 struct irq_data *irq_data; in irq_domain_alloc_irq_data() local
1320 irq_data = irq_get_irq_data(virq + i); in irq_domain_alloc_irq_data()
1321 irq_data->domain = domain; in irq_domain_alloc_irq_data()
1324 irq_data = irq_domain_insert_irq_data(parent, irq_data); in irq_domain_alloc_irq_data()
1325 if (!irq_data) { in irq_domain_alloc_irq_data()
1340 struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain, in irq_domain_get_irq_data()
1343 struct irq_data *irq_data; in irq_domain_get_irq_data() local
1345 for (irq_data = irq_get_irq_data(virq); irq_data; in irq_domain_get_irq_data()
1346 irq_data = irq_data->parent_data) in irq_domain_get_irq_data()
1347 if (irq_data->domain == domain) in irq_domain_get_irq_data()
1348 return irq_data; in irq_domain_get_irq_data()
1367 struct irq_data *irq_data = irq_domain_get_irq_data(domain, virq); in irq_domain_set_hwirq_and_chip() local
1369 if (!irq_data) in irq_domain_set_hwirq_and_chip()
1372 irq_data->hwirq = hwirq; in irq_domain_set_hwirq_and_chip()
1373 irq_data->chip = (struct irq_chip *)(chip ? chip : &no_irq_chip); in irq_domain_set_hwirq_and_chip()
1374 irq_data->chip_data = chip_data; in irq_domain_set_hwirq_and_chip()
1411 struct irq_data *irq_data; in irq_domain_free_irqs_common() local
1415 irq_data = irq_domain_get_irq_data(domain, virq + i); in irq_domain_free_irqs_common()
1416 if (irq_data) in irq_domain_free_irqs_common()
1417 irq_domain_reset_irq_data(irq_data); in irq_domain_free_irqs_common()
1558 static void irq_domain_fix_revmap(struct irq_data *d) in irq_domain_fix_revmap()
1591 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_push_irq() local
1592 struct irq_data *parent_irq_data; in irq_domain_push_irq()
1617 if (!irq_data) in irq_domain_push_irq()
1620 if (domain->parent != irq_data->domain) in irq_domain_push_irq()
1624 irq_data_get_node(irq_data)); in irq_domain_push_irq()
1631 *parent_irq_data = *irq_data; in irq_domain_push_irq()
1637 irq_data->parent_data = parent_irq_data; in irq_domain_push_irq()
1638 irq_data->domain = domain; in irq_domain_push_irq()
1639 irq_data->mask = 0; in irq_domain_push_irq()
1640 irq_data->hwirq = 0; in irq_domain_push_irq()
1641 irq_data->chip = NULL; in irq_domain_push_irq()
1642 irq_data->chip_data = NULL; in irq_domain_push_irq()
1648 *irq_data = *parent_irq_data; in irq_domain_push_irq()
1654 irq_domain_set_mapping(domain, irq_data->hwirq, irq_data); in irq_domain_push_irq()
1672 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_pop_irq() local
1673 struct irq_data *parent_irq_data; in irq_domain_pop_irq()
1674 struct irq_data *tmp_irq_data; in irq_domain_pop_irq()
1695 if (!irq_data) in irq_domain_pop_irq()
1701 if (WARN_ON(irq_data != tmp_irq_data)) in irq_domain_pop_irq()
1704 if (WARN_ON(irq_data->domain != domain)) in irq_domain_pop_irq()
1707 parent_irq_data = irq_data->parent_data; in irq_domain_pop_irq()
1713 irq_data->parent_data = NULL; in irq_domain_pop_irq()
1715 irq_domain_clear_mapping(domain, irq_data->hwirq); in irq_domain_pop_irq()
1719 *irq_data = *parent_irq_data; in irq_domain_pop_irq()
1721 irq_domain_fix_revmap(irq_data); in irq_domain_pop_irq()
1738 struct irq_data *data = irq_get_irq_data(virq); in irq_domain_free_irqs()
1793 static void __irq_domain_deactivate_irq(struct irq_data *irq_data) in __irq_domain_deactivate_irq() argument
1795 if (irq_data && irq_data->domain) { in __irq_domain_deactivate_irq()
1796 struct irq_domain *domain = irq_data->domain; in __irq_domain_deactivate_irq()
1799 domain->ops->deactivate(domain, irq_data); in __irq_domain_deactivate_irq()
1800 if (irq_data->parent_data) in __irq_domain_deactivate_irq()
1801 __irq_domain_deactivate_irq(irq_data->parent_data); in __irq_domain_deactivate_irq()
1805 static int __irq_domain_activate_irq(struct irq_data *irqd, bool reserve) in __irq_domain_activate_irq()
1834 int irq_domain_activate_irq(struct irq_data *irq_data, bool reserve) in irq_domain_activate_irq() argument
1838 if (!irqd_is_activated(irq_data)) in irq_domain_activate_irq()
1839 ret = __irq_domain_activate_irq(irq_data, reserve); in irq_domain_activate_irq()
1841 irqd_set_activated(irq_data); in irq_domain_activate_irq()
1853 void irq_domain_deactivate_irq(struct irq_data *irq_data) in irq_domain_deactivate_irq() argument
1855 if (irqd_is_activated(irq_data)) { in irq_domain_deactivate_irq()
1856 __irq_domain_deactivate_irq(irq_data); in irq_domain_deactivate_irq()
1857 irqd_clr_activated(irq_data); in irq_domain_deactivate_irq()
1873 struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain, in irq_domain_get_irq_data()
1876 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_get_irq_data() local
1878 return (irq_data && irq_data->domain == domain) ? irq_data : NULL; in irq_domain_get_irq_data()