STRUCT ROCKCHIP_PCIE_EP(9)
β¨ struct rockchip_pcie_ep(9) β¨
okay so bestie, welcome to the Kernel API Manual π
this page is all about struct rockchip_pcie_ep and honestly? it's giving backstage-pass energy. it's the little private-data dressing room where the PCIe endpoint controller driver keeps all its stuff. no cap.
π NAME π
struct rockchip_pcie_ep β private data for the PCIe endpoint controller driver π¦
like, it's not the controller itself, it's the vibe of the controller. the personal stash. the group chat of variables. periodt.
β¨ SYNOPSIS β¨
struct rockchip_pcie_ep {
struct rockchip_pcie rockchip;
struct pci_epc *epc;
u32 max_regions;
unsigned long ob_region_map;
phys_addr_t *ob_addr;
phys_addr_t irq_phys_addr;
void __iomem *irq_cpu_addr;
u64 irq_pci_addr;
u8 irq_pci_fn;
u8 irq_pending;
int perst_irq;
bool perst_asserted;
bool link_up;
struct delayed_work link_training;
};
look at her. fourteen fields. main character struct honestly πΈ copy it exactly if you're writing it out, bestie β no freelancing, no renaming, we do not do that here π«Ά
π Members π
the roster, one by one π
rockchipβ the Rockchip PCIe controller itself. the parent figure. the whole reason we're here πepcβ the PCI EPC device. pointer city.max_regionsβ the maximum number of regions the hardware can support. like the seat limit at a concert β the hardware decides it, not you π«ob_region_mapβ a bitmask of the mapped outbound regions. yes, a <highlight>bitmask</highlight>, so if you're squinting at hex wondering which regions are live, this is your girl π₯ob_addrβ base addresses in the AXI bus where the outbound regions start. AXI bus addresses, not vibes-based addresses πirq_phys_addrβ the base address on the AXI bus where the MSI/INTX IRQ dedicated outbound region is mapped. that's the physical side of the dedicated region, iykyk.irq_cpu_addrβ the base address in CPU space where a write access triggers the sending of a memory write (MSI) / normal message (INTX IRQ) TLP through the PCIe bus. so like... you poke this address in CPU space, and a TLP goes out over PCIe. cute little trigger finger πirq_pci_addrβ used to save the current mapping of the MSI/INTX IRQ dedicated outbound region. it's the saved-state flex πirq_pci_fnβ the latest PCI function that has updated the mapping of the MSI/INTX IRQ dedicated outbound region. i.e. who touched the mapping last. we keep receipts πirq_pendingβ a bitmask of asserted INTX IRQs. again: <highlight>bitmask</highlight>. multiple bits, multiple asserted IRQs, one field.perst_irqβ the IRQ used for thePERST#signal. (yes, with the hash. it's that signal β¨)perst_assertedβtrueif thePERST#signal was asserted. that's it, that's the whole field πlink_upβtrueif the PCI link is up. genuinely iconic. the field we all care about πlink_trainingβ the work item used to execute PCI link training. it's astruct delayed_work, so it laces up and does the training later. scheduled glow-up π§
πΈ SEE ALSO πΈ
- Kernel file
./drivers/pci/controller/pcie-rockchip-ep.cβ go read the source, bestie, it's right there and it ate π
ngl, the whole point of this struct is that the driver keeps its state together in one place instead of scattering it, so if you're reading the driver and see a rockchip_pcie_ep pointer, that's the stash. you're welcome π«Ά
and that's the whole page!! slay πβ this gorgeous little writeup comes to you from ./drivers/pci/controller, dated October 2026 β mwah, go touch the source, ily 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