Lines Matching refs:irq_data
239 struct irq_data *irq_data = irq_get_irq_data(irq); in irq_domain_disassociate() local
242 if (WARN(!irq_data || irq_data->domain != domain, in irq_domain_disassociate()
246 hwirq = irq_data->hwirq; in irq_domain_disassociate()
260 irq_data->domain = NULL; in irq_domain_disassociate()
261 irq_data->hwirq = 0; in irq_domain_disassociate()
276 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_associate() local
282 if (WARN(!irq_data, "error: virq%i is not allocated", virq)) in irq_domain_associate()
284 if (WARN(irq_data->domain, "error: virq%i is already associated", virq)) in irq_domain_associate()
288 irq_data->hwirq = hwirq; in irq_domain_associate()
289 irq_data->domain = domain; in irq_domain_associate()
302 irq_data->domain = NULL; in irq_domain_associate()
303 irq_data->hwirq = 0; in irq_domain_associate()
309 if (!domain->name && irq_data->chip) in irq_domain_associate()
310 domain->name = irq_data->chip->name; in irq_domain_associate()
317 radix_tree_insert(&domain->revmap_tree, hwirq, irq_data); in irq_domain_associate()
467 unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data) in irq_create_of_mapping() argument
474 domain = irq_data->np ? irq_find_host(irq_data->np) : irq_default_domain; in irq_create_of_mapping()
477 of_node_full_name(irq_data->np)); in irq_create_of_mapping()
483 hwirq = irq_data->args[0]; in irq_create_of_mapping()
485 if (domain->ops->xlate(domain, irq_data->np, irq_data->args, in irq_create_of_mapping()
486 irq_data->args_count, &hwirq, &type)) in irq_create_of_mapping()
499 virq = irq_domain_alloc_irqs(domain, 1, NUMA_NO_NODE, irq_data); in irq_create_of_mapping()
523 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_dispose_mapping() local
526 if (!virq || !irq_data) in irq_dispose_mapping()
529 domain = irq_data->domain; in irq_dispose_mapping()
546 struct irq_data *data; in irq_find_mapping()
606 domain = desc->irq_data.domain; in virq_debug_show()
610 int hwirq = desc->irq_data.hwirq; in virq_debug_show()
627 seq_printf(m, "%s\n", desc->irq_data.domain->name); in virq_debug_show()
783 struct irq_data *data; in irq_domain_insert_irq()
807 struct irq_data *data; in irq_domain_remove_irq()
828 static struct irq_data *irq_domain_insert_irq_data(struct irq_domain *domain, in irq_domain_insert_irq_data()
829 struct irq_data *child) in irq_domain_insert_irq_data()
831 struct irq_data *irq_data; in irq_domain_insert_irq_data() local
833 irq_data = kzalloc_node(sizeof(*irq_data), GFP_KERNEL, child->node); in irq_domain_insert_irq_data()
834 if (irq_data) { in irq_domain_insert_irq_data()
835 child->parent_data = irq_data; in irq_domain_insert_irq_data()
836 irq_data->irq = child->irq; in irq_domain_insert_irq_data()
837 irq_data->node = child->node; in irq_domain_insert_irq_data()
838 irq_data->domain = domain; in irq_domain_insert_irq_data()
841 return irq_data; in irq_domain_insert_irq_data()
846 struct irq_data *irq_data, *tmp; in irq_domain_free_irq_data() local
850 irq_data = irq_get_irq_data(virq + i); in irq_domain_free_irq_data()
851 tmp = irq_data->parent_data; in irq_domain_free_irq_data()
852 irq_data->parent_data = NULL; in irq_domain_free_irq_data()
853 irq_data->domain = NULL; in irq_domain_free_irq_data()
856 irq_data = tmp; in irq_domain_free_irq_data()
858 kfree(irq_data); in irq_domain_free_irq_data()
866 struct irq_data *irq_data; in irq_domain_alloc_irq_data() local
872 irq_data = irq_get_irq_data(virq + i); in irq_domain_alloc_irq_data()
873 irq_data->domain = domain; in irq_domain_alloc_irq_data()
876 irq_data = irq_domain_insert_irq_data(parent, irq_data); in irq_domain_alloc_irq_data()
877 if (!irq_data) { in irq_domain_alloc_irq_data()
892 struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain, in irq_domain_get_irq_data()
895 struct irq_data *irq_data; in irq_domain_get_irq_data() local
897 for (irq_data = irq_get_irq_data(virq); irq_data; in irq_domain_get_irq_data()
898 irq_data = irq_data->parent_data) in irq_domain_get_irq_data()
899 if (irq_data->domain == domain) in irq_domain_get_irq_data()
900 return irq_data; in irq_domain_get_irq_data()
917 struct irq_data *irq_data = irq_domain_get_irq_data(domain, virq); in irq_domain_set_hwirq_and_chip() local
919 if (!irq_data) in irq_domain_set_hwirq_and_chip()
922 irq_data->hwirq = hwirq; in irq_domain_set_hwirq_and_chip()
923 irq_data->chip = chip ? chip : &no_irq_chip; in irq_domain_set_hwirq_and_chip()
924 irq_data->chip_data = chip_data; in irq_domain_set_hwirq_and_chip()
954 void irq_domain_reset_irq_data(struct irq_data *irq_data) in irq_domain_reset_irq_data() argument
956 irq_data->hwirq = 0; in irq_domain_reset_irq_data()
957 irq_data->chip = &no_irq_chip; in irq_domain_reset_irq_data()
958 irq_data->chip_data = NULL; in irq_domain_reset_irq_data()
970 struct irq_data *irq_data; in irq_domain_free_irqs_common() local
974 irq_data = irq_domain_get_irq_data(domain, virq + i); in irq_domain_free_irqs_common()
975 if (irq_data) in irq_domain_free_irqs_common()
976 irq_domain_reset_irq_data(irq_data); in irq_domain_free_irqs_common()
1117 struct irq_data *data = irq_get_irq_data(virq); in irq_domain_free_irqs()
1183 void irq_domain_activate_irq(struct irq_data *irq_data) in irq_domain_activate_irq() argument
1185 if (irq_data && irq_data->domain) { in irq_domain_activate_irq()
1186 struct irq_domain *domain = irq_data->domain; in irq_domain_activate_irq()
1188 if (irq_data->parent_data) in irq_domain_activate_irq()
1189 irq_domain_activate_irq(irq_data->parent_data); in irq_domain_activate_irq()
1191 domain->ops->activate(domain, irq_data); in irq_domain_activate_irq()
1203 void irq_domain_deactivate_irq(struct irq_data *irq_data) in irq_domain_deactivate_irq() argument
1205 if (irq_data && irq_data->domain) { in irq_domain_deactivate_irq()
1206 struct irq_domain *domain = irq_data->domain; in irq_domain_deactivate_irq()
1209 domain->ops->deactivate(domain, irq_data); in irq_domain_deactivate_irq()
1210 if (irq_data->parent_data) in irq_domain_deactivate_irq()
1211 irq_domain_deactivate_irq(irq_data->parent_data); in irq_domain_deactivate_irq()
1227 struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain, in irq_domain_get_irq_data()
1230 struct irq_data *irq_data = irq_get_irq_data(virq); in irq_domain_get_irq_data() local
1232 return (irq_data && irq_data->domain == domain) ? irq_data : NULL; in irq_domain_get_irq_data()