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