Lines Matching full:ab
1507 static int ath11k_qmi_host_cap_send(struct ath11k_base *ab) in ath11k_qmi_host_cap_send() argument
1519 req.mem_cfg_mode = ab->qmi.target_mem_mode; in ath11k_qmi_host_cap_send()
1524 if (ab->bus_params.m3_fw_support) { in ath11k_qmi_host_cap_send()
1537 req.cal_done = ab->qmi.cal_done; in ath11k_qmi_host_cap_send()
1539 if (ab->hw_params.internal_sleep_clock) { in ath11k_qmi_host_cap_send()
1553 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_host_cap_send()
1558 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_host_cap_send()
1563 ath11k_warn(ab, "Failed to send host capability request,err = %d\n", ret); in ath11k_qmi_host_cap_send()
1572 ath11k_warn(ab, "Host capability request failed, result: %d, err: %d\n", in ath11k_qmi_host_cap_send()
1582 static int ath11k_qmi_fw_ind_register_send(struct ath11k_base *ab) in ath11k_qmi_fw_ind_register_send() argument
1586 struct qmi_handle *handle = &ab->qmi.handle; in ath11k_qmi_fw_ind_register_send()
1619 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_fw_ind_register_send()
1624 ath11k_warn(ab, "Failed to send indication register request, err = %d\n", in ath11k_qmi_fw_ind_register_send()
1631 ath11k_warn(ab, "failed to register fw indication %d\n", ret); in ath11k_qmi_fw_ind_register_send()
1636 ath11k_warn(ab, "FW Ind register request failed, result: %d, err: %d\n", in ath11k_qmi_fw_ind_register_send()
1649 static int ath11k_qmi_respond_fw_mem_request(struct ath11k_base *ab) in ath11k_qmi_respond_fw_mem_request() argument
1667 if (!ab->bus_params.fixed_mem_region && ab->qmi.mem_seg_count <= 2) { in ath11k_qmi_respond_fw_mem_request()
1668 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi delays mem_request %d\n", in ath11k_qmi_respond_fw_mem_request()
1669 ab->qmi.mem_seg_count); in ath11k_qmi_respond_fw_mem_request()
1672 req->mem_seg_len = ab->qmi.mem_seg_count; in ath11k_qmi_respond_fw_mem_request()
1675 req->mem_seg[i].addr = ab->qmi.target_mem[i].paddr; in ath11k_qmi_respond_fw_mem_request()
1676 req->mem_seg[i].size = ab->qmi.target_mem[i].size; in ath11k_qmi_respond_fw_mem_request()
1677 req->mem_seg[i].type = ab->qmi.target_mem[i].type; in ath11k_qmi_respond_fw_mem_request()
1681 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_respond_fw_mem_request()
1686 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_respond_fw_mem_request()
1691 ath11k_warn(ab, "qmi failed to respond memory request, err = %d\n", in ath11k_qmi_respond_fw_mem_request()
1698 ath11k_warn(ab, "qmi failed memory request, err = %d\n", ret); in ath11k_qmi_respond_fw_mem_request()
1703 ath11k_warn(ab, "Respond mem req failed, result: %d, err: %d\n", in ath11k_qmi_respond_fw_mem_request()
1713 static void ath11k_qmi_free_target_mem_chunk(struct ath11k_base *ab) in ath11k_qmi_free_target_mem_chunk() argument
1717 if (ab->bus_params.fixed_mem_region) in ath11k_qmi_free_target_mem_chunk()
1720 for (i = 0; i < ab->qmi.mem_seg_count; i++) { in ath11k_qmi_free_target_mem_chunk()
1721 if (!ab->qmi.target_mem[i].vaddr) in ath11k_qmi_free_target_mem_chunk()
1724 dma_free_coherent(ab->dev, in ath11k_qmi_free_target_mem_chunk()
1725 ab->qmi.target_mem[i].size, in ath11k_qmi_free_target_mem_chunk()
1726 ab->qmi.target_mem[i].vaddr, in ath11k_qmi_free_target_mem_chunk()
1727 ab->qmi.target_mem[i].paddr); in ath11k_qmi_free_target_mem_chunk()
1728 ab->qmi.target_mem[i].vaddr = NULL; in ath11k_qmi_free_target_mem_chunk()
1732 static int ath11k_qmi_alloc_target_mem_chunk(struct ath11k_base *ab) in ath11k_qmi_alloc_target_mem_chunk() argument
1737 for (i = 0; i < ab->qmi.mem_seg_count; i++) { in ath11k_qmi_alloc_target_mem_chunk()
1738 chunk = &ab->qmi.target_mem[i]; in ath11k_qmi_alloc_target_mem_chunk()
1739 chunk->vaddr = dma_alloc_coherent(ab->dev, in ath11k_qmi_alloc_target_mem_chunk()
1744 ath11k_err(ab, "failed to alloc memory, size: 0x%x, type: %u\n", in ath11k_qmi_alloc_target_mem_chunk()
1754 static int ath11k_qmi_assign_target_mem_chunk(struct ath11k_base *ab) in ath11k_qmi_assign_target_mem_chunk() argument
1758 for (i = 0, idx = 0; i < ab->qmi.mem_seg_count; i++) { in ath11k_qmi_assign_target_mem_chunk()
1759 switch (ab->qmi.target_mem[i].type) { in ath11k_qmi_assign_target_mem_chunk()
1761 ab->qmi.target_mem[idx].paddr = ab->hw_params.bdf_addr; in ath11k_qmi_assign_target_mem_chunk()
1762 ab->qmi.target_mem[idx].vaddr = NULL; in ath11k_qmi_assign_target_mem_chunk()
1763 ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size; in ath11k_qmi_assign_target_mem_chunk()
1764 ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type; in ath11k_qmi_assign_target_mem_chunk()
1768 if (ab->qmi.target_mem[i].size > ATH11K_QMI_CALDB_SIZE) { in ath11k_qmi_assign_target_mem_chunk()
1769 ath11k_warn(ab, "qmi mem size is low to load caldata\n"); in ath11k_qmi_assign_target_mem_chunk()
1773 ab->qmi.target_mem[idx].paddr = 0; in ath11k_qmi_assign_target_mem_chunk()
1774 ab->qmi.target_mem[idx].vaddr = NULL; in ath11k_qmi_assign_target_mem_chunk()
1775 ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size; in ath11k_qmi_assign_target_mem_chunk()
1776 ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type; in ath11k_qmi_assign_target_mem_chunk()
1780 ath11k_warn(ab, "qmi ignore invalid mem req type %d\n", in ath11k_qmi_assign_target_mem_chunk()
1781 ab->qmi.target_mem[i].type); in ath11k_qmi_assign_target_mem_chunk()
1785 ab->qmi.mem_seg_count = idx; in ath11k_qmi_assign_target_mem_chunk()
1790 static int ath11k_qmi_request_target_cap(struct ath11k_base *ab) in ath11k_qmi_request_target_cap() argument
1800 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_request_target_cap()
1805 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_request_target_cap()
1810 ath11k_warn(ab, "qmi failed to send target cap request, err = %d\n", in ath11k_qmi_request_target_cap()
1817 ath11k_warn(ab, "qmi failed target cap request %d\n", ret); in ath11k_qmi_request_target_cap()
1822 ath11k_warn(ab, "qmi targetcap req failed, result: %d, err: %d\n", in ath11k_qmi_request_target_cap()
1829 ab->qmi.target.chip_id = resp.chip_info.chip_id; in ath11k_qmi_request_target_cap()
1830 ab->qmi.target.chip_family = resp.chip_info.chip_family; in ath11k_qmi_request_target_cap()
1834 ab->qmi.target.board_id = resp.board_info.board_id; in ath11k_qmi_request_target_cap()
1836 ab->qmi.target.board_id = 0xFF; in ath11k_qmi_request_target_cap()
1839 ab->qmi.target.soc_id = resp.soc_info.soc_id; in ath11k_qmi_request_target_cap()
1842 ab->qmi.target.fw_version = resp.fw_version_info.fw_version; in ath11k_qmi_request_target_cap()
1843 strlcpy(ab->qmi.target.fw_build_timestamp, in ath11k_qmi_request_target_cap()
1845 sizeof(ab->qmi.target.fw_build_timestamp)); in ath11k_qmi_request_target_cap()
1849 strlcpy(ab->qmi.target.fw_build_id, resp.fw_build_id, in ath11k_qmi_request_target_cap()
1850 sizeof(ab->qmi.target.fw_build_id)); in ath11k_qmi_request_target_cap()
1852 ath11k_info(ab, "chip_id 0x%x chip_family 0x%x board_id 0x%x soc_id 0x%x\n", in ath11k_qmi_request_target_cap()
1853 ab->qmi.target.chip_id, ab->qmi.target.chip_family, in ath11k_qmi_request_target_cap()
1854 ab->qmi.target.board_id, ab->qmi.target.soc_id); in ath11k_qmi_request_target_cap()
1856 ath11k_info(ab, "fw_version 0x%x fw_build_timestamp %s fw_build_id %s", in ath11k_qmi_request_target_cap()
1857 ab->qmi.target.fw_version, in ath11k_qmi_request_target_cap()
1858 ab->qmi.target.fw_build_timestamp, in ath11k_qmi_request_target_cap()
1859 ab->qmi.target.fw_build_id); in ath11k_qmi_request_target_cap()
1866 ath11k_qmi_prepare_bdf_download(struct ath11k_base *ab, int type, in ath11k_qmi_prepare_bdf_download() argument
1879 ret = ath11k_core_fetch_bdf(ab, &bd); in ath11k_qmi_prepare_bdf_download()
1881 ath11k_warn(ab, "qmi failed to load BDF\n"); in ath11k_qmi_prepare_bdf_download()
1885 fw_size = min_t(u32, ab->hw_params.fw.board_size, bd.len); in ath11k_qmi_prepare_bdf_download()
1887 ath11k_core_free_bdf(ab, &bd); in ath11k_qmi_prepare_bdf_download()
1890 fw_entry = ath11k_core_firmware_request(ab, ATH11K_DEFAULT_CAL_FILE); in ath11k_qmi_prepare_bdf_download()
1893 ath11k_warn(ab, "failed to load %s: %d\n", in ath11k_qmi_prepare_bdf_download()
1898 fw_size = min_t(u32, ab->hw_params.fw.board_size, in ath11k_qmi_prepare_bdf_download()
1914 static int ath11k_qmi_load_bdf_fixed_addr(struct ath11k_base *ab) in ath11k_qmi_load_bdf_fixed_addr() argument
1927 bdf_addr = ioremap(ab->hw_params.bdf_addr, ATH11K_QMI_BDF_MAX_SIZE); in ath11k_qmi_load_bdf_fixed_addr()
1929 ath11k_warn(ab, "qmi ioremap error for BDF\n"); in ath11k_qmi_load_bdf_fixed_addr()
1937 req->file_id = ab->qmi.target.board_id; in ath11k_qmi_load_bdf_fixed_addr()
1948 ret = ath11k_qmi_prepare_bdf_download(ab, type, req, bdf_addr); in ath11k_qmi_load_bdf_fixed_addr()
1952 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_load_bdf_fixed_addr()
1958 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_load_bdf_fixed_addr()
1972 ath11k_warn(ab, "qmi BDF download failed, result: %d, err: %d\n", in ath11k_qmi_load_bdf_fixed_addr()
1986 static int ath11k_qmi_load_bdf_qmi(struct ath11k_base *ab) in ath11k_qmi_load_bdf_qmi() argument
2003 ret = ath11k_core_fetch_bdf(ab, &bd); in ath11k_qmi_load_bdf_qmi()
2005 ath11k_warn(ab, "qmi failed to load bdf:\n"); in ath11k_qmi_load_bdf_qmi()
2017 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi bdf_type %d\n", bdf_type); in ath11k_qmi_load_bdf_qmi()
2022 req->file_id = ab->qmi.target.board_id; in ath11k_qmi_load_bdf_qmi()
2042 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_load_bdf_qmi()
2048 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_load_bdf_qmi()
2062 ath11k_warn(ab, "qmi BDF download failed, result: %d, err: %d\n", in ath11k_qmi_load_bdf_qmi()
2073 ath11k_core_free_bdf(ab, &bd); in ath11k_qmi_load_bdf_qmi()
2080 static int ath11k_qmi_m3_load(struct ath11k_base *ab) in ath11k_qmi_m3_load() argument
2082 struct m3_mem_region *m3_mem = &ab->qmi.m3_mem; in ath11k_qmi_m3_load()
2090 fw = ath11k_core_firmware_request(ab, ATH11K_M3_FILE); in ath11k_qmi_m3_load()
2093 ath11k_core_create_firmware_path(ab, ATH11K_M3_FILE, in ath11k_qmi_m3_load()
2095 ath11k_err(ab, "failed to load %s: %d\n", path, ret); in ath11k_qmi_m3_load()
2099 m3_mem->vaddr = dma_alloc_coherent(ab->dev, in ath11k_qmi_m3_load()
2103 ath11k_err(ab, "failed to allocate memory for M3 with size %zu\n", in ath11k_qmi_m3_load()
2116 static void ath11k_qmi_m3_free(struct ath11k_base *ab) in ath11k_qmi_m3_free() argument
2118 struct m3_mem_region *m3_mem = &ab->qmi.m3_mem; in ath11k_qmi_m3_free()
2120 if (!ab->bus_params.m3_fw_support || !m3_mem->vaddr) in ath11k_qmi_m3_free()
2123 dma_free_coherent(ab->dev, m3_mem->size, in ath11k_qmi_m3_free()
2128 static int ath11k_qmi_wlanfw_m3_info_send(struct ath11k_base *ab) in ath11k_qmi_wlanfw_m3_info_send() argument
2130 struct m3_mem_region *m3_mem = &ab->qmi.m3_mem; in ath11k_qmi_wlanfw_m3_info_send()
2139 if (ab->bus_params.m3_fw_support) { in ath11k_qmi_wlanfw_m3_info_send()
2140 ret = ath11k_qmi_m3_load(ab); in ath11k_qmi_wlanfw_m3_info_send()
2142 ath11k_err(ab, "failed to load m3 firmware: %d", ret); in ath11k_qmi_wlanfw_m3_info_send()
2153 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_wlanfw_m3_info_send()
2158 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_wlanfw_m3_info_send()
2163 ath11k_warn(ab, "qmi failed to send M3 information request, err = %d\n", in ath11k_qmi_wlanfw_m3_info_send()
2170 ath11k_warn(ab, "qmi failed M3 information request %d\n", ret); in ath11k_qmi_wlanfw_m3_info_send()
2175 ath11k_warn(ab, "qmi M3 info request failed, result: %d, err: %d\n", in ath11k_qmi_wlanfw_m3_info_send()
2184 static int ath11k_qmi_wlanfw_mode_send(struct ath11k_base *ab, in ath11k_qmi_wlanfw_mode_send() argument
2199 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_wlanfw_mode_send()
2204 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_wlanfw_mode_send()
2209 ath11k_warn(ab, "qmi failed to send mode request, mode: %d, err = %d\n", in ath11k_qmi_wlanfw_mode_send()
2217 ath11k_warn(ab, "WLFW service is dis-connected\n"); in ath11k_qmi_wlanfw_mode_send()
2220 ath11k_warn(ab, "qmi failed set mode request, mode: %d, err = %d\n", in ath11k_qmi_wlanfw_mode_send()
2226 ath11k_warn(ab, "Mode request failed, mode: %d, result: %d err: %d\n", in ath11k_qmi_wlanfw_mode_send()
2236 static int ath11k_qmi_wlanfw_wlan_cfg_send(struct ath11k_base *ab) in ath11k_qmi_wlanfw_wlan_cfg_send() argument
2245 ce_cfg = (struct ce_pipe_config *)ab->qmi.ce_cfg.tgt_ce; in ath11k_qmi_wlanfw_wlan_cfg_send()
2246 svc_cfg = (struct service_to_pipe *)ab->qmi.ce_cfg.svc_to_ce_map; in ath11k_qmi_wlanfw_wlan_cfg_send()
2260 req->tgt_cfg_len = ab->qmi.ce_cfg.tgt_ce_len; in ath11k_qmi_wlanfw_wlan_cfg_send()
2271 req->svc_cfg_len = ab->qmi.ce_cfg.svc_to_ce_map_len; in ath11k_qmi_wlanfw_wlan_cfg_send()
2280 if (ab->hw_params.supports_shadow_regs) { in ath11k_qmi_wlanfw_wlan_cfg_send()
2283 ab->qmi.ce_cfg.shadow_reg_v2_len, in ath11k_qmi_wlanfw_wlan_cfg_send()
2285 memcpy(&req->shadow_reg_v2, ab->qmi.ce_cfg.shadow_reg_v2, in ath11k_qmi_wlanfw_wlan_cfg_send()
2291 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_wlanfw_wlan_cfg_send()
2296 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_wlanfw_wlan_cfg_send()
2301 ath11k_warn(ab, "qmi failed to send wlan config request, err = %d\n", in ath11k_qmi_wlanfw_wlan_cfg_send()
2308 ath11k_warn(ab, "qmi failed wlan config request, err = %d\n", ret); in ath11k_qmi_wlanfw_wlan_cfg_send()
2313 ath11k_warn(ab, "qmi wlan config request failed, result: %d, err: %d\n", in ath11k_qmi_wlanfw_wlan_cfg_send()
2324 void ath11k_qmi_firmware_stop(struct ath11k_base *ab) in ath11k_qmi_firmware_stop() argument
2328 ret = ath11k_qmi_wlanfw_mode_send(ab, ATH11K_FIRMWARE_MODE_OFF); in ath11k_qmi_firmware_stop()
2330 ath11k_warn(ab, "qmi failed to send wlan mode off\n"); in ath11k_qmi_firmware_stop()
2335 int ath11k_qmi_firmware_start(struct ath11k_base *ab, in ath11k_qmi_firmware_start() argument
2340 ret = ath11k_qmi_wlanfw_wlan_cfg_send(ab); in ath11k_qmi_firmware_start()
2342 ath11k_warn(ab, "qmi failed to send wlan cfg:%d\n", ret); in ath11k_qmi_firmware_start()
2346 ret = ath11k_qmi_wlanfw_mode_send(ab, mode); in ath11k_qmi_firmware_start()
2348 ath11k_warn(ab, "qmi failed to send wlan fw mode:%d\n", ret); in ath11k_qmi_firmware_start()
2380 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_event_server_arrive() local
2383 ret = ath11k_qmi_fw_ind_register_send(ab); in ath11k_qmi_event_server_arrive()
2385 ath11k_warn(ab, "qmi failed to send FW indication QMI:%d\n", ret); in ath11k_qmi_event_server_arrive()
2389 ret = ath11k_qmi_host_cap_send(ab); in ath11k_qmi_event_server_arrive()
2391 ath11k_warn(ab, "qmi failed to send host cap QMI:%d\n", ret); in ath11k_qmi_event_server_arrive()
2398 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_event_mem_request() local
2401 ret = ath11k_qmi_respond_fw_mem_request(ab); in ath11k_qmi_event_mem_request()
2403 ath11k_warn(ab, "qmi failed to respond fw mem req:%d\n", ret); in ath11k_qmi_event_mem_request()
2410 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_event_load_bdf() local
2413 ret = ath11k_qmi_request_target_cap(ab); in ath11k_qmi_event_load_bdf()
2415 ath11k_warn(ab, "qmi failed to req target capabilities:%d\n", ret); in ath11k_qmi_event_load_bdf()
2419 if (ab->bus_params.fixed_bdf_addr) in ath11k_qmi_event_load_bdf()
2420 ret = ath11k_qmi_load_bdf_fixed_addr(ab); in ath11k_qmi_event_load_bdf()
2422 ret = ath11k_qmi_load_bdf_qmi(ab); in ath11k_qmi_event_load_bdf()
2424 ath11k_warn(ab, "qmi failed to load board data file:%d\n", ret); in ath11k_qmi_event_load_bdf()
2428 ret = ath11k_qmi_wlanfw_m3_info_send(ab); in ath11k_qmi_event_load_bdf()
2430 ath11k_warn(ab, "qmi failed to send m3 info req:%d\n", ret); in ath11k_qmi_event_load_bdf()
2441 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_mem_request_cb() local
2445 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi firmware request memory request\n"); in ath11k_qmi_msg_mem_request_cb()
2449 ath11k_warn(ab, "Invalid memory segment length: %u\n", in ath11k_qmi_msg_mem_request_cb()
2452 ab->qmi.mem_seg_count = msg->mem_seg_len; in ath11k_qmi_msg_mem_request_cb()
2455 ab->qmi.target_mem[i].type = msg->mem_seg[i].type; in ath11k_qmi_msg_mem_request_cb()
2456 ab->qmi.target_mem[i].size = msg->mem_seg[i].size; in ath11k_qmi_msg_mem_request_cb()
2457 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi mem seg type %d size %d\n", in ath11k_qmi_msg_mem_request_cb()
2461 if (ab->bus_params.fixed_mem_region) { in ath11k_qmi_msg_mem_request_cb()
2462 ret = ath11k_qmi_assign_target_mem_chunk(ab); in ath11k_qmi_msg_mem_request_cb()
2464 ath11k_warn(ab, "qmi failed to assign target memory: %d\n", in ath11k_qmi_msg_mem_request_cb()
2469 ret = ath11k_qmi_alloc_target_mem_chunk(ab); in ath11k_qmi_msg_mem_request_cb()
2471 ath11k_warn(ab, "qmi failed to alloc target memory: %d\n", in ath11k_qmi_msg_mem_request_cb()
2486 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_mem_ready_cb() local
2488 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi firmware memory ready indication\n"); in ath11k_qmi_msg_mem_ready_cb()
2498 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_fw_ready_cb() local
2500 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi firmware ready\n"); in ath11k_qmi_msg_fw_ready_cb()
2547 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_ops_new_server() local
2558 ath11k_warn(ab, "qmi failed to connect to remote service %d\n", ret); in ath11k_qmi_ops_new_server()
2562 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi wifi fw qmi service connected\n"); in ath11k_qmi_ops_new_server()
2572 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_ops_del_server() local
2574 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi wifi fw del server\n"); in ath11k_qmi_ops_del_server()
2588 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_driver_event_work() local
2597 if (test_bit(ATH11K_FLAG_UNREGISTERING, &ab->dev_flags)) in ath11k_qmi_driver_event_work()
2605 set_bit(ATH11K_FLAG_CRASH_FLUSH, &ab->dev_flags); in ath11k_qmi_driver_event_work()
2606 set_bit(ATH11K_FLAG_RECOVERY, &ab->dev_flags); in ath11k_qmi_driver_event_work()
2615 if (test_bit(ATH11K_FLAG_REGISTERED, &ab->dev_flags)) { in ath11k_qmi_driver_event_work()
2616 ath11k_hal_dump_srng_stats(ab); in ath11k_qmi_driver_event_work()
2617 queue_work(ab->workqueue, &ab->restart_work); in ath11k_qmi_driver_event_work()
2621 ath11k_core_qmi_firmware_ready(ab); in ath11k_qmi_driver_event_work()
2622 ab->qmi.cal_done = 1; in ath11k_qmi_driver_event_work()
2623 set_bit(ATH11K_FLAG_REGISTERED, &ab->dev_flags); in ath11k_qmi_driver_event_work()
2629 ath11k_warn(ab, "invalid event type: %d", event->type); in ath11k_qmi_driver_event_work()
2638 int ath11k_qmi_init_service(struct ath11k_base *ab) in ath11k_qmi_init_service() argument
2642 memset(&ab->qmi.target, 0, sizeof(struct target_info)); in ath11k_qmi_init_service()
2643 memset(&ab->qmi.target_mem, 0, sizeof(struct target_mem_chunk)); in ath11k_qmi_init_service()
2644 ab->qmi.ab = ab; in ath11k_qmi_init_service()
2646 ab->qmi.target_mem_mode = ATH11K_QMI_TARGET_MEM_MODE_DEFAULT; in ath11k_qmi_init_service()
2647 ret = qmi_handle_init(&ab->qmi.handle, ATH11K_QMI_RESP_LEN_MAX, in ath11k_qmi_init_service()
2650 ath11k_warn(ab, "failed to initialize qmi handle\n"); in ath11k_qmi_init_service()
2654 ab->qmi.event_wq = alloc_workqueue("ath11k_qmi_driver_event", in ath11k_qmi_init_service()
2656 if (!ab->qmi.event_wq) { in ath11k_qmi_init_service()
2657 ath11k_err(ab, "failed to allocate workqueue\n"); in ath11k_qmi_init_service()
2661 INIT_LIST_HEAD(&ab->qmi.event_list); in ath11k_qmi_init_service()
2662 spin_lock_init(&ab->qmi.event_lock); in ath11k_qmi_init_service()
2663 INIT_WORK(&ab->qmi.event_work, ath11k_qmi_driver_event_work); in ath11k_qmi_init_service()
2665 ret = qmi_add_lookup(&ab->qmi.handle, ATH11K_QMI_WLFW_SERVICE_ID_V01, in ath11k_qmi_init_service()
2667 ab->qmi.service_ins_id); in ath11k_qmi_init_service()
2669 ath11k_warn(ab, "failed to add qmi lookup\n"); in ath11k_qmi_init_service()
2670 destroy_workqueue(ab->qmi.event_wq); in ath11k_qmi_init_service()
2677 void ath11k_qmi_deinit_service(struct ath11k_base *ab) in ath11k_qmi_deinit_service() argument
2679 qmi_handle_release(&ab->qmi.handle); in ath11k_qmi_deinit_service()
2680 cancel_work_sync(&ab->qmi.event_work); in ath11k_qmi_deinit_service()
2681 destroy_workqueue(ab->qmi.event_wq); in ath11k_qmi_deinit_service()
2682 ath11k_qmi_m3_free(ab); in ath11k_qmi_deinit_service()
2683 ath11k_qmi_free_target_mem_chunk(ab); in ath11k_qmi_deinit_service()