• Home
  • Raw
  • Download

Lines Matching refs:ab

1513 static int ath11k_qmi_host_cap_send(struct ath11k_base *ab)  in ath11k_qmi_host_cap_send()  argument
1525 req.mem_cfg_mode = ab->qmi.target_mem_mode; in ath11k_qmi_host_cap_send()
1530 if (ab->bus_params.m3_fw_support) { in ath11k_qmi_host_cap_send()
1543 req.cal_done = ab->qmi.cal_done; in ath11k_qmi_host_cap_send()
1545 if (ab->hw_params.internal_sleep_clock) { in ath11k_qmi_host_cap_send()
1559 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi host cap request\n"); in ath11k_qmi_host_cap_send()
1561 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_host_cap_send()
1566 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_host_cap_send()
1571 ath11k_warn(ab, "failed to send host capability request: %d\n", ret); in ath11k_qmi_host_cap_send()
1580 ath11k_warn(ab, "host capability request failed: %d %d\n", in ath11k_qmi_host_cap_send()
1590 static int ath11k_qmi_fw_ind_register_send(struct ath11k_base *ab) in ath11k_qmi_fw_ind_register_send() argument
1594 struct qmi_handle *handle = &ab->qmi.handle; in ath11k_qmi_fw_ind_register_send()
1629 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi indication register request\n"); in ath11k_qmi_fw_ind_register_send()
1631 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_fw_ind_register_send()
1636 ath11k_warn(ab, "failed to send indication register request: %d\n", in ath11k_qmi_fw_ind_register_send()
1643 ath11k_warn(ab, "failed to register fw indication: %d\n", ret); in ath11k_qmi_fw_ind_register_send()
1648 ath11k_warn(ab, "firmware indication register request failed: %d %d\n", in ath11k_qmi_fw_ind_register_send()
1661 static int ath11k_qmi_respond_fw_mem_request(struct ath11k_base *ab) in ath11k_qmi_respond_fw_mem_request() argument
1680 if (!ab->bus_params.fixed_mem_region && ab->qmi.target_mem_delayed) { in ath11k_qmi_respond_fw_mem_request()
1682 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi delays mem_request %d\n", in ath11k_qmi_respond_fw_mem_request()
1683 ab->qmi.mem_seg_count); in ath11k_qmi_respond_fw_mem_request()
1687 req->mem_seg_len = ab->qmi.mem_seg_count; in ath11k_qmi_respond_fw_mem_request()
1690 req->mem_seg[i].addr = ab->qmi.target_mem[i].paddr; in ath11k_qmi_respond_fw_mem_request()
1691 req->mem_seg[i].size = ab->qmi.target_mem[i].size; in ath11k_qmi_respond_fw_mem_request()
1692 req->mem_seg[i].type = ab->qmi.target_mem[i].type; in ath11k_qmi_respond_fw_mem_request()
1693 ath11k_dbg(ab, ATH11K_DBG_QMI, in ath11k_qmi_respond_fw_mem_request()
1695 &ab->qmi.target_mem[i].paddr, in ath11k_qmi_respond_fw_mem_request()
1696 ab->qmi.target_mem[i].size, in ath11k_qmi_respond_fw_mem_request()
1697 ab->qmi.target_mem[i].type); in ath11k_qmi_respond_fw_mem_request()
1701 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_respond_fw_mem_request()
1706 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi respond memory request delayed %i\n", in ath11k_qmi_respond_fw_mem_request()
1709 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_respond_fw_mem_request()
1714 ath11k_warn(ab, "failed to respond qmi memory request: %d\n", in ath11k_qmi_respond_fw_mem_request()
1721 ath11k_warn(ab, "failed to wait qmi memory request: %d\n", ret); in ath11k_qmi_respond_fw_mem_request()
1732 ath11k_warn(ab, "qmi respond memory request failed: %d %d\n", in ath11k_qmi_respond_fw_mem_request()
1742 static void ath11k_qmi_free_target_mem_chunk(struct ath11k_base *ab) in ath11k_qmi_free_target_mem_chunk() argument
1746 if (ab->bus_params.fixed_mem_region) in ath11k_qmi_free_target_mem_chunk()
1749 for (i = 0; i < ab->qmi.mem_seg_count; i++) { in ath11k_qmi_free_target_mem_chunk()
1750 if (!ab->qmi.target_mem[i].vaddr) in ath11k_qmi_free_target_mem_chunk()
1753 dma_free_coherent(ab->dev, in ath11k_qmi_free_target_mem_chunk()
1754 ab->qmi.target_mem[i].size, in ath11k_qmi_free_target_mem_chunk()
1755 ab->qmi.target_mem[i].vaddr, in ath11k_qmi_free_target_mem_chunk()
1756 ab->qmi.target_mem[i].paddr); in ath11k_qmi_free_target_mem_chunk()
1757 ab->qmi.target_mem[i].vaddr = NULL; in ath11k_qmi_free_target_mem_chunk()
1761 static int ath11k_qmi_alloc_target_mem_chunk(struct ath11k_base *ab) in ath11k_qmi_alloc_target_mem_chunk() argument
1766 ab->qmi.target_mem_delayed = false; in ath11k_qmi_alloc_target_mem_chunk()
1768 for (i = 0; i < ab->qmi.mem_seg_count; i++) { in ath11k_qmi_alloc_target_mem_chunk()
1769 chunk = &ab->qmi.target_mem[i]; in ath11k_qmi_alloc_target_mem_chunk()
1770 chunk->vaddr = dma_alloc_coherent(ab->dev, in ath11k_qmi_alloc_target_mem_chunk()
1775 if (ab->qmi.mem_seg_count <= ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT) { in ath11k_qmi_alloc_target_mem_chunk()
1776 ath11k_dbg(ab, ATH11K_DBG_QMI, in ath11k_qmi_alloc_target_mem_chunk()
1780 ath11k_qmi_free_target_mem_chunk(ab); in ath11k_qmi_alloc_target_mem_chunk()
1781 ab->qmi.target_mem_delayed = true; in ath11k_qmi_alloc_target_mem_chunk()
1785 ath11k_err(ab, "failed to allocate dma memory for qmi (%d B type %u)\n", in ath11k_qmi_alloc_target_mem_chunk()
1795 static int ath11k_qmi_assign_target_mem_chunk(struct ath11k_base *ab) in ath11k_qmi_assign_target_mem_chunk() argument
1799 for (i = 0, idx = 0; i < ab->qmi.mem_seg_count; i++) { in ath11k_qmi_assign_target_mem_chunk()
1800 switch (ab->qmi.target_mem[i].type) { in ath11k_qmi_assign_target_mem_chunk()
1802 ab->qmi.target_mem[idx].paddr = ab->hw_params.bdf_addr; in ath11k_qmi_assign_target_mem_chunk()
1803 ab->qmi.target_mem[idx].vaddr = NULL; in ath11k_qmi_assign_target_mem_chunk()
1804 ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size; in ath11k_qmi_assign_target_mem_chunk()
1805 ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type; in ath11k_qmi_assign_target_mem_chunk()
1809 if (ab->qmi.target_mem[i].size > ATH11K_QMI_CALDB_SIZE) { in ath11k_qmi_assign_target_mem_chunk()
1810 ath11k_warn(ab, "qmi mem size is low to load caldata\n"); in ath11k_qmi_assign_target_mem_chunk()
1814 if (ath11k_cold_boot_cal && ab->hw_params.cold_boot_calib) { in ath11k_qmi_assign_target_mem_chunk()
1815 ab->qmi.target_mem[idx].paddr = in ath11k_qmi_assign_target_mem_chunk()
1817 ab->qmi.target_mem[idx].vaddr = in ath11k_qmi_assign_target_mem_chunk()
1820 ab->qmi.target_mem[idx].paddr = 0; in ath11k_qmi_assign_target_mem_chunk()
1821 ab->qmi.target_mem[idx].vaddr = NULL; in ath11k_qmi_assign_target_mem_chunk()
1823 ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size; in ath11k_qmi_assign_target_mem_chunk()
1824 ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type; in ath11k_qmi_assign_target_mem_chunk()
1828 ath11k_warn(ab, "qmi ignore invalid mem req type %d\n", in ath11k_qmi_assign_target_mem_chunk()
1829 ab->qmi.target_mem[i].type); in ath11k_qmi_assign_target_mem_chunk()
1833 ab->qmi.mem_seg_count = idx; in ath11k_qmi_assign_target_mem_chunk()
1838 static int ath11k_qmi_request_target_cap(struct ath11k_base *ab) in ath11k_qmi_request_target_cap() argument
1849 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_request_target_cap()
1854 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi target cap request\n"); in ath11k_qmi_request_target_cap()
1856 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_request_target_cap()
1861 ath11k_warn(ab, "failed to send qmi cap request: %d\n", in ath11k_qmi_request_target_cap()
1868 ath11k_warn(ab, "failed to wait qmi cap request: %d\n", ret); in ath11k_qmi_request_target_cap()
1873 ath11k_warn(ab, "qmi cap request failed: %d %d\n", in ath11k_qmi_request_target_cap()
1880 ab->qmi.target.chip_id = resp.chip_info.chip_id; in ath11k_qmi_request_target_cap()
1881 ab->qmi.target.chip_family = resp.chip_info.chip_family; in ath11k_qmi_request_target_cap()
1885 ab->qmi.target.board_id = resp.board_info.board_id; in ath11k_qmi_request_target_cap()
1887 ab->qmi.target.board_id = 0xFF; in ath11k_qmi_request_target_cap()
1890 ab->qmi.target.soc_id = resp.soc_info.soc_id; in ath11k_qmi_request_target_cap()
1893 ab->qmi.target.fw_version = resp.fw_version_info.fw_version; in ath11k_qmi_request_target_cap()
1894 strlcpy(ab->qmi.target.fw_build_timestamp, in ath11k_qmi_request_target_cap()
1896 sizeof(ab->qmi.target.fw_build_timestamp)); in ath11k_qmi_request_target_cap()
1900 strlcpy(ab->qmi.target.fw_build_id, resp.fw_build_id, in ath11k_qmi_request_target_cap()
1901 sizeof(ab->qmi.target.fw_build_id)); in ath11k_qmi_request_target_cap()
1903 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()
1904 ab->qmi.target.chip_id, ab->qmi.target.chip_family, in ath11k_qmi_request_target_cap()
1905 ab->qmi.target.board_id, ab->qmi.target.soc_id); in ath11k_qmi_request_target_cap()
1907 ath11k_info(ab, "fw_version 0x%x fw_build_timestamp %s fw_build_id %s", in ath11k_qmi_request_target_cap()
1908 ab->qmi.target.fw_version, in ath11k_qmi_request_target_cap()
1909 ab->qmi.target.fw_build_timestamp, in ath11k_qmi_request_target_cap()
1910 ab->qmi.target.fw_build_id); in ath11k_qmi_request_target_cap()
1912 r = ath11k_core_check_dt(ab); in ath11k_qmi_request_target_cap()
1914 ath11k_dbg(ab, ATH11K_DBG_QMI, "DT bdf variant name not set.\n"); in ath11k_qmi_request_target_cap()
1921 ath11k_qmi_prepare_bdf_download(struct ath11k_base *ab, int type, in ath11k_qmi_prepare_bdf_download() argument
1934 ret = ath11k_core_fetch_bdf(ab, &bd); in ath11k_qmi_prepare_bdf_download()
1936 ath11k_warn(ab, "failed to load board file: %d\n", ret); in ath11k_qmi_prepare_bdf_download()
1940 fw_size = min_t(u32, ab->hw_params.fw.board_size, bd.len); in ath11k_qmi_prepare_bdf_download()
1942 ath11k_core_free_bdf(ab, &bd); in ath11k_qmi_prepare_bdf_download()
1945 fw_entry = ath11k_core_firmware_request(ab, ATH11K_DEFAULT_CAL_FILE); in ath11k_qmi_prepare_bdf_download()
1948 ath11k_warn(ab, "failed to load %s: %d\n", in ath11k_qmi_prepare_bdf_download()
1953 fw_size = min_t(u32, ab->hw_params.fw.board_size, in ath11k_qmi_prepare_bdf_download()
1969 static int ath11k_qmi_load_bdf_fixed_addr(struct ath11k_base *ab) in ath11k_qmi_load_bdf_fixed_addr() argument
1982 bdf_addr = ioremap(ab->hw_params.bdf_addr, ATH11K_QMI_BDF_MAX_SIZE); in ath11k_qmi_load_bdf_fixed_addr()
1984 ath11k_warn(ab, "failed ioremap for board file\n"); in ath11k_qmi_load_bdf_fixed_addr()
1992 req->file_id = ab->qmi.target.board_id; in ath11k_qmi_load_bdf_fixed_addr()
2003 ret = ath11k_qmi_prepare_bdf_download(ab, type, req, bdf_addr); in ath11k_qmi_load_bdf_fixed_addr()
2007 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_load_bdf_fixed_addr()
2013 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi bdf download req fixed addr type %d\n", in ath11k_qmi_load_bdf_fixed_addr()
2016 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_load_bdf_fixed_addr()
2030 ath11k_warn(ab, "board file download request failed: %d %d\n", in ath11k_qmi_load_bdf_fixed_addr()
2044 static int ath11k_qmi_load_bdf_qmi(struct ath11k_base *ab) in ath11k_qmi_load_bdf_qmi() argument
2061 ret = ath11k_core_fetch_bdf(ab, &bd); in ath11k_qmi_load_bdf_qmi()
2063 ath11k_warn(ab, "failed to fetch board file: %d\n", ret); in ath11k_qmi_load_bdf_qmi()
2075 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi bdf_type %d\n", bdf_type); in ath11k_qmi_load_bdf_qmi()
2080 req->file_id = ab->qmi.target.board_id; in ath11k_qmi_load_bdf_qmi()
2100 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_load_bdf_qmi()
2106 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi bdf download request remaining %i\n", in ath11k_qmi_load_bdf_qmi()
2109 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_load_bdf_qmi()
2123 ath11k_warn(ab, "bdf download request failed: %d %d\n", in ath11k_qmi_load_bdf_qmi()
2134 ath11k_core_free_bdf(ab, &bd); in ath11k_qmi_load_bdf_qmi()
2141 static int ath11k_qmi_m3_load(struct ath11k_base *ab) in ath11k_qmi_m3_load() argument
2143 struct m3_mem_region *m3_mem = &ab->qmi.m3_mem; in ath11k_qmi_m3_load()
2151 fw = ath11k_core_firmware_request(ab, ATH11K_M3_FILE); in ath11k_qmi_m3_load()
2154 ath11k_core_create_firmware_path(ab, ATH11K_M3_FILE, in ath11k_qmi_m3_load()
2156 ath11k_err(ab, "failed to load %s: %d\n", path, ret); in ath11k_qmi_m3_load()
2160 m3_mem->vaddr = dma_alloc_coherent(ab->dev, in ath11k_qmi_m3_load()
2164 ath11k_err(ab, "failed to allocate memory for M3 with size %zu\n", in ath11k_qmi_m3_load()
2177 static void ath11k_qmi_m3_free(struct ath11k_base *ab) in ath11k_qmi_m3_free() argument
2179 struct m3_mem_region *m3_mem = &ab->qmi.m3_mem; in ath11k_qmi_m3_free()
2181 if (!ab->bus_params.m3_fw_support || !m3_mem->vaddr) in ath11k_qmi_m3_free()
2184 dma_free_coherent(ab->dev, m3_mem->size, in ath11k_qmi_m3_free()
2189 static int ath11k_qmi_wlanfw_m3_info_send(struct ath11k_base *ab) in ath11k_qmi_wlanfw_m3_info_send() argument
2191 struct m3_mem_region *m3_mem = &ab->qmi.m3_mem; in ath11k_qmi_wlanfw_m3_info_send()
2200 if (ab->bus_params.m3_fw_support) { in ath11k_qmi_wlanfw_m3_info_send()
2201 ret = ath11k_qmi_m3_load(ab); in ath11k_qmi_wlanfw_m3_info_send()
2203 ath11k_err(ab, "failed to load m3 firmware: %d", ret); in ath11k_qmi_wlanfw_m3_info_send()
2214 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_wlanfw_m3_info_send()
2219 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi m3 info req\n"); in ath11k_qmi_wlanfw_m3_info_send()
2221 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_wlanfw_m3_info_send()
2226 ath11k_warn(ab, "failed to send m3 information request: %d\n", in ath11k_qmi_wlanfw_m3_info_send()
2233 ath11k_warn(ab, "failed to wait m3 information request: %d\n", ret); in ath11k_qmi_wlanfw_m3_info_send()
2238 ath11k_warn(ab, "m3 info request failed: %d %d\n", in ath11k_qmi_wlanfw_m3_info_send()
2247 static int ath11k_qmi_wlanfw_mode_send(struct ath11k_base *ab, in ath11k_qmi_wlanfw_mode_send() argument
2262 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_wlanfw_mode_send()
2267 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi wlan mode req mode %d\n", mode); in ath11k_qmi_wlanfw_mode_send()
2269 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_wlanfw_mode_send()
2274 ath11k_warn(ab, "failed to send wlan mode request (mode %d): %d\n", in ath11k_qmi_wlanfw_mode_send()
2282 ath11k_warn(ab, "WLFW service is dis-connected\n"); in ath11k_qmi_wlanfw_mode_send()
2285 ath11k_warn(ab, "failed to wait wlan mode request (mode %d): %d\n", in ath11k_qmi_wlanfw_mode_send()
2291 ath11k_warn(ab, "wlan mode request failed (mode: %d): %d %d\n", in ath11k_qmi_wlanfw_mode_send()
2301 static int ath11k_qmi_wlanfw_wlan_cfg_send(struct ath11k_base *ab) in ath11k_qmi_wlanfw_wlan_cfg_send() argument
2310 ce_cfg = (struct ce_pipe_config *)ab->qmi.ce_cfg.tgt_ce; in ath11k_qmi_wlanfw_wlan_cfg_send()
2311 svc_cfg = (struct service_to_pipe *)ab->qmi.ce_cfg.svc_to_ce_map; in ath11k_qmi_wlanfw_wlan_cfg_send()
2325 req->tgt_cfg_len = ab->qmi.ce_cfg.tgt_ce_len; in ath11k_qmi_wlanfw_wlan_cfg_send()
2336 req->svc_cfg_len = ab->qmi.ce_cfg.svc_to_ce_map_len; in ath11k_qmi_wlanfw_wlan_cfg_send()
2345 if (ab->hw_params.supports_shadow_regs) { in ath11k_qmi_wlanfw_wlan_cfg_send()
2348 ab->qmi.ce_cfg.shadow_reg_v2_len, in ath11k_qmi_wlanfw_wlan_cfg_send()
2350 memcpy(&req->shadow_reg_v2, ab->qmi.ce_cfg.shadow_reg_v2, in ath11k_qmi_wlanfw_wlan_cfg_send()
2356 ret = qmi_txn_init(&ab->qmi.handle, &txn, in ath11k_qmi_wlanfw_wlan_cfg_send()
2361 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi wlan cfg req\n"); in ath11k_qmi_wlanfw_wlan_cfg_send()
2363 ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, in ath11k_qmi_wlanfw_wlan_cfg_send()
2368 ath11k_warn(ab, "failed to send wlan config request: %d\n", in ath11k_qmi_wlanfw_wlan_cfg_send()
2375 ath11k_warn(ab, "failed to wait wlan config request: %d\n", ret); in ath11k_qmi_wlanfw_wlan_cfg_send()
2380 ath11k_warn(ab, "wlan config request failed: %d %d\n", in ath11k_qmi_wlanfw_wlan_cfg_send()
2391 void ath11k_qmi_firmware_stop(struct ath11k_base *ab) in ath11k_qmi_firmware_stop() argument
2395 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi firmware stop\n"); in ath11k_qmi_firmware_stop()
2397 ret = ath11k_qmi_wlanfw_mode_send(ab, ATH11K_FIRMWARE_MODE_OFF); in ath11k_qmi_firmware_stop()
2399 ath11k_warn(ab, "qmi failed to send wlan mode off: %d\n", ret); in ath11k_qmi_firmware_stop()
2404 int ath11k_qmi_firmware_start(struct ath11k_base *ab, in ath11k_qmi_firmware_start() argument
2409 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi firmware start\n"); in ath11k_qmi_firmware_start()
2411 ret = ath11k_qmi_wlanfw_wlan_cfg_send(ab); in ath11k_qmi_firmware_start()
2413 ath11k_warn(ab, "qmi failed to send wlan cfg: %d\n", ret); in ath11k_qmi_firmware_start()
2417 ret = ath11k_qmi_wlanfw_mode_send(ab, mode); in ath11k_qmi_firmware_start()
2419 ath11k_warn(ab, "qmi failed to send wlan fw mode: %d\n", ret); in ath11k_qmi_firmware_start()
2426 static int ath11k_qmi_process_coldboot_calibration(struct ath11k_base *ab) in ath11k_qmi_process_coldboot_calibration() argument
2431 ret = ath11k_qmi_wlanfw_mode_send(ab, ATH11K_FIRMWARE_MODE_COLD_BOOT); in ath11k_qmi_process_coldboot_calibration()
2433 ath11k_warn(ab, "qmi failed to send wlan fw mode: %d\n", ret); in ath11k_qmi_process_coldboot_calibration()
2437 ath11k_dbg(ab, ATH11K_DBG_QMI, "Coldboot calibration wait started\n"); in ath11k_qmi_process_coldboot_calibration()
2439 timeout = wait_event_timeout(ab->qmi.cold_boot_waitq, in ath11k_qmi_process_coldboot_calibration()
2440 (ab->qmi.cal_done == 1), in ath11k_qmi_process_coldboot_calibration()
2443 ath11k_warn(ab, "coldboot calibration timed out\n"); in ath11k_qmi_process_coldboot_calibration()
2447 ath11k_dbg(ab, ATH11K_DBG_QMI, "Coldboot calibration done\n"); in ath11k_qmi_process_coldboot_calibration()
2477 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_event_server_arrive() local
2480 ret = ath11k_qmi_fw_ind_register_send(ab); in ath11k_qmi_event_server_arrive()
2482 ath11k_warn(ab, "failed to send qmi firmware indication: %d\n", in ath11k_qmi_event_server_arrive()
2487 ret = ath11k_qmi_host_cap_send(ab); in ath11k_qmi_event_server_arrive()
2489 ath11k_warn(ab, "failed to send qmi host cap: %d\n", ret); in ath11k_qmi_event_server_arrive()
2498 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_event_mem_request() local
2501 ret = ath11k_qmi_respond_fw_mem_request(ab); in ath11k_qmi_event_mem_request()
2503 ath11k_warn(ab, "qmi failed to respond fw mem req: %d\n", ret); in ath11k_qmi_event_mem_request()
2512 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_event_load_bdf() local
2515 ret = ath11k_qmi_request_target_cap(ab); in ath11k_qmi_event_load_bdf()
2517 ath11k_warn(ab, "failed to request qmi target capabilities: %d\n", in ath11k_qmi_event_load_bdf()
2522 if (ab->bus_params.fixed_bdf_addr) in ath11k_qmi_event_load_bdf()
2523 ret = ath11k_qmi_load_bdf_fixed_addr(ab); in ath11k_qmi_event_load_bdf()
2525 ret = ath11k_qmi_load_bdf_qmi(ab); in ath11k_qmi_event_load_bdf()
2527 ath11k_warn(ab, "failed to load board data file: %d\n", ret); in ath11k_qmi_event_load_bdf()
2531 ret = ath11k_qmi_wlanfw_m3_info_send(ab); in ath11k_qmi_event_load_bdf()
2533 ath11k_warn(ab, "failed to send qmi m3 info req: %d\n", ret); in ath11k_qmi_event_load_bdf()
2546 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_mem_request_cb() local
2550 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi firmware request memory request\n"); in ath11k_qmi_msg_mem_request_cb()
2554 ath11k_warn(ab, "invalid memory segment length: %u\n", in ath11k_qmi_msg_mem_request_cb()
2557 ab->qmi.mem_seg_count = msg->mem_seg_len; in ath11k_qmi_msg_mem_request_cb()
2560 ab->qmi.target_mem[i].type = msg->mem_seg[i].type; in ath11k_qmi_msg_mem_request_cb()
2561 ab->qmi.target_mem[i].size = msg->mem_seg[i].size; in ath11k_qmi_msg_mem_request_cb()
2562 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi mem seg type %d size %d\n", in ath11k_qmi_msg_mem_request_cb()
2566 if (ab->bus_params.fixed_mem_region) { in ath11k_qmi_msg_mem_request_cb()
2567 ret = ath11k_qmi_assign_target_mem_chunk(ab); in ath11k_qmi_msg_mem_request_cb()
2569 ath11k_warn(ab, "failed to assign qmi target memory: %d\n", in ath11k_qmi_msg_mem_request_cb()
2574 ret = ath11k_qmi_alloc_target_mem_chunk(ab); in ath11k_qmi_msg_mem_request_cb()
2576 ath11k_warn(ab, "failed to allocate qmi target memory: %d\n", in ath11k_qmi_msg_mem_request_cb()
2591 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_mem_ready_cb() local
2593 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi firmware memory ready indication\n"); in ath11k_qmi_msg_mem_ready_cb()
2603 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_fw_ready_cb() local
2605 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi firmware ready\n"); in ath11k_qmi_msg_fw_ready_cb()
2616 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_msg_cold_boot_cal_done_cb() local
2618 ab->qmi.cal_done = 1; in ath11k_qmi_msg_cold_boot_cal_done_cb()
2619 wake_up(&ab->qmi.cold_boot_waitq); in ath11k_qmi_msg_cold_boot_cal_done_cb()
2620 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi cold boot calibration done\n"); in ath11k_qmi_msg_cold_boot_cal_done_cb()
2659 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_ops_new_server() local
2670 ath11k_warn(ab, "failed to connect to qmi remote service: %d\n", ret); in ath11k_qmi_ops_new_server()
2674 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi wifi fw qmi service connected\n"); in ath11k_qmi_ops_new_server()
2684 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_ops_del_server() local
2686 ath11k_dbg(ab, ATH11K_DBG_QMI, "qmi wifi fw del server\n"); in ath11k_qmi_ops_del_server()
2700 struct ath11k_base *ab = qmi->ab; in ath11k_qmi_driver_event_work() local
2710 if (test_bit(ATH11K_FLAG_UNREGISTERING, &ab->dev_flags)) { in ath11k_qmi_driver_event_work()
2719 set_bit(ATH11K_FLAG_QMI_FAIL, &ab->dev_flags); in ath11k_qmi_driver_event_work()
2722 set_bit(ATH11K_FLAG_CRASH_FLUSH, &ab->dev_flags); in ath11k_qmi_driver_event_work()
2723 set_bit(ATH11K_FLAG_RECOVERY, &ab->dev_flags); in ath11k_qmi_driver_event_work()
2728 set_bit(ATH11K_FLAG_QMI_FAIL, &ab->dev_flags); in ath11k_qmi_driver_event_work()
2733 set_bit(ATH11K_FLAG_QMI_FAIL, &ab->dev_flags); in ath11k_qmi_driver_event_work()
2736 clear_bit(ATH11K_FLAG_QMI_FAIL, &ab->dev_flags); in ath11k_qmi_driver_event_work()
2737 if (test_bit(ATH11K_FLAG_REGISTERED, &ab->dev_flags)) { in ath11k_qmi_driver_event_work()
2738 ath11k_hal_dump_srng_stats(ab); in ath11k_qmi_driver_event_work()
2739 queue_work(ab->workqueue, &ab->restart_work); in ath11k_qmi_driver_event_work()
2743 if (ath11k_cold_boot_cal && ab->qmi.cal_done == 0 && in ath11k_qmi_driver_event_work()
2744 ab->hw_params.cold_boot_calib) { in ath11k_qmi_driver_event_work()
2745 ath11k_qmi_process_coldboot_calibration(ab); in ath11k_qmi_driver_event_work()
2748 &ab->dev_flags); in ath11k_qmi_driver_event_work()
2749 clear_bit(ATH11K_FLAG_RECOVERY, &ab->dev_flags); in ath11k_qmi_driver_event_work()
2750 ath11k_core_qmi_firmware_ready(ab); in ath11k_qmi_driver_event_work()
2751 set_bit(ATH11K_FLAG_REGISTERED, &ab->dev_flags); in ath11k_qmi_driver_event_work()
2758 ath11k_warn(ab, "invalid qmi event type: %d", event->type); in ath11k_qmi_driver_event_work()
2767 int ath11k_qmi_init_service(struct ath11k_base *ab) in ath11k_qmi_init_service() argument
2771 memset(&ab->qmi.target, 0, sizeof(struct target_info)); in ath11k_qmi_init_service()
2772 memset(&ab->qmi.target_mem, 0, sizeof(struct target_mem_chunk)); in ath11k_qmi_init_service()
2773 ab->qmi.ab = ab; in ath11k_qmi_init_service()
2775 ab->qmi.target_mem_mode = ATH11K_QMI_TARGET_MEM_MODE_DEFAULT; in ath11k_qmi_init_service()
2776 ret = qmi_handle_init(&ab->qmi.handle, ATH11K_QMI_RESP_LEN_MAX, in ath11k_qmi_init_service()
2779 ath11k_warn(ab, "failed to initialize qmi handle: %d\n", ret); in ath11k_qmi_init_service()
2783 ab->qmi.event_wq = alloc_workqueue("ath11k_qmi_driver_event", in ath11k_qmi_init_service()
2785 if (!ab->qmi.event_wq) { in ath11k_qmi_init_service()
2786 ath11k_err(ab, "failed to allocate workqueue\n"); in ath11k_qmi_init_service()
2790 INIT_LIST_HEAD(&ab->qmi.event_list); in ath11k_qmi_init_service()
2791 spin_lock_init(&ab->qmi.event_lock); in ath11k_qmi_init_service()
2792 INIT_WORK(&ab->qmi.event_work, ath11k_qmi_driver_event_work); in ath11k_qmi_init_service()
2794 ret = qmi_add_lookup(&ab->qmi.handle, ATH11K_QMI_WLFW_SERVICE_ID_V01, in ath11k_qmi_init_service()
2796 ab->qmi.service_ins_id); in ath11k_qmi_init_service()
2798 ath11k_warn(ab, "failed to add qmi lookup: %d\n", ret); in ath11k_qmi_init_service()
2799 destroy_workqueue(ab->qmi.event_wq); in ath11k_qmi_init_service()
2806 void ath11k_qmi_deinit_service(struct ath11k_base *ab) in ath11k_qmi_deinit_service() argument
2808 qmi_handle_release(&ab->qmi.handle); in ath11k_qmi_deinit_service()
2809 cancel_work_sync(&ab->qmi.event_work); in ath11k_qmi_deinit_service()
2810 destroy_workqueue(ab->qmi.event_wq); in ath11k_qmi_deinit_service()
2811 ath11k_qmi_m3_free(ab); in ath11k_qmi_deinit_service()
2812 ath11k_qmi_free_target_mem_chunk(ab); in ath11k_qmi_deinit_service()