Lines Matching defs:vint_desc
147 struct ti_sci_inta_vint_desc *vint_desc;
153 vint_desc = irq_desc_get_handler_data(desc);
154 domain = vint_desc->domain;
159 val = readq_relaxed(inta->base + vint_desc->vint_id * 0x1000 +
163 generic_handle_domain_irq(domain, vint_desc->events[bit].hwirq);
208 struct ti_sci_inta_vint_desc *vint_desc;
225 vint_desc = kzalloc(sizeof(*vint_desc), GFP_KERNEL);
226 if (!vint_desc) {
231 vint_desc->domain = domain;
232 vint_desc->vint_id = vint_id;
233 INIT_LIST_HEAD(&vint_desc->list);
257 vint_desc->parent_virq = parent_virq;
259 list_add_tail(&vint_desc->list, &inta->vint_list);
260 irq_set_chained_handler_and_data(vint_desc->parent_virq,
261 ti_sci_inta_irq_handler, vint_desc);
263 return vint_desc;
265 kfree(vint_desc);
273 * @vint_desc: Pointer to vint_desc to which the event gets attached
279 static struct ti_sci_inta_event_desc *ti_sci_inta_alloc_event(struct ti_sci_inta_vint_desc *vint_desc,
283 struct ti_sci_inta_irq_domain *inta = vint_desc->domain->host_data;
291 event_desc = &vint_desc->events[free_bit];
301 vint_desc->vint_id,
328 struct ti_sci_inta_vint_desc *vint_desc = NULL;
333 list_for_each_entry(vint_desc, &inta->vint_list, list) {
334 free_bit = find_first_zero_bit(vint_desc->event_map,
337 set_bit(free_bit, vint_desc->event_map);
343 vint_desc = ti_sci_inta_alloc_parent_irq(domain);
344 if (IS_ERR(vint_desc)) {
345 event_desc = ERR_CAST(vint_desc);
349 free_bit = find_first_zero_bit(vint_desc->event_map,
351 set_bit(free_bit, vint_desc->event_map);
354 event_desc = ti_sci_inta_alloc_event(vint_desc, free_bit, hwirq);
356 clear_bit(free_bit, vint_desc->event_map);
366 * @vint_desc: Pointer to vint_desc that needs to be freed.
369 struct ti_sci_inta_vint_desc *vint_desc)
371 if (find_first_bit(vint_desc->event_map, MAX_EVENTS_PER_VINT) == MAX_EVENTS_PER_VINT) {
372 list_del(&vint_desc->list);
373 ti_sci_release_resource(inta->vint, vint_desc->vint_id);
374 irq_dispose_mapping(vint_desc->parent_virq);
375 kfree(vint_desc);
387 struct ti_sci_inta_vint_desc *vint_desc;
391 vint_desc = to_vint_desc(event_desc, event_desc->vint_bit);
392 inta = vint_desc->domain->host_data;
399 vint_desc->vint_id,
403 clear_bit(event_desc->vint_bit, vint_desc->event_map);
408 ti_sci_inta_free_parent_irq(inta, vint_desc);
459 struct ti_sci_inta_vint_desc *vint_desc;
463 vint_desc = to_vint_desc(event_desc, event_desc->vint_bit);
467 inta->base + vint_desc->vint_id * 0x1000 + offset);