drivers/net/wireless/ath/ath12k/qmi.h
Source file repositories/reference/linux-study-clean/drivers/net/wireless/ath/ath12k/qmi.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/ath/ath12k/qmi.h- Extension
.h- Size
- 16845 bytes
- Lines
- 651
- Domain
- Driver Families
- Bucket
- drivers/net
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/mutex.hlinux/soc/qcom/qmi.h
Detected Declarations
struct ath12k_basestruct ath12k_hw_groupstruct ath12k_qmi_driver_eventstruct ath12k_qmi_ce_cfgstruct ath12k_qmi_event_msgstruct target_mem_chunkstruct target_infostruct m3_mem_regionstruct dev_mem_infostruct ath12k_qmistruct qmi_wlanfw_host_ddr_rangestruct wlfw_host_mlo_chip_info_s_v01struct qmi_wlanfw_host_cap_req_msg_v01struct qmi_wlanfw_host_cap_resp_msg_v01struct qmi_wlanfw_phy_cap_req_msg_v01struct qmi_wlanfw_phy_cap_resp_msg_v01struct qmi_wlanfw_ind_register_req_msg_v01struct qmi_wlanfw_ind_register_resp_msg_v01struct qmi_wlanfw_mem_cfg_s_v01struct qmi_wlanfw_mem_seg_s_v01struct qmi_wlanfw_request_mem_ind_msg_v01struct qmi_wlanfw_mem_seg_resp_s_v01struct qmi_wlanfw_respond_mem_req_msg_v01struct qmi_wlanfw_respond_mem_resp_msg_v01struct qmi_wlanfw_fw_mem_ready_ind_msg_v01struct qmi_wlanfw_fw_ready_ind_msg_v01struct qmi_wlanfw_ce_tgt_pipe_cfg_s_v01struct qmi_wlanfw_ce_svc_pipe_cfg_s_v01struct qmi_wlanfw_shadow_reg_cfg_s_v01struct qmi_wlanfw_shadow_reg_v3_cfg_s_v01struct qmi_wlanfw_memory_region_info_s_v01struct qmi_wlanfw_rf_chip_info_s_v01struct qmi_wlanfw_rf_board_info_s_v01struct qmi_wlanfw_soc_info_s_v01struct qmi_wlanfw_fw_version_info_s_v01struct qmi_wlanfw_dev_mem_info_s_v01struct qmi_wlanfw_cap_resp_msg_v01struct qmi_wlanfw_cap_req_msg_v01struct qmi_wlanfw_bdf_download_req_msg_v01struct qmi_wlanfw_bdf_download_resp_msg_v01struct qmi_wlanfw_m3_info_req_msg_v01struct qmi_wlanfw_m3_info_resp_msg_v01struct qmi_wlanfw_aux_uc_info_req_msg_v01struct qmi_wlanfw_aux_uc_info_resp_msg_v01struct qmi_wlanfw_wlan_mode_req_msg_v01struct qmi_wlanfw_wlan_mode_resp_msg_v01struct qmi_wlanfw_wlan_cfg_req_msg_v01struct qmi_wlanfw_wlan_cfg_resp_msg_v01
Annotated Snippet
struct ath12k_qmi_driver_event {
struct list_head list;
enum ath12k_qmi_event_type type;
void *data;
};
struct ath12k_qmi_ce_cfg {
const struct ce_pipe_config *tgt_ce;
int tgt_ce_len;
const struct service_to_pipe *svc_to_ce_map;
int svc_to_ce_map_len;
const u8 *shadow_reg;
int shadow_reg_len;
u32 *shadow_reg_v3;
int shadow_reg_v3_len;
};
struct ath12k_qmi_event_msg {
struct list_head list;
enum ath12k_qmi_event_type type;
};
struct target_mem_chunk {
u32 size;
u32 type;
u32 prev_size;
u32 prev_type;
dma_addr_t paddr;
union {
void __iomem *ioaddr;
void *addr;
} v;
};
struct target_info {
u32 chip_id;
u32 chip_family;
u32 board_id;
u32 soc_id;
u32 fw_version;
u32 eeprom_caldata;
char fw_build_timestamp[ATH12K_QMI_WLANFW_MAX_TIMESTAMP_LEN_V01 + 1];
char fw_build_id[ATH12K_QMI_WLANFW_MAX_BUILD_ID_LEN_V01 + 1];
char bdf_ext[ATH12K_QMI_BDF_EXT_STR_LENGTH];
};
struct m3_mem_region {
/* total memory allocated */
u32 total_size;
/* actual memory being used */
u32 size;
dma_addr_t paddr;
void *vaddr;
};
struct dev_mem_info {
u64 start;
u64 size;
};
struct ath12k_qmi {
struct ath12k_base *ab;
struct qmi_handle handle;
struct sockaddr_qrtr sq;
struct work_struct event_work;
struct workqueue_struct *event_wq;
struct list_head event_list;
spinlock_t event_lock; /* spinlock for qmi event list */
struct ath12k_qmi_ce_cfg ce_cfg;
struct target_mem_chunk target_mem[ATH12K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01];
u32 mem_seg_count;
u32 target_mem_mode;
bool target_mem_delayed;
u8 cal_done;
/* protected with struct ath12k_qmi::event_lock */
bool block_event;
u8 num_radios;
struct target_info target;
struct m3_mem_region m3_mem;
struct m3_mem_region aux_uc_mem;
unsigned int service_ins_id;
struct dev_mem_info dev_mem[ATH12K_QMI_WLFW_MAX_DEV_MEM_NUM_V01];
};
#define QMI_WLANFW_HOST_CAP_REQ_MSG_V01_MAX_LEN 261
#define QMI_WLANFW_HOST_CAP_REQ_V01 0x0034
#define QMI_WLANFW_HOST_CAP_RESP_MSG_V01_MAX_LEN 7
#define QMI_WLFW_HOST_CAP_RESP_V01 0x0034
Annotation
- Immediate include surface: `linux/mutex.h`, `linux/soc/qcom/qmi.h`.
- Detected declarations: `struct ath12k_base`, `struct ath12k_hw_group`, `struct ath12k_qmi_driver_event`, `struct ath12k_qmi_ce_cfg`, `struct ath12k_qmi_event_msg`, `struct target_mem_chunk`, `struct target_info`, `struct m3_mem_region`, `struct dev_mem_info`, `struct ath12k_qmi`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.