STRUCT ASPEED_PCIE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct aspeed_pcie(9) ✨

okay so bestie, this is from the Kernel API Manual and it's literally the whole vibe of the Aspeed PCIe root complex (RC) β€” like, all the info it keeps about itself. no cap, every field here is load-bearing πŸ’…


πŸ’– NAME πŸ’–

struct aspeed_pcie β€” PCIe RC information πŸŽ€


🌸 SYNOPSIS 🌸

struct aspeed_pcie {
    struct pci_host_bridge *host;
    struct device *dev;
    void __iomem *reg;
    struct regmap *ahbc;
    struct regmap *cfg;
    const struct aspeed_pcie_rc_platform *platform;
    struct list_head ports;
    u8 tx_tag;
    u8 root_bus_nr;
    struct reset_control *h2xrst;
    struct irq_domain *intx_domain;
    struct irq_domain *msi_domain;
    struct mutex lock;
    unsigned long msi_irq_in_use[BITS_TO_LONGS( MAX_MSI_HOST_IRQS)];
    bool clear_msi_twice;
 };

like, that's the whole struct, copied exactly, no edits from me, i promise 🫢 (and yes, that [BITS_TO_LONGS( MAX_MSI_HOST_IRQS)] spacing is how it was written, we don't touch it)


πŸ¦‹ Members πŸ¦‹

okay so going field by field, main character energy each one:

  • host β€” pointer to the PCIe host bridge πŸ‘‘
  • dev β€” pointer to the device structure
  • reg β€” PCIe host register base address
  • ahbc β€” pointer to AHHC register map
  • cfg β€” pointer to Aspeed PCIe configuration register map
  • platform β€” platform specific information
  • ports β€” list of PCIe ports
  • tx_tag β€” current TX tag for the port
  • root_bus_nr β€” bus number of the host bridge
  • h2xrst β€” pointer to H2X reset control ✨
  • intx_domain β€” IRQ domain for INTx interrupts
  • msi_domain β€” IRQ domain for MSI interrupts
  • lock β€” mutex to protect MSI bitmap variable πŸ”’
  • msi_irq_in_use β€” bitmap to track used MSI host IRQs
  • clear_msi_twice β€” AST2700 workaround to clear MSI status twice πŸ’€
not me pointing out that clear_msi_twice is literally a workaround β€” it's for AST2700 and it clears the MSI status twice. that's the whole bit. icon.

🌈 SEE ALSO 🌈

  • Kernel file ./drivers/pci/controller/pcie-aspeed.c struct aspeed_pcie_port(9), struct aspeed_pcie_rc_platform(9) 🧚

⭐ the sign-off ⭐

this lil page came from ./drivers/pci/controller and it's dated October 2026, and the whole thing is filed under struct aspeed_pcie(9) β€” slay, go read the driver bestie, ily, bye πŸ’œπŸ“

πŸ“¦ where this page comes from