Lines Matching full:intr
24 * @out_irqs: TISCI resource pointer representing INTR irqs.
38 .name = "INTR",
62 struct ti_sci_intr_irq_domain *intr = domain->host_data; in ti_sci_intr_irq_domain_translate() local
68 *type = intr->type; in ti_sci_intr_irq_domain_translate()
75 * @intr: IRQ domain corresponding to Interrupt Router
80 static int ti_sci_intr_xlate_irq(struct ti_sci_intr_irq_domain *intr, u32 irq) in ti_sci_intr_xlate_irq() argument
82 struct device_node *np = dev_of_node(intr->dev); in ti_sci_intr_xlate_irq()
111 struct ti_sci_intr_irq_domain *intr = domain->host_data; in ti_sci_intr_irq_domain_free() local
118 intr->sci->ops.rm_irq_ops.free_irq(intr->sci, in ti_sci_intr_irq_domain_free()
119 intr->ti_sci_id, data->hwirq, in ti_sci_intr_irq_domain_free()
120 intr->ti_sci_id, out_irq); in ti_sci_intr_irq_domain_free()
121 ti_sci_release_resource(intr->out_irqs, out_irq); in ti_sci_intr_irq_domain_free()
132 * Returns intr output irq if all went well else appropriate error pointer.
137 struct ti_sci_intr_irq_domain *intr = domain->host_data; in ti_sci_intr_alloc_parent_irq() local
143 out_irq = ti_sci_get_free_resource(intr->out_irqs); in ti_sci_intr_alloc_parent_irq()
147 p_hwirq = ti_sci_intr_xlate_irq(intr, out_irq); in ti_sci_intr_alloc_parent_irq()
151 parent_node = of_irq_find_parent(dev_of_node(intr->dev)); in ti_sci_intr_alloc_parent_irq()
159 fwspec.param[2] = intr->type; in ti_sci_intr_alloc_parent_irq()
170 err = intr->sci->ops.rm_irq_ops.set_irq(intr->sci, in ti_sci_intr_alloc_parent_irq()
171 intr->ti_sci_id, hwirq, in ti_sci_intr_alloc_parent_irq()
172 intr->ti_sci_id, out_irq); in ti_sci_intr_alloc_parent_irq()
181 ti_sci_release_resource(intr->out_irqs, out_irq); in ti_sci_intr_alloc_parent_irq()
227 struct ti_sci_intr_irq_domain *intr; in ti_sci_intr_irq_domain_probe() local
245 intr = devm_kzalloc(dev, sizeof(*intr), GFP_KERNEL); in ti_sci_intr_irq_domain_probe()
246 if (!intr) in ti_sci_intr_irq_domain_probe()
249 intr->dev = dev; in ti_sci_intr_irq_domain_probe()
250 ret = of_property_read_u32(dev_of_node(dev), "ti,intr-trigger-type", in ti_sci_intr_irq_domain_probe()
251 &intr->type); in ti_sci_intr_irq_domain_probe()
253 dev_err(dev, "missing ti,intr-trigger-type property\n"); in ti_sci_intr_irq_domain_probe()
257 intr->sci = devm_ti_sci_get_by_phandle(dev, "ti,sci"); in ti_sci_intr_irq_domain_probe()
258 if (IS_ERR(intr->sci)) in ti_sci_intr_irq_domain_probe()
259 return dev_err_probe(dev, PTR_ERR(intr->sci), in ti_sci_intr_irq_domain_probe()
263 &intr->ti_sci_id); in ti_sci_intr_irq_domain_probe()
269 intr->out_irqs = devm_ti_sci_get_resource(intr->sci, dev, in ti_sci_intr_irq_domain_probe()
270 intr->ti_sci_id, in ti_sci_intr_irq_domain_probe()
272 if (IS_ERR(intr->out_irqs)) { in ti_sci_intr_irq_domain_probe()
274 return PTR_ERR(intr->out_irqs); in ti_sci_intr_irq_domain_probe()
278 &ti_sci_intr_irq_domain_ops, intr); in ti_sci_intr_irq_domain_probe()
284 dev_info(dev, "Interrupt Router %d domain created\n", intr->ti_sci_id); in ti_sci_intr_irq_domain_probe()
290 { .compatible = "ti,sci-intr", },
298 .name = "ti-sci-intr",