STRUCT TI_SCI_INTA_IRQ_DOMAIN(9)
π struct ti_sci_inta_irq_domain β NAME β¨
okay so bestie, this is the page for struct ti_sci_inta_irq_domain in the Kernel API Manual β and it's literally the structure that represents a TISCI based Interrupt Aggregator IRQ domain. that's the whole vibe, no cap. π
π¦ SYNOPSIS
struct ti_sci_inta_irq_domain {
const struct ti_sci_handle *sci;
struct ti_sci_resource *vint;
struct ti_sci_resource *global_event;
struct list_head vint_list;
struct mutex vint_mutex;
void __iomem *base;
struct platform_device *pdev;
u32 ti_sci_id;
int unmapped_cnt;
u16 *unmapped_dev_ids;
};
like, that's the whole struct, copy-pasted straight from the source, don't @ me π
πΈ Members β¨
okay let's go through every single field because we do NOT skip details in this house π
sciβ pointer to the TISCI handle. your main character pointer, fr.vintβ TISCI resource pointer representing IA interrupts. that's the interrupt-aggregator interrupt resource, iykyk.global_eventβ TISCI resource pointer representing global events. yes it's a whole separate resource pointer, slay.vint_listβ list of the vints that are active in the system. πvint_mutexβ mutex that protectsvint_list. do NOT touch that list without it, bestie, that's the whole point πbaseβ base address of the memory mapped IO registers.void __iomem *, iconic.pdevβ pointer to platform device. yes queen, the platform device itself.ti_sci_idβ TI-SCI device identifier. au32, obviously.unmapped_cntβ the number ofunmapped_dev_idsentries. just a count,int, living its life.unmapped_dev_idsβ pointer to an array of TI-SCI device identifiers of unmapped event sources. ok so this one needs the full explanation and it's genuinely so good:
Unmapped Events are not part of the Global Event Map, and they get converted to a Global event within INTA so they can be received by that same INTA and generate an interrupt. β¨
And here's the crucial part: in case an interrupt request comes for a device that's generating an Unmapped Event, we must use the INTA's TI-SCI device identifier in place of the source device identifier β so that sysfw knows where it has to program the Global Event number. that's the whole reason this array exists, bestie, don't forget it π«Ά
π SEE ALSO
kernel file ./drivers/irqchip/irq-ti-sci-inta.c plus all these beauties:
struct ti_sci_inta_event_desc(9)struct ti_sci_inta_vint_desc(9)ti_sci_inta_irq_handler(9)ti_sci_inta_xlate_irq(9)ti_sci_inta_alloc_parent_irq(9)ti_sci_inta_alloc_event(9)ti_sci_inta_alloc_irq(9)ti_sci_inta_free_parent_irq(9)ti_sci_inta_free_irq(9)ti_sci_inta_request_resources(9)ti_sci_inta_release_resources(9)ti_sci_inta_manage_event(9)ti_sci_inta_mask_irq(9)ti_sci_inta_unmask_irq(9)ti_sci_inta_ack_irq(9)ti_sci_inta_set_type(9)ti_sci_inta_irq_domain_free(9)ti_sci_inta_irq_domain_alloc(9)
like, read them, they're all connected, it's giving lore π€π
ok that's the whole page, nothing skipped, every member accounted for. go forth and understand your interrupt aggregator domain, bestie π β¨
and that's a wrap! π this came out of the Kernel API Manual, sourced from ./drivers/irqchip, dated October 2026 β struct ti_s...a_irq_domain(9), mwah, periodt ππ¦πΈ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms