i3c_hci_sysdev(9)
β¨ i3c_hci_sysdev(9) β¨
okay so this is a page from the Kernel API Manual, and bestie, it's a tiny little function that saves you from a very specific kind of heartbreak π
πΈ NAME πΈ
i3c_hci_sysdev β the lil' helper that tells you which device to actually use for DMA and for system PM π«Ά
π¦ SYNOPSIS π¦
struct device * i3c_hci_sysdev (struct device *dev );
π ARGUMENTS π
devβ the device that the HCI controller is bound to. like, that's your starting point, that's the one you got handed π- ok that's it, there's literally only one argument, she's low-maintenance π
π DESCRIPTION π
so here's the situation. when an IOMMU is enabled, your DMA API calls have to use the device that the IOMMU setup was actually done for. no cap. that's the whole vibe check.
and under PCI enumeration, that device is the PCI device β not the "mipi-i3c-hci" platform device sitting underneath it. the way that the platform device is right there and looks so convenient and is not the one π
fr fr, do not just grab the platform device because it's closer. that's not the main character. the PCI device is the main character here.
also, bestie β the same device owns system PM and the wakeup configuration. so like, one device to rule them all, basically β¨
π₯ RETURN π₯
dev's parent, ifdevis a PCI device π- otherwise, just
devitself, no changes, she stays as she is π
π SEE ALSO π
- Kernel file
./drivers/i3c/master/mipi-i3c-hci/core.cβ go read it, iykyk π
π§ and that's the whole page!! short and iconic, honestly. go forth and use the right device for your DMA calls, bestie, the IOMMU is watching π
that was i3c_hci_sysdev(9), brought to you by the ./drivers/i3c/master/mipi-i3c-hci directory, dated October 2026 β mwah, love u, bye πππ
π¦ 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