STRUCT IOSM_PCIE(9)
π struct iosm_pcie(9) β the Kernel API Manual, but make it cute
okay bestie, welcome to the struct iosm_pcie(9) page from the Kernel API Manual π this is the IPC_PCIE struct, and it's basically the main character of the iosm WWAN driver's PCIe era. let's get into it β¨
πΈ NAME πΈ
struct iosm_pcie β the IPC_PCIE struct. that's it, that's the whole vibe π«Ά
π SYNOPSIS π
here she is, in all her glory β every field, exactly as declared, no cap:
struct iosm_pcie {
struct pci_dev *pci;
struct device *dev;
void __iomem *ipc_regs;
void __iomem *scratchpad;
struct iosm_imem *imem;
int ipc_regs_bar_nr;
int scratchpad_bar_nr;
int nvec;
u32 doorbell_reg_offset;
u32 doorbell_write;
u32 doorbell_capture;
unsigned long suspend;
enum ipc_pcie_sleep_state d3l2_support;
};
π¦ Members π¦
okay so now we go field by field, and honestly? every one of them is serving a purpose π₯
pciβ address of the device description π«devβ pointer to the generic device structure πipc_regsβ the remapped CP doorbell address of the irq register set, and its whole job is to fire the doorbell irq π literally what she was born to doscratchpadβ the remapped CP scratchpad address, used to send the configuration tuple and the IPC descriptors to CP in the ROM phase π heads up: the config tuple information gets saved on the MSI scratchpad β¨imemβ pointer to the imem data struct πipc_regs_bar_nrβ the BAR number to be used for the IPC doorbell πΈscratchpad_bar_nrβ the BAR number to be used for Scratchpad π¦nvecβ the number of requested irq vectors βdoorbell_reg_offsetβdoorbell_reg_offsetπ (yes, that's genuinely the description, she said "I am what I am")doorbell_writeβ the doorbell write register βοΈdoorbell_captureβ the doorbell capture resgister πΈsuspendβ S2IDLE sleep/active π΄d3l2_supportβ reads the WWAN RTD3 BIOS setting for D3L2 support π
π SEE ALSO π
go read these next, bestie, they're all linked up π«Ά the kernel file is ./drivers/net/wwan/iosm/iosm_ipc_pcie.h (and the enum lives there too):
enum ipc_pcie_sleep_state(9)struct ipc_skb_cb(9)enum ipc_ul_usr_op(9)ipc_pcie_addr_map(9)ipc_pcie_addr_unmap(9)ipc_pcie_alloc_skb(9)ipc_pcie_alloc_local_skb(9)ipc_pcie_kfree_skb(9)ipc_pcie_check_data_link_active(9)ipc_pcie_suspend(9)ipc_pcie_resume(9)ipc_pcie_check_aspm_enabled(9)ipc_pcie_config_aspm(9)
ngl the whole thing lives under ./drivers/net/wwan/iosm and that's the path you'll see stamped on the page π§
and that's the tea π this page dropped October 2026, courtesy of the kernel's very own ./drivers/net/wwan/iosm directory β slay, iconic, no notes π
πβ¨
π¦ 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