pci_irqd_intx_xlate(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so bestie, this is pci_irqd_intx_xlate(9) from the Kernel API Manual, and it's literally the tiny translator that takes a PCI INTx value and turns it into an IRQ domain hwirq number πŸ’…βœ¨

πŸŽ€ NAME πŸŽ€

pci_irqd_intx_xlate β€” Translate PCI INTx value to an IRQ domain hwirq.

✨ SYNOPSIS ✨

int pci_irqd_intx_xlate (struct irq_domain *d , struct device_node *node
, const u32 *intspec , unsigned int intsize , unsigned long *out_hwirq ,
unsigned int *out_type );

πŸ’– ARGUMENTS πŸ’–

Here's the cast, bestie β€” every single one matters:

  • d β€” the INTx IRQ domain. That's the domain doing the INTx thing πŸ’«
  • node β€” the DT node for the device whose interrupt we're translating.
  • intspec β€” the interrupt specifier data from the DT.
  • intsize β€” the number of entries in intspec.
  • out_hwirq β€” pointer at which to write the hwirq number.
  • out_type β€” pointer at which to write the interrupt type.

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so the actual glow-up is this: translate a PCI INTx interrupt number from device tree in the range 1-4, as stored in the standard PCI_INTERRUPT_PIN register, to a value in the range 0-3 suitable for use in a 4 entry IRQ domain. The way that works? Subtract one from the INTx value to obtain the hwirq number. Literally it, no cap ✨

Returns 0 on success, or -EINVAL if the interrupt specifier is out of range. Vibe check: out-of-range gets the -EINVAL treatment 😭

🌈 SEE ALSO 🌈

The whole extended friend group, all exact and accounted for 🫢:

and that's the whole page, bestie πŸ’– source/version: ./include/linux; date: October 2026; manual: pci_irqd_intx_xlate(9). slay and goodbye 🫢✨

πŸ“¦ where this page comes from