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 virq = irq_find_mapping(domain, vint_desc->events[bit].hwirq); in ti_sci_inta_irq_handler()
211 struct ti_sci_inta_vint_desc *vint_desc; in ti_sci_inta_alloc_parent_irq() local
228 vint_desc = kzalloc(sizeof(*vint_desc), GFP_KERNEL); in ti_sci_inta_alloc_parent_irq()
229 if (!vint_desc) { in ti_sci_inta_alloc_parent_irq()
234 vint_desc->domain = domain; in ti_sci_inta_alloc_parent_irq()
235 vint_desc->vint_id = vint_id; in ti_sci_inta_alloc_parent_irq()
236 INIT_LIST_HEAD(&vint_desc->list); in ti_sci_inta_alloc_parent_irq()
260 vint_desc->parent_virq = parent_virq; in ti_sci_inta_alloc_parent_irq()
262 list_add_tail(&vint_desc->list, &inta->vint_list); in ti_sci_inta_alloc_parent_irq()
263 irq_set_chained_handler_and_data(vint_desc->parent_virq, in ti_sci_inta_alloc_parent_irq()
264 ti_sci_inta_irq_handler, vint_desc); in ti_sci_inta_alloc_parent_irq()
266 return vint_desc; in ti_sci_inta_alloc_parent_irq()
268 kfree(vint_desc); in ti_sci_inta_alloc_parent_irq()
282 …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
286 struct ti_sci_inta_irq_domain *inta = vint_desc->domain->host_data; in ti_sci_inta_alloc_event()
294 event_desc = &vint_desc->events[free_bit]; in ti_sci_inta_alloc_event()
304 vint_desc->vint_id, in ti_sci_inta_alloc_event()
331 struct ti_sci_inta_vint_desc *vint_desc = NULL; in ti_sci_inta_alloc_irq() local
336 list_for_each_entry(vint_desc, &inta->vint_list, list) { in ti_sci_inta_alloc_irq()
337 free_bit = find_first_zero_bit(vint_desc->event_map, in ti_sci_inta_alloc_irq()
340 set_bit(free_bit, vint_desc->event_map); in ti_sci_inta_alloc_irq()
346 vint_desc = ti_sci_inta_alloc_parent_irq(domain); in ti_sci_inta_alloc_irq()
347 if (IS_ERR(vint_desc)) { in ti_sci_inta_alloc_irq()
348 event_desc = ERR_CAST(vint_desc); in ti_sci_inta_alloc_irq()
352 free_bit = find_first_zero_bit(vint_desc->event_map, in ti_sci_inta_alloc_irq()
354 set_bit(free_bit, vint_desc->event_map); in ti_sci_inta_alloc_irq()
357 event_desc = ti_sci_inta_alloc_event(vint_desc, free_bit, hwirq); in ti_sci_inta_alloc_irq()
359 clear_bit(free_bit, vint_desc->event_map); in ti_sci_inta_alloc_irq()
372 struct ti_sci_inta_vint_desc *vint_desc) in ti_sci_inta_free_parent_irq() argument
374 if (find_first_bit(vint_desc->event_map, MAX_EVENTS_PER_VINT) == MAX_EVENTS_PER_VINT) { in ti_sci_inta_free_parent_irq()
375 list_del(&vint_desc->list); in ti_sci_inta_free_parent_irq()
376 ti_sci_release_resource(inta->vint, vint_desc->vint_id); in ti_sci_inta_free_parent_irq()
377 irq_dispose_mapping(vint_desc->parent_virq); in ti_sci_inta_free_parent_irq()
378 kfree(vint_desc); in ti_sci_inta_free_parent_irq()
390 struct ti_sci_inta_vint_desc *vint_desc; in ti_sci_inta_free_irq() local
394 vint_desc = to_vint_desc(event_desc, event_desc->vint_bit); in ti_sci_inta_free_irq()
395 inta = vint_desc->domain->host_data; in ti_sci_inta_free_irq()
402 vint_desc->vint_id, in ti_sci_inta_free_irq()
406 clear_bit(event_desc->vint_bit, vint_desc->event_map); in ti_sci_inta_free_irq()
411 ti_sci_inta_free_parent_irq(inta, vint_desc); in ti_sci_inta_free_irq()
462 struct ti_sci_inta_vint_desc *vint_desc; in ti_sci_inta_manage_event() local
466 vint_desc = to_vint_desc(event_desc, event_desc->vint_bit); in ti_sci_inta_manage_event()
470 inta->base + vint_desc->vint_id * 0x1000 + offset); in ti_sci_inta_manage_event()