STRUCT IOSM_IMEM(9)
π struct iosm_imem(9) β Kernel API Manual π
okay bestie, welcome to the manual page for struct iosm_imem(9) β literally the current state of the IPC shared memory. no cap, this struct is the main character of the IPC shared-memory situation π
β¨
πΈ NAME πΈ
struct iosm_imem β current state of the IPC shared memory. π«Ά
β¨ SYNOPSIS β¨
struct iosm_imem {
struct iosm_mmio *mmio;
struct iosm_protocol *ipc_protocol;
struct ipc_task *ipc_task;
struct iosm_wwan *wwan;
struct iosm_mux *mux;
struct iosm_cdev *ipc_port[IPC_MEM_MAX_CHANNELS];
struct iosm_pcie *pcie;
#ifdef CONFIG_WWAN_DEBUGFS;
struct iosm_trace *trace;
#endif;
struct device *dev;
enum ipc_mem_device_ipc_state ipc_requested_state;
struct ipc_mem_channel channels[IPC_MEM_MAX_CHANNELS];
struct iosm_devlink *ipc_devlink;
u32 ipc_status;
u32 nr_of_channels;
struct hrtimer startup_timer;
ktime_t hrtimer_period;
struct hrtimer tdupdate_timer;
struct hrtimer fast_update_timer;
struct hrtimer td_alloc_timer;
struct hrtimer adb_timer;
enum rom_exit_code rom_exit_code;
u32 enter_runtime;
struct completion ul_pend_sem;
u32 app_notify_ul_pend;
struct completion dl_pend_sem;
u32 app_notify_dl_pend;
enum ipc_phase phase;
u16 pci_device_id;
int cp_version;
int device_sleep;
struct work_struct run_state_worker;
u8 ev_irq_pending[IPC_IRQ_VECTORS];
unsigned long flag;
u8 td_update_timer_suspended:1, ev_mux_net_transmit_pending:1,
reset_det_n:1, pcie_wake_n:1;
#ifdef CONFIG_WWAN_DEBUGFS;
struct dentry *debugfs_wwan_dir;
struct dentry *debugfs_dir;
#endif;
};
quick vibe check: trace, debugfs_wwan_dir, and debugfs_dir are tucked behind #ifdef CONFIG_WWAN_DEBUGFS; in there β iykyk π§ββοΈ
π§© Members π§©
mmioβ themmioinstance used to access the CP MMIO area / doorbell scratchpad. ποΈipc_protocolβ the IPC Protocol instance. π§ipc_taskβ the task for entry into the ipc task queue. ποΈwwanβ the WWAN device pointer. π‘muxβ the IP Data multiplexing state. π§¬ipc_portβ a pointer to the IPC PORT data structure. πͺpcieβ the IPC PCIe. πtraceβ a pointer to the IPC trace data structure. πdevβ a pointer to the device structure. πipc_requested_stateβ the expected IPC state on CP. πchannelsβ the channel list with UL/DL pipe pairs. π§΅ipc_devlinkβ a pointer to the IPC Devlink data structure. π§·ipc_statusβ the localipc_status. πnr_of_channelsβ the number of configured channels. π’startup_timerβ the startup timer for NAND support. β°hrtimer_periodβ the Hr timer period. π°οΈtdupdate_timerβ delays the TD update doorbell. πfast_update_timerβ the forced head pointer update delay timer. β‘td_alloc_timerβ the timer for DL pipe TD allocation retry. πadb_timerβ the timer for finishing the ADB. β³rom_exit_codeβ the mapped boot rom exit code. π§Ύenter_runtimeβ1means the transition to runtime phase was executed. πββοΈul_pend_semβ the semaphore to wait/complete of UL TDs before closing pipe. π¦app_notify_ul_pendβ signals the app if a UL TD is pending. π£dl_pend_semβ the semaphore to wait/complete of DL TDs before closing pipe. π§app_notify_dl_pendβ signals the app if a DL TD is pending. π’phaseβ the operating phase, like runtime. πpci_device_idβ the device ID. πcp_versionβ the CP version. π·οΈdevice_sleepβ the device sleep state. π΄run_state_workerβ a pointer to the worker component for device setup operations to be called when the modem reaches RUN state. π οΈev_irq_pendingβ0means inform the IPC tasklet to process the irq actions. π¨flagβ a flag to monitor the state of the driver. π©td_update_timer_suspendedβ if true, then the td update timer is suspended. βΈοΈev_mux_net_transmit_pendingβ0means inform the IPC tasklet to pass. π¬reset_det_nβ the reset detect flag. πpcie_wake_nβ the PCIe wake flag. βοΈdebugfs_wwan_dirβ the WWAN Debug FS directory entry. πdebugfs_dirβ the Debug FS directory for driver-specific entries. π
π SEE ALSO π
Kernel file ./drivers/net/wwan/iosm/iosm_ipc_imem.h, plus enum ipc_ctype(9), struct ipc_pipe(9), struct ipc_mem_channel(9), enum ipc_phase(9), ipc_imem_init(9), ipc_imem_pm_s2idle_sleep(9), ipc_imem_pm_suspend(9), ipc_imem_pm_resume(9), ipc_imem_cleanup(9), ipc_imem_irq_process(9), imem_get_device_sleep_state(9), ipc_imem_td_update_timer_suspend(9), ipc_imem_channel_close(9), ipc_imem_channel_alloc(9), ipc_imem_channel_open(9), ipc_imem_td_update_timer_start(9), ipc_imem_ul_write_td(9), ipc_imem_ul_send(9), ipc_imem_channel_update(9), ipc_imem_channel_free(9), ipc_imem_hrtimer_stop(9), ipc_imem_pipe_cleanup(9), ipc_imem_pipe_close(9), ipc_imem_phase_update(9), ipc_imem_phase_get_string(9), ipc_imem_msg_send_feature_set(9), ipc_imem_ipc_init_check(9), ipc_imem_channel_init(9), and ipc_imem_devlink_trigger_chip_info(9) π¦
mwah π this cutie came from ./drivers/net/wwan/iosm, dated October 2026, and it's the struct iosm_imem(9) manual page. byeee π«Άπ
π¦ 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