Loading drivers/net/wireless/cnss2/main.c +4 −1 Original line number Diff line number Diff line Loading @@ -356,7 +356,10 @@ static int cnss_fw_mem_ready_hdlr(struct cnss_plat_data *plat_priv) if (ret) goto out; ret = cnss_wlfw_bdf_dnld_send_sync(plat_priv); cnss_wlfw_bdf_dnld_send_sync(plat_priv, CNSS_BDF_REGDB); ret = cnss_wlfw_bdf_dnld_send_sync(plat_priv, plat_priv->ctrl_params.bdf_type); if (ret) goto out; Loading drivers/net/wireless/cnss2/main.h +1 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,7 @@ enum cnss_debug_quirks { enum cnss_bdf_type { CNSS_BDF_BIN, CNSS_BDF_ELF, CNSS_BDF_REGDB = 4, CNSS_BDF_DUMMY = 255, }; Loading drivers/net/wireless/cnss2/qmi.c +11 −5 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #define ELF_BDF_FILE_NAME_PREFIX "bdwlan.e" #define BIN_BDF_FILE_NAME "bdwlan.bin" #define BIN_BDF_FILE_NAME_PREFIX "bdwlan.b" #define REGDB_FILE_NAME "regdb.bin" #define DUMMY_BDF_FILE_NAME "bdwlan.dmy" #define QMI_WLFW_TIMEOUT_MS (plat_priv->ctrl_params.qmi_timeout) Loading Loading @@ -400,7 +401,8 @@ int cnss_wlfw_tgt_cap_send_sync(struct cnss_plat_data *plat_priv) return ret; } int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv, u32 bdf_type) { struct wlfw_bdf_download_req_msg_v01 *req; struct wlfw_bdf_download_resp_msg_v01 *resp; Loading @@ -411,8 +413,8 @@ int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) unsigned int remaining; int ret = 0; cnss_pr_dbg("Sending BDF download message, state: 0x%lx\n", plat_priv->driver_state); cnss_pr_dbg("Sending BDF download message, state: 0x%lx, type: %d\n", plat_priv->driver_state, bdf_type); req = kzalloc(sizeof(*req), GFP_KERNEL); if (!req) Loading @@ -424,7 +426,7 @@ int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) return -ENOMEM; } switch (plat_priv->ctrl_params.bdf_type) { switch (bdf_type) { case CNSS_BDF_ELF: if (plat_priv->board_info.board_id == 0xFF) snprintf(filename, sizeof(filename), ELF_BDF_FILE_NAME); Loading @@ -449,6 +451,9 @@ int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) BIN_BDF_FILE_NAME_PREFIX "%04x", plat_priv->board_info.board_id); break; case CNSS_BDF_REGDB: snprintf(filename, sizeof(filename), REGDB_FILE_NAME); break; case CNSS_BDF_DUMMY: cnss_pr_dbg("CNSS_BDF_DUMMY is set, sending dummy BDF\n"); snprintf(filename, sizeof(filename), DUMMY_BDF_FILE_NAME); Loading Loading @@ -542,6 +547,7 @@ int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) if (plat_priv->ctrl_params.bdf_type != CNSS_BDF_DUMMY) release_firmware(fw_entry); err_req_fw: if (bdf_type != CNSS_BDF_REGDB) CNSS_ASSERT(0); kfree(req); kfree(resp); Loading drivers/net/wireless/cnss2/qmi.h +4 −2 Original line number Diff line number Diff line Loading @@ -24,7 +24,8 @@ int cnss_wlfw_server_arrive(struct cnss_plat_data *plat_priv, void *data); int cnss_wlfw_server_exit(struct cnss_plat_data *plat_priv); int cnss_wlfw_respond_mem_send_sync(struct cnss_plat_data *plat_priv); int cnss_wlfw_tgt_cap_send_sync(struct cnss_plat_data *plat_priv); int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv); int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv, u32 bdf_type); int cnss_wlfw_m3_dnld_send_sync(struct cnss_plat_data *plat_priv); int cnss_wlfw_wlan_mode_send_sync(struct cnss_plat_data *plat_priv, enum cnss_driver_mode mode); Loading Loading @@ -86,7 +87,8 @@ static inline int cnss_wlfw_tgt_cap_send_sync(struct cnss_plat_data *plat_priv) return 0; } static inline int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) static inline int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv, u32 bdf_type) { return 0; } Loading Loading
drivers/net/wireless/cnss2/main.c +4 −1 Original line number Diff line number Diff line Loading @@ -356,7 +356,10 @@ static int cnss_fw_mem_ready_hdlr(struct cnss_plat_data *plat_priv) if (ret) goto out; ret = cnss_wlfw_bdf_dnld_send_sync(plat_priv); cnss_wlfw_bdf_dnld_send_sync(plat_priv, CNSS_BDF_REGDB); ret = cnss_wlfw_bdf_dnld_send_sync(plat_priv, plat_priv->ctrl_params.bdf_type); if (ret) goto out; Loading
drivers/net/wireless/cnss2/main.h +1 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,7 @@ enum cnss_debug_quirks { enum cnss_bdf_type { CNSS_BDF_BIN, CNSS_BDF_ELF, CNSS_BDF_REGDB = 4, CNSS_BDF_DUMMY = 255, }; Loading
drivers/net/wireless/cnss2/qmi.c +11 −5 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #define ELF_BDF_FILE_NAME_PREFIX "bdwlan.e" #define BIN_BDF_FILE_NAME "bdwlan.bin" #define BIN_BDF_FILE_NAME_PREFIX "bdwlan.b" #define REGDB_FILE_NAME "regdb.bin" #define DUMMY_BDF_FILE_NAME "bdwlan.dmy" #define QMI_WLFW_TIMEOUT_MS (plat_priv->ctrl_params.qmi_timeout) Loading Loading @@ -400,7 +401,8 @@ int cnss_wlfw_tgt_cap_send_sync(struct cnss_plat_data *plat_priv) return ret; } int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv, u32 bdf_type) { struct wlfw_bdf_download_req_msg_v01 *req; struct wlfw_bdf_download_resp_msg_v01 *resp; Loading @@ -411,8 +413,8 @@ int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) unsigned int remaining; int ret = 0; cnss_pr_dbg("Sending BDF download message, state: 0x%lx\n", plat_priv->driver_state); cnss_pr_dbg("Sending BDF download message, state: 0x%lx, type: %d\n", plat_priv->driver_state, bdf_type); req = kzalloc(sizeof(*req), GFP_KERNEL); if (!req) Loading @@ -424,7 +426,7 @@ int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) return -ENOMEM; } switch (plat_priv->ctrl_params.bdf_type) { switch (bdf_type) { case CNSS_BDF_ELF: if (plat_priv->board_info.board_id == 0xFF) snprintf(filename, sizeof(filename), ELF_BDF_FILE_NAME); Loading @@ -449,6 +451,9 @@ int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) BIN_BDF_FILE_NAME_PREFIX "%04x", plat_priv->board_info.board_id); break; case CNSS_BDF_REGDB: snprintf(filename, sizeof(filename), REGDB_FILE_NAME); break; case CNSS_BDF_DUMMY: cnss_pr_dbg("CNSS_BDF_DUMMY is set, sending dummy BDF\n"); snprintf(filename, sizeof(filename), DUMMY_BDF_FILE_NAME); Loading Loading @@ -542,6 +547,7 @@ int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) if (plat_priv->ctrl_params.bdf_type != CNSS_BDF_DUMMY) release_firmware(fw_entry); err_req_fw: if (bdf_type != CNSS_BDF_REGDB) CNSS_ASSERT(0); kfree(req); kfree(resp); Loading
drivers/net/wireless/cnss2/qmi.h +4 −2 Original line number Diff line number Diff line Loading @@ -24,7 +24,8 @@ int cnss_wlfw_server_arrive(struct cnss_plat_data *plat_priv, void *data); int cnss_wlfw_server_exit(struct cnss_plat_data *plat_priv); int cnss_wlfw_respond_mem_send_sync(struct cnss_plat_data *plat_priv); int cnss_wlfw_tgt_cap_send_sync(struct cnss_plat_data *plat_priv); int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv); int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv, u32 bdf_type); int cnss_wlfw_m3_dnld_send_sync(struct cnss_plat_data *plat_priv); int cnss_wlfw_wlan_mode_send_sync(struct cnss_plat_data *plat_priv, enum cnss_driver_mode mode); Loading Loading @@ -86,7 +87,8 @@ static inline int cnss_wlfw_tgt_cap_send_sync(struct cnss_plat_data *plat_priv) return 0; } static inline int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv) static inline int cnss_wlfw_bdf_dnld_send_sync(struct cnss_plat_data *plat_priv, u32 bdf_type) { return 0; } Loading