Loading drivers/net/wireless/cnss2/main.c +8 −0 Original line number Diff line number Diff line Loading @@ -524,6 +524,14 @@ int cnss_athdiag_write(struct device *dev, uint32_t offset, uint32_t mem_type, EXPORT_SYMBOL(cnss_athdiag_write); #endif int cnss_set_fw_log_mode(struct device *dev, uint8_t fw_log_mode) { struct cnss_plat_data *plat_priv = cnss_bus_dev_to_plat_priv(dev); return cnss_wlfw_ini_send_sync(plat_priv, fw_log_mode); } EXPORT_SYMBOL(cnss_set_fw_log_mode); static int cnss_fw_mem_ready_hdlr(struct cnss_plat_data *plat_priv) { int ret = 0; Loading drivers/net/wireless/cnss2/qmi.c +51 −0 Original line number Diff line number Diff line Loading @@ -796,6 +796,57 @@ out: return ret; } int cnss_wlfw_ini_send_sync(struct cnss_plat_data *plat_priv, uint8_t fw_log_mode) { int ret; struct wlfw_ini_req_msg_v01 req; struct wlfw_ini_resp_msg_v01 resp; struct msg_desc req_desc, resp_desc; if (!plat_priv) return -ENODEV; cnss_pr_dbg("Sending ini sync request, state: 0x%lx, fw_log_mode: %d\n", plat_priv->driver_state, fw_log_mode); memset(&req, 0, sizeof(req)); memset(&resp, 0, sizeof(resp)); req.enablefwlog_valid = 1; req.enablefwlog = fw_log_mode; req_desc.max_msg_len = WLFW_INI_REQ_MSG_V01_MAX_MSG_LEN; req_desc.msg_id = QMI_WLFW_INI_REQ_V01; req_desc.ei_array = wlfw_ini_req_msg_v01_ei; resp_desc.max_msg_len = WLFW_INI_RESP_MSG_V01_MAX_MSG_LEN; resp_desc.msg_id = QMI_WLFW_INI_RESP_V01; resp_desc.ei_array = wlfw_ini_resp_msg_v01_ei; ret = qmi_send_req_wait(plat_priv->qmi_wlfw_clnt, &req_desc, &req, sizeof(req), &resp_desc, &resp, sizeof(resp), QMI_WLFW_TIMEOUT_MS); if (ret < 0) { cnss_pr_err("Send INI req failed fw_log_mode: %d, ret: %d\n", fw_log_mode, ret); goto out; } if (resp.resp.result != QMI_RESULT_SUCCESS_V01) { cnss_pr_err("QMI INI request rejected, fw_log_mode:%d result:%d error:%d\n", fw_log_mode, resp.resp.result, resp.resp.error); ret = resp.resp.result; goto out; } return 0; out: return ret; } static void cnss_wlfw_clnt_ind(struct qmi_handle *handle, unsigned int msg_id, void *msg, unsigned int msg_len, void *ind_cb_priv) Loading drivers/net/wireless/cnss2/qmi.h +2 −0 Original line number Diff line number Diff line Loading @@ -35,5 +35,7 @@ int cnss_wlfw_athdiag_read_send_sync(struct cnss_plat_data *plat_priv, int cnss_wlfw_athdiag_write_send_sync(struct cnss_plat_data *plat_priv, uint32_t offset, uint32_t mem_type, uint32_t data_len, uint8_t *data); int cnss_wlfw_ini_send_sync(struct cnss_plat_data *plat_priv, uint8_t fw_log_mode); #endif /* _CNSS_QMI_H */ include/net/cnss2.h +1 −0 Original line number Diff line number Diff line Loading @@ -186,5 +186,6 @@ extern int cnss_athdiag_read(struct device *dev, uint32_t offset, extern int cnss_athdiag_write(struct device *dev, uint32_t offset, uint32_t mem_type, uint32_t data_len, uint8_t *input); extern int cnss_set_fw_log_mode(struct device *dev, uint8_t fw_log_mode); #endif /* _NET_CNSS2_H */ Loading
drivers/net/wireless/cnss2/main.c +8 −0 Original line number Diff line number Diff line Loading @@ -524,6 +524,14 @@ int cnss_athdiag_write(struct device *dev, uint32_t offset, uint32_t mem_type, EXPORT_SYMBOL(cnss_athdiag_write); #endif int cnss_set_fw_log_mode(struct device *dev, uint8_t fw_log_mode) { struct cnss_plat_data *plat_priv = cnss_bus_dev_to_plat_priv(dev); return cnss_wlfw_ini_send_sync(plat_priv, fw_log_mode); } EXPORT_SYMBOL(cnss_set_fw_log_mode); static int cnss_fw_mem_ready_hdlr(struct cnss_plat_data *plat_priv) { int ret = 0; Loading
drivers/net/wireless/cnss2/qmi.c +51 −0 Original line number Diff line number Diff line Loading @@ -796,6 +796,57 @@ out: return ret; } int cnss_wlfw_ini_send_sync(struct cnss_plat_data *plat_priv, uint8_t fw_log_mode) { int ret; struct wlfw_ini_req_msg_v01 req; struct wlfw_ini_resp_msg_v01 resp; struct msg_desc req_desc, resp_desc; if (!plat_priv) return -ENODEV; cnss_pr_dbg("Sending ini sync request, state: 0x%lx, fw_log_mode: %d\n", plat_priv->driver_state, fw_log_mode); memset(&req, 0, sizeof(req)); memset(&resp, 0, sizeof(resp)); req.enablefwlog_valid = 1; req.enablefwlog = fw_log_mode; req_desc.max_msg_len = WLFW_INI_REQ_MSG_V01_MAX_MSG_LEN; req_desc.msg_id = QMI_WLFW_INI_REQ_V01; req_desc.ei_array = wlfw_ini_req_msg_v01_ei; resp_desc.max_msg_len = WLFW_INI_RESP_MSG_V01_MAX_MSG_LEN; resp_desc.msg_id = QMI_WLFW_INI_RESP_V01; resp_desc.ei_array = wlfw_ini_resp_msg_v01_ei; ret = qmi_send_req_wait(plat_priv->qmi_wlfw_clnt, &req_desc, &req, sizeof(req), &resp_desc, &resp, sizeof(resp), QMI_WLFW_TIMEOUT_MS); if (ret < 0) { cnss_pr_err("Send INI req failed fw_log_mode: %d, ret: %d\n", fw_log_mode, ret); goto out; } if (resp.resp.result != QMI_RESULT_SUCCESS_V01) { cnss_pr_err("QMI INI request rejected, fw_log_mode:%d result:%d error:%d\n", fw_log_mode, resp.resp.result, resp.resp.error); ret = resp.resp.result; goto out; } return 0; out: return ret; } static void cnss_wlfw_clnt_ind(struct qmi_handle *handle, unsigned int msg_id, void *msg, unsigned int msg_len, void *ind_cb_priv) Loading
drivers/net/wireless/cnss2/qmi.h +2 −0 Original line number Diff line number Diff line Loading @@ -35,5 +35,7 @@ int cnss_wlfw_athdiag_read_send_sync(struct cnss_plat_data *plat_priv, int cnss_wlfw_athdiag_write_send_sync(struct cnss_plat_data *plat_priv, uint32_t offset, uint32_t mem_type, uint32_t data_len, uint8_t *data); int cnss_wlfw_ini_send_sync(struct cnss_plat_data *plat_priv, uint8_t fw_log_mode); #endif /* _CNSS_QMI_H */
include/net/cnss2.h +1 −0 Original line number Diff line number Diff line Loading @@ -186,5 +186,6 @@ extern int cnss_athdiag_read(struct device *dev, uint32_t offset, extern int cnss_athdiag_write(struct device *dev, uint32_t offset, uint32_t mem_type, uint32_t data_len, uint8_t *input); extern int cnss_set_fw_log_mode(struct device *dev, uint8_t fw_log_mode); #endif /* _NET_CNSS2_H */