Lines Matching refs:irq_data
303 struct irq_data *irq_data = irq_get_irq_data(irq); in irq_domain_disassociate() local
306 if (WARN(!irq_data || irq_data->domain != domain, in irq_domain_disassociate()
310 hwirq = irq_data->hwirq; in irq_domain_disassociate()
324 irq_data->domain = NULL; in irq_domain_disassociate()
325 irq_data->hwirq = 0; in irq_domain_disassociate()
340 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_associate() local
346 if (WARN(!irq_data, "error: virq%i is not allocated", virq)) in irq_domain_associate()
348 if (WARN(irq_data->domain, "error: virq%i is already associated", virq)) in irq_domain_associate()
352 irq_data->hwirq = hwirq; in irq_domain_associate()
353 irq_data->domain = domain; in irq_domain_associate()
366 irq_data->domain = NULL; in irq_domain_associate()
367 irq_data->hwirq = 0; in irq_domain_associate()
373 if (!domain->name && irq_data->chip) in irq_domain_associate()
374 domain->name = irq_data->chip->name; in irq_domain_associate()
381 radix_tree_insert(&domain->revmap_tree, hwirq, irq_data); in irq_domain_associate()
557 static void of_phandle_args_to_fwspec(struct of_phandle_args *irq_data, in of_phandle_args_to_fwspec() argument
562 fwspec->fwnode = irq_data->np ? &irq_data->np->fwnode : NULL; in of_phandle_args_to_fwspec()
563 fwspec->param_count = irq_data->args_count; in of_phandle_args_to_fwspec()
565 for (i = 0; i < irq_data->args_count; i++) in of_phandle_args_to_fwspec()
566 fwspec->param[i] = irq_data->args[i]; in of_phandle_args_to_fwspec()
617 unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data) in irq_create_of_mapping() argument
621 of_phandle_args_to_fwspec(irq_data, &fwspec); in irq_create_of_mapping()
632 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_dispose_mapping() local
635 if (!virq || !irq_data) in irq_dispose_mapping()
638 domain = irq_data->domain; in irq_dispose_mapping()
655 struct irq_data *data; in irq_find_mapping()
717 domain = desc->irq_data.domain; in virq_debug_show()
721 int hwirq = desc->irq_data.hwirq; in virq_debug_show()
738 seq_printf(m, "%s\n", desc->irq_data.domain->name); in virq_debug_show()
894 struct irq_data *data; in irq_domain_insert_irq()
918 struct irq_data *data; in irq_domain_remove_irq()
939 static struct irq_data *irq_domain_insert_irq_data(struct irq_domain *domain, in irq_domain_insert_irq_data()
940 struct irq_data *child) in irq_domain_insert_irq_data()
942 struct irq_data *irq_data; in irq_domain_insert_irq_data() local
944 irq_data = kzalloc_node(sizeof(*irq_data), GFP_KERNEL, in irq_domain_insert_irq_data()
946 if (irq_data) { in irq_domain_insert_irq_data()
947 child->parent_data = irq_data; in irq_domain_insert_irq_data()
948 irq_data->irq = child->irq; in irq_domain_insert_irq_data()
949 irq_data->common = child->common; in irq_domain_insert_irq_data()
950 irq_data->domain = domain; in irq_domain_insert_irq_data()
953 return irq_data; in irq_domain_insert_irq_data()
958 struct irq_data *irq_data, *tmp; in irq_domain_free_irq_data() local
962 irq_data = irq_get_irq_data(virq + i); in irq_domain_free_irq_data()
963 tmp = irq_data->parent_data; in irq_domain_free_irq_data()
964 irq_data->parent_data = NULL; in irq_domain_free_irq_data()
965 irq_data->domain = NULL; in irq_domain_free_irq_data()
968 irq_data = tmp; in irq_domain_free_irq_data()
970 kfree(irq_data); in irq_domain_free_irq_data()
978 struct irq_data *irq_data; in irq_domain_alloc_irq_data() local
984 irq_data = irq_get_irq_data(virq + i); in irq_domain_alloc_irq_data()
985 irq_data->domain = domain; in irq_domain_alloc_irq_data()
988 irq_data = irq_domain_insert_irq_data(parent, irq_data); in irq_domain_alloc_irq_data()
989 if (!irq_data) { in irq_domain_alloc_irq_data()
1004 struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain, in irq_domain_get_irq_data()
1007 struct irq_data *irq_data; in irq_domain_get_irq_data() local
1009 for (irq_data = irq_get_irq_data(virq); irq_data; in irq_domain_get_irq_data()
1010 irq_data = irq_data->parent_data) in irq_domain_get_irq_data()
1011 if (irq_data->domain == domain) in irq_domain_get_irq_data()
1012 return irq_data; in irq_domain_get_irq_data()
1029 struct irq_data *irq_data = irq_domain_get_irq_data(domain, virq); in irq_domain_set_hwirq_and_chip() local
1031 if (!irq_data) in irq_domain_set_hwirq_and_chip()
1034 irq_data->hwirq = hwirq; in irq_domain_set_hwirq_and_chip()
1035 irq_data->chip = chip ? chip : &no_irq_chip; in irq_domain_set_hwirq_and_chip()
1036 irq_data->chip_data = chip_data; in irq_domain_set_hwirq_and_chip()
1066 void irq_domain_reset_irq_data(struct irq_data *irq_data) in irq_domain_reset_irq_data() argument
1068 irq_data->hwirq = 0; in irq_domain_reset_irq_data()
1069 irq_data->chip = &no_irq_chip; in irq_domain_reset_irq_data()
1070 irq_data->chip_data = NULL; in irq_domain_reset_irq_data()
1082 struct irq_data *irq_data; in irq_domain_free_irqs_common() local
1086 irq_data = irq_domain_get_irq_data(domain, virq + i); in irq_domain_free_irqs_common()
1087 if (irq_data) in irq_domain_free_irqs_common()
1088 irq_domain_reset_irq_data(irq_data); in irq_domain_free_irqs_common()
1229 struct irq_data *data = irq_get_irq_data(virq); in irq_domain_free_irqs()
1295 void irq_domain_activate_irq(struct irq_data *irq_data) in irq_domain_activate_irq() argument
1297 if (irq_data && irq_data->domain) { in irq_domain_activate_irq()
1298 struct irq_domain *domain = irq_data->domain; in irq_domain_activate_irq()
1300 if (irq_data->parent_data) in irq_domain_activate_irq()
1301 irq_domain_activate_irq(irq_data->parent_data); in irq_domain_activate_irq()
1303 domain->ops->activate(domain, irq_data); in irq_domain_activate_irq()
1315 void irq_domain_deactivate_irq(struct irq_data *irq_data) in irq_domain_deactivate_irq() argument
1317 if (irq_data && irq_data->domain) { in irq_domain_deactivate_irq()
1318 struct irq_domain *domain = irq_data->domain; in irq_domain_deactivate_irq()
1321 domain->ops->deactivate(domain, irq_data); in irq_domain_deactivate_irq()
1322 if (irq_data->parent_data) in irq_domain_deactivate_irq()
1323 irq_domain_deactivate_irq(irq_data->parent_data); in irq_domain_deactivate_irq()
1339 struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain, in irq_domain_get_irq_data()
1342 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_get_irq_data() local
1344 return (irq_data && irq_data->domain == domain) ? irq_data : NULL; in irq_domain_get_irq_data()