Lines Matching refs:qmi

1733 	req.mem_cfg_mode = ab->qmi.target_mem_mode;  in ath11k_qmi_host_cap_send()
1751 req.cal_done = ab->qmi.cal_done; in ath11k_qmi_host_cap_send()
1774 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_host_cap_send()
1779 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_host_cap_send()
1808 struct qmi_handle *handle = &ab->qmi.handle; in ath11k_qmi_fw_ind_register_send()
1852 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_fw_ind_register_send()
1904 ab->qmi.target_mem_delayed) { in ath11k_qmi_respond_fw_mem_request()
1907 ab->qmi.mem_seg_count); in ath11k_qmi_respond_fw_mem_request()
1911 req->mem_seg_len = ab->qmi.mem_seg_count; in ath11k_qmi_respond_fw_mem_request()
1914 req->mem_seg[i].addr = ab->qmi.target_mem[i].paddr; in ath11k_qmi_respond_fw_mem_request()
1915 req->mem_seg[i].size = ab->qmi.target_mem[i].size; in ath11k_qmi_respond_fw_mem_request()
1916 req->mem_seg[i].type = ab->qmi.target_mem[i].type; in ath11k_qmi_respond_fw_mem_request()
1919 &ab->qmi.target_mem[i].paddr, in ath11k_qmi_respond_fw_mem_request()
1920 ab->qmi.target_mem[i].size, in ath11k_qmi_respond_fw_mem_request()
1921 ab->qmi.target_mem[i].type); in ath11k_qmi_respond_fw_mem_request()
1925 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_respond_fw_mem_request()
1933 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_respond_fw_mem_request()
1971 for (i = 0; i < ab->qmi.mem_seg_count; i++) { in ath11k_qmi_free_target_mem_chunk()
1974 ab->qmi.target_mem[i].iaddr) in ath11k_qmi_free_target_mem_chunk()
1975 iounmap(ab->qmi.target_mem[i].iaddr); in ath11k_qmi_free_target_mem_chunk()
1977 if (!ab->qmi.target_mem[i].vaddr) in ath11k_qmi_free_target_mem_chunk()
1981 ab->qmi.target_mem[i].prev_size, in ath11k_qmi_free_target_mem_chunk()
1982 ab->qmi.target_mem[i].vaddr, in ath11k_qmi_free_target_mem_chunk()
1983 ab->qmi.target_mem[i].paddr); in ath11k_qmi_free_target_mem_chunk()
1984 ab->qmi.target_mem[i].vaddr = NULL; in ath11k_qmi_free_target_mem_chunk()
1993 ab->qmi.target_mem_delayed = false; in ath11k_qmi_alloc_target_mem_chunk()
1995 for (i = 0; i < ab->qmi.mem_seg_count; i++) { in ath11k_qmi_alloc_target_mem_chunk()
1996 chunk = &ab->qmi.target_mem[i]; in ath11k_qmi_alloc_target_mem_chunk()
2017 if (ab->qmi.mem_seg_count <= ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT) { in ath11k_qmi_alloc_target_mem_chunk()
2023 ab->qmi.target_mem_delayed = true; in ath11k_qmi_alloc_target_mem_chunk()
2051 for (i = 0, idx = 0; i < ab->qmi.mem_seg_count; i++) { in ath11k_qmi_assign_target_mem_chunk()
2052 switch (ab->qmi.target_mem[i].type) { in ath11k_qmi_assign_target_mem_chunk()
2070 if (res.end - res.start + 1 < ab->qmi.target_mem[i].size) { in ath11k_qmi_assign_target_mem_chunk()
2076 ab->qmi.target_mem[idx].paddr = res.start; in ath11k_qmi_assign_target_mem_chunk()
2077 ab->qmi.target_mem[idx].iaddr = in ath11k_qmi_assign_target_mem_chunk()
2078 ioremap(ab->qmi.target_mem[idx].paddr, in ath11k_qmi_assign_target_mem_chunk()
2079 ab->qmi.target_mem[i].size); in ath11k_qmi_assign_target_mem_chunk()
2080 if (!ab->qmi.target_mem[idx].iaddr) in ath11k_qmi_assign_target_mem_chunk()
2083 ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size; in ath11k_qmi_assign_target_mem_chunk()
2084 host_ddr_sz = ab->qmi.target_mem[i].size; in ath11k_qmi_assign_target_mem_chunk()
2085 ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type; in ath11k_qmi_assign_target_mem_chunk()
2090 ab->qmi.target_mem[idx].paddr = ab->hw_params.bdf_addr; in ath11k_qmi_assign_target_mem_chunk()
2091 ab->qmi.target_mem[idx].vaddr = NULL; in ath11k_qmi_assign_target_mem_chunk()
2092 ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size; in ath11k_qmi_assign_target_mem_chunk()
2093 ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type; in ath11k_qmi_assign_target_mem_chunk()
2098 if (ab->qmi.target_mem[i].size > ATH11K_QMI_CALDB_SIZE) { in ath11k_qmi_assign_target_mem_chunk()
2105 ab->qmi.target_mem[idx].paddr = in ath11k_qmi_assign_target_mem_chunk()
2107 ab->qmi.target_mem[idx].iaddr = in ath11k_qmi_assign_target_mem_chunk()
2108 ioremap(ab->qmi.target_mem[idx].paddr, in ath11k_qmi_assign_target_mem_chunk()
2109 ab->qmi.target_mem[i].size); in ath11k_qmi_assign_target_mem_chunk()
2110 if (!ab->qmi.target_mem[idx].iaddr) in ath11k_qmi_assign_target_mem_chunk()
2113 ab->qmi.target_mem[idx].paddr = in ath11k_qmi_assign_target_mem_chunk()
2117 ab->qmi.target_mem[idx].paddr = 0; in ath11k_qmi_assign_target_mem_chunk()
2118 ab->qmi.target_mem[idx].vaddr = NULL; in ath11k_qmi_assign_target_mem_chunk()
2120 ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size; in ath11k_qmi_assign_target_mem_chunk()
2121 ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type; in ath11k_qmi_assign_target_mem_chunk()
2127 ab->qmi.target_mem[i].type); in ath11k_qmi_assign_target_mem_chunk()
2131 ab->qmi.mem_seg_count = idx; in ath11k_qmi_assign_target_mem_chunk()
2148 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_request_device_info()
2153 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_request_device_info()
2228 ret = qmi_txn_init(&ab->qmi.handle, &txn, qmi_wlanfw_cap_resp_msg_v01_ei, in ath11k_qmi_request_target_cap()
2235 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_request_target_cap()
2260 ab->qmi.target.chip_id = resp.chip_info.chip_id; in ath11k_qmi_request_target_cap()
2261 ab->qmi.target.chip_family = resp.chip_info.chip_family; in ath11k_qmi_request_target_cap()
2265 ab->qmi.target.board_id = resp.board_info.board_id; in ath11k_qmi_request_target_cap()
2267 ab->qmi.target.board_id = 0xFF; in ath11k_qmi_request_target_cap()
2270 ab->qmi.target.soc_id = resp.soc_info.soc_id; in ath11k_qmi_request_target_cap()
2273 ab->qmi.target.fw_version = resp.fw_version_info.fw_version; in ath11k_qmi_request_target_cap()
2274 strscpy(ab->qmi.target.fw_build_timestamp, in ath11k_qmi_request_target_cap()
2276 sizeof(ab->qmi.target.fw_build_timestamp)); in ath11k_qmi_request_target_cap()
2280 strscpy(ab->qmi.target.fw_build_id, resp.fw_build_id, in ath11k_qmi_request_target_cap()
2281 sizeof(ab->qmi.target.fw_build_id)); in ath11k_qmi_request_target_cap()
2284 ab->qmi.target.eeprom_caldata = in ath11k_qmi_request_target_cap()
2289 fw_build_id = ab->qmi.target.fw_build_id; in ath11k_qmi_request_target_cap()
2295 ab->qmi.target.chip_id, ab->qmi.target.chip_family, in ath11k_qmi_request_target_cap()
2296 ab->qmi.target.board_id, ab->qmi.target.soc_id); in ath11k_qmi_request_target_cap()
2299 ab->qmi.target.fw_version, in ath11k_qmi_request_target_cap()
2300 ab->qmi.target.fw_build_timestamp, in ath11k_qmi_request_target_cap()
2348 req->file_id = ab->qmi.target.board_id; in ath11k_qmi_load_file_target_mem()
2381 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_load_file_target_mem()
2390 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_load_file_target_mem()
2480 if (ab->qmi.target.eeprom_caldata) { in ath11k_qmi_load_bdf_qmi()
2524 if (!ab->qmi.target.eeprom_caldata) in ath11k_qmi_load_bdf_qmi()
2535 struct m3_mem_region *m3_mem = &ab->qmi.m3_mem; in ath11k_qmi_m3_load()
2572 struct m3_mem_region *m3_mem = &ab->qmi.m3_mem; in ath11k_qmi_m3_free()
2585 struct m3_mem_region *m3_mem = &ab->qmi.m3_mem; in ath11k_qmi_wlanfw_m3_info_send()
2608 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_wlanfw_m3_info_send()
2615 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_wlanfw_m3_info_send()
2657 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_wlanfw_mode_send()
2664 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_wlanfw_mode_send()
2712 ce_cfg = (struct ce_pipe_config *)ab->qmi.ce_cfg.tgt_ce; in ath11k_qmi_wlanfw_wlan_cfg_send()
2713 svc_cfg = (struct service_to_pipe *)ab->qmi.ce_cfg.svc_to_ce_map; in ath11k_qmi_wlanfw_wlan_cfg_send()
2715 ce_cfg = (const struct ce_pipe_config *)ab->qmi.ce_cfg.tgt_ce; in ath11k_qmi_wlanfw_wlan_cfg_send()
2716 svc_cfg = (const struct service_to_pipe *)ab->qmi.ce_cfg.svc_to_ce_map; in ath11k_qmi_wlanfw_wlan_cfg_send()
2731 req->tgt_cfg_len = ab->qmi.ce_cfg.tgt_ce_len; in ath11k_qmi_wlanfw_wlan_cfg_send()
2742 req->svc_cfg_len = ab->qmi.ce_cfg.svc_to_ce_map_len; in ath11k_qmi_wlanfw_wlan_cfg_send()
2754 ab->qmi.ce_cfg.shadow_reg_v2_len, in ath11k_qmi_wlanfw_wlan_cfg_send()
2756 memcpy(&req->shadow_reg_v2, ab->qmi.ce_cfg.shadow_reg_v2, in ath11k_qmi_wlanfw_wlan_cfg_send()
2762 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_wlanfw_wlan_cfg_send()
2769 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_wlanfw_wlan_cfg_send()
2808 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_wlanfw_wlan_ini_send()
2813 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_wlanfw_wlan_ini_send()
2893 timeout = wait_event_timeout(ab->qmi.cold_boot_waitq, in ath11k_qmi_fwreset_from_cold_boot()
2894 (ab->qmi.cal_done == 1), in ath11k_qmi_fwreset_from_cold_boot()
2923 timeout = wait_event_timeout(ab->qmi.cold_boot_waitq, in ath11k_qmi_process_coldboot_calibration()
2924 (ab->qmi.cal_done == 1), in ath11k_qmi_process_coldboot_calibration()
2937 ath11k_qmi_driver_event_post(struct ath11k_qmi *qmi, in ath11k_qmi_driver_event_post() argument
2950 spin_lock(&qmi->event_lock); in ath11k_qmi_driver_event_post()
2951 list_add_tail(&event->list, &qmi->event_list); in ath11k_qmi_driver_event_post()
2952 spin_unlock(&qmi->event_lock); in ath11k_qmi_driver_event_post()
2954 queue_work(qmi->event_wq, &qmi->event_work); in ath11k_qmi_driver_event_post()
2959 static int ath11k_qmi_event_mem_request(struct ath11k_qmi *qmi) in ath11k_qmi_event_mem_request() argument
2961 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_event_mem_request()
2973 static int ath11k_qmi_event_load_bdf(struct ath11k_qmi *qmi) in ath11k_qmi_event_load_bdf() argument
2975 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_event_load_bdf()
3003 static int ath11k_qmi_event_server_arrive(struct ath11k_qmi *qmi) in ath11k_qmi_event_server_arrive() argument
3005 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_event_server_arrive()
3024 ret = ath11k_qmi_event_load_bdf(qmi); in ath11k_qmi_event_server_arrive()
3038 struct ath11k_qmi *qmi = container_of(qmi_hdl, struct ath11k_qmi, handle); in ath11k_qmi_msg_mem_request_cb() local
3039 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_mem_request_cb()
3050 ab->qmi.mem_seg_count = msg->mem_seg_len; in ath11k_qmi_msg_mem_request_cb()
3052 for (i = 0; i < qmi->mem_seg_count ; i++) { in ath11k_qmi_msg_mem_request_cb()
3053 ab->qmi.target_mem[i].type = msg->mem_seg[i].type; in ath11k_qmi_msg_mem_request_cb()
3054 ab->qmi.target_mem[i].size = msg->mem_seg[i].size; in ath11k_qmi_msg_mem_request_cb()
3076 ath11k_qmi_driver_event_post(qmi, ATH11K_QMI_EVENT_REQUEST_MEM, NULL); in ath11k_qmi_msg_mem_request_cb()
3084 struct ath11k_qmi *qmi = container_of(qmi_hdl, struct ath11k_qmi, handle); in ath11k_qmi_msg_mem_ready_cb() local
3085 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_mem_ready_cb()
3088 ath11k_qmi_driver_event_post(qmi, ATH11K_QMI_EVENT_FW_MEM_READY, NULL); in ath11k_qmi_msg_mem_ready_cb()
3096 struct ath11k_qmi *qmi = container_of(qmi_hdl, struct ath11k_qmi, handle); in ath11k_qmi_msg_fw_ready_cb() local
3097 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_fw_ready_cb()
3101 if (!ab->qmi.cal_done) { in ath11k_qmi_msg_fw_ready_cb()
3102 ab->qmi.cal_done = 1; in ath11k_qmi_msg_fw_ready_cb()
3103 wake_up(&ab->qmi.cold_boot_waitq); in ath11k_qmi_msg_fw_ready_cb()
3106 ath11k_qmi_driver_event_post(qmi, ATH11K_QMI_EVENT_FW_READY, NULL); in ath11k_qmi_msg_fw_ready_cb()
3114 struct ath11k_qmi *qmi = container_of(qmi_hdl, in ath11k_qmi_msg_cold_boot_cal_done_cb() local
3116 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_cold_boot_cal_done_cb()
3118 ab->qmi.cal_done = 1; in ath11k_qmi_msg_cold_boot_cal_done_cb()
3119 wake_up(&ab->qmi.cold_boot_waitq); in ath11k_qmi_msg_cold_boot_cal_done_cb()
3128 struct ath11k_qmi *qmi = container_of(qmi_hdl, in ath11k_qmi_msg_fw_init_done_cb() local
3130 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_fw_init_done_cb()
3132 ath11k_qmi_driver_event_post(qmi, ATH11K_QMI_EVENT_FW_INIT_DONE, NULL); in ath11k_qmi_msg_fw_init_done_cb()
3182 struct ath11k_qmi *qmi = container_of(qmi_hdl, struct ath11k_qmi, handle); in ath11k_qmi_ops_new_server() local
3183 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_ops_new_server()
3184 struct sockaddr_qrtr *sq = &qmi->sq; in ath11k_qmi_ops_new_server()
3199 ath11k_qmi_driver_event_post(qmi, ATH11K_QMI_EVENT_SERVER_ARRIVE, NULL); in ath11k_qmi_ops_new_server()
3207 struct ath11k_qmi *qmi = container_of(qmi_hdl, struct ath11k_qmi, handle); in ath11k_qmi_ops_del_server() local
3208 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_ops_del_server()
3211 ath11k_qmi_driver_event_post(qmi, ATH11K_QMI_EVENT_SERVER_EXIT, NULL); in ath11k_qmi_ops_del_server()
3221 struct ath11k_qmi *qmi = container_of(work, struct ath11k_qmi, in ath11k_qmi_driver_event_work() local
3224 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_driver_event_work()
3227 spin_lock(&qmi->event_lock); in ath11k_qmi_driver_event_work()
3228 while (!list_empty(&qmi->event_list)) { in ath11k_qmi_driver_event_work()
3229 event = list_first_entry(&qmi->event_list, in ath11k_qmi_driver_event_work()
3232 spin_unlock(&qmi->event_lock); in ath11k_qmi_driver_event_work()
3241 ret = ath11k_qmi_event_server_arrive(qmi); in ath11k_qmi_driver_event_work()
3253 ret = ath11k_qmi_event_mem_request(qmi); in ath11k_qmi_driver_event_work()
3258 ret = ath11k_qmi_event_load_bdf(qmi); in ath11k_qmi_driver_event_work()
3280 if (ab->qmi.cal_done == 0 && in ath11k_qmi_driver_event_work()
3319 spin_lock(&qmi->event_lock); in ath11k_qmi_driver_event_work()
3321 spin_unlock(&qmi->event_lock); in ath11k_qmi_driver_event_work()
3328 memset(&ab->qmi.target, 0, sizeof(struct target_info)); in ath11k_qmi_init_service()
3329 memset(&ab->qmi.target_mem, 0, sizeof(struct target_mem_chunk)); in ath11k_qmi_init_service()
3330 ab->qmi.ab = ab; in ath11k_qmi_init_service()
3332 ab->qmi.target_mem_mode = ab->hw_params.fw_mem_mode; in ath11k_qmi_init_service()
3333 ret = qmi_handle_init(&ab->qmi.handle, ATH11K_QMI_RESP_LEN_MAX, in ath11k_qmi_init_service()
3340 ab->qmi.event_wq = alloc_ordered_workqueue("ath11k_qmi_driver_event", 0); in ath11k_qmi_init_service()
3341 if (!ab->qmi.event_wq) { in ath11k_qmi_init_service()
3346 INIT_LIST_HEAD(&ab->qmi.event_list); in ath11k_qmi_init_service()
3347 spin_lock_init(&ab->qmi.event_lock); in ath11k_qmi_init_service()
3348 INIT_WORK(&ab->qmi.event_work, ath11k_qmi_driver_event_work); in ath11k_qmi_init_service()
3350 ret = qmi_add_lookup(&ab->qmi.handle, ATH11K_QMI_WLFW_SERVICE_ID_V01, in ath11k_qmi_init_service()
3352 ab->qmi.service_ins_id); in ath11k_qmi_init_service()
3355 destroy_workqueue(ab->qmi.event_wq); in ath11k_qmi_init_service()
3364 qmi_handle_release(&ab->qmi.handle); in ath11k_qmi_deinit_service()
3365 cancel_work_sync(&ab->qmi.event_work); in ath11k_qmi_deinit_service()
3366 destroy_workqueue(ab->qmi.event_wq); in ath11k_qmi_deinit_service()