Loading drivers/net/wireless/cnss2/main.c +20 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,26 @@ int cnss_get_mem_segment_info(enum cnss_remote_mem_type type, } EXPORT_SYMBOL(cnss_get_mem_segment_info); int cnss_set_feature_list(struct cnss_plat_data *plat_priv, enum cnss_feature_v01 feature) { if (unlikely(!plat_priv || feature >= CNSS_MAX_FEATURE_V01)) return -EINVAL; plat_priv->feature_list |= 1 << feature; return 0; } int cnss_get_feature_list(struct cnss_plat_data *plat_priv, u64 *feature_list) { if (unlikely(!plat_priv)) return -EINVAL; *feature_list = plat_priv->feature_list; return 0; } static int cnss_pm_notify(struct notifier_block *b, unsigned long event, void *p) { Loading drivers/net/wireless/cnss2/main.h +5 −0 Original line number Diff line number Diff line Loading @@ -502,6 +502,7 @@ struct cnss_plat_data { u32 hw_trc_override; u32 is_converged_dt; struct device_node *dev_node; u64 feature_list; }; #ifdef CONFIG_ARCH_QCOM Loading Loading @@ -573,4 +574,8 @@ int cnss_request_firmware_direct(struct cnss_plat_data *plat_priv, const char *filename); void cnss_disable_redundant_vreg(struct cnss_plat_data *plat_priv); int cnss_gpio_get_value(struct cnss_plat_data *plat_priv, int gpio_num); int cnss_set_feature_list(struct cnss_plat_data *plat_priv, enum cnss_feature_v01 feature); int cnss_get_feature_list(struct cnss_plat_data *plat_priv, u64 *feature_list); #endif /* _CNSS_MAIN_H */ drivers/net/wireless/cnss2/power.c +1 −0 Original line number Diff line number Diff line Loading @@ -784,6 +784,7 @@ int cnss_get_pinctrl(struct cnss_plat_data *plat_priv) XO_CLK_GPIO, 0); cnss_pr_dbg("QCA6490 XO_CLK GPIO: %d\n", pinctrl_info->xo_clk_gpio); cnss_set_feature_list(plat_priv, BOOTSTRAP_CLOCK_SELECT_V01); } else { pinctrl_info->xo_clk_gpio = -EINVAL; } Loading drivers/net/wireless/cnss2/qmi.c +9 −0 Original line number Diff line number Diff line Loading @@ -186,6 +186,7 @@ static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv) int ret = 0; u64 iova_start = 0, iova_size = 0, iova_ipa_start = 0, iova_ipa_size = 0; u64 feature_list = 0; cnss_pr_dbg("Sending host capability message, state: 0x%lx\n", plat_priv->driver_state); Loading Loading @@ -241,6 +242,14 @@ static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv) req->host_build_type_valid = 1; req->host_build_type = cnss_get_host_build_type(); ret = cnss_get_feature_list(plat_priv, &feature_list); if (!ret) { req->feature_list_valid = 1; req->feature_list = feature_list; cnss_pr_dbg("Sending feature list 0x%llx\n", req->feature_list); } ret = qmi_txn_init(&plat_priv->qmi_wlfw, &txn, wlfw_host_cap_resp_msg_v01_ei, resp); if (ret < 0) { Loading drivers/net/wireless/cnss_utils/wlan_firmware_service_v01.c +20 −0 Original line number Diff line number Diff line Loading @@ -3394,6 +3394,26 @@ struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = { mlo_chip_info), .ei_array = wlfw_host_mlo_chip_info_s_v01_ei, }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x27, .offset = offsetof(struct wlfw_host_cap_req_msg_v01, feature_list_valid), }, { .data_type = QMI_UNSIGNED_8_BYTE, .elem_len = 1, .elem_size = sizeof(u64), .array_type = NO_ARRAY, .tlv_type = 0x27, .offset = offsetof(struct wlfw_host_cap_req_msg_v01, feature_list), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, Loading Loading
drivers/net/wireless/cnss2/main.c +20 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,26 @@ int cnss_get_mem_segment_info(enum cnss_remote_mem_type type, } EXPORT_SYMBOL(cnss_get_mem_segment_info); int cnss_set_feature_list(struct cnss_plat_data *plat_priv, enum cnss_feature_v01 feature) { if (unlikely(!plat_priv || feature >= CNSS_MAX_FEATURE_V01)) return -EINVAL; plat_priv->feature_list |= 1 << feature; return 0; } int cnss_get_feature_list(struct cnss_plat_data *plat_priv, u64 *feature_list) { if (unlikely(!plat_priv)) return -EINVAL; *feature_list = plat_priv->feature_list; return 0; } static int cnss_pm_notify(struct notifier_block *b, unsigned long event, void *p) { Loading
drivers/net/wireless/cnss2/main.h +5 −0 Original line number Diff line number Diff line Loading @@ -502,6 +502,7 @@ struct cnss_plat_data { u32 hw_trc_override; u32 is_converged_dt; struct device_node *dev_node; u64 feature_list; }; #ifdef CONFIG_ARCH_QCOM Loading Loading @@ -573,4 +574,8 @@ int cnss_request_firmware_direct(struct cnss_plat_data *plat_priv, const char *filename); void cnss_disable_redundant_vreg(struct cnss_plat_data *plat_priv); int cnss_gpio_get_value(struct cnss_plat_data *plat_priv, int gpio_num); int cnss_set_feature_list(struct cnss_plat_data *plat_priv, enum cnss_feature_v01 feature); int cnss_get_feature_list(struct cnss_plat_data *plat_priv, u64 *feature_list); #endif /* _CNSS_MAIN_H */
drivers/net/wireless/cnss2/power.c +1 −0 Original line number Diff line number Diff line Loading @@ -784,6 +784,7 @@ int cnss_get_pinctrl(struct cnss_plat_data *plat_priv) XO_CLK_GPIO, 0); cnss_pr_dbg("QCA6490 XO_CLK GPIO: %d\n", pinctrl_info->xo_clk_gpio); cnss_set_feature_list(plat_priv, BOOTSTRAP_CLOCK_SELECT_V01); } else { pinctrl_info->xo_clk_gpio = -EINVAL; } Loading
drivers/net/wireless/cnss2/qmi.c +9 −0 Original line number Diff line number Diff line Loading @@ -186,6 +186,7 @@ static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv) int ret = 0; u64 iova_start = 0, iova_size = 0, iova_ipa_start = 0, iova_ipa_size = 0; u64 feature_list = 0; cnss_pr_dbg("Sending host capability message, state: 0x%lx\n", plat_priv->driver_state); Loading Loading @@ -241,6 +242,14 @@ static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv) req->host_build_type_valid = 1; req->host_build_type = cnss_get_host_build_type(); ret = cnss_get_feature_list(plat_priv, &feature_list); if (!ret) { req->feature_list_valid = 1; req->feature_list = feature_list; cnss_pr_dbg("Sending feature list 0x%llx\n", req->feature_list); } ret = qmi_txn_init(&plat_priv->qmi_wlfw, &txn, wlfw_host_cap_resp_msg_v01_ei, resp); if (ret < 0) { Loading
drivers/net/wireless/cnss_utils/wlan_firmware_service_v01.c +20 −0 Original line number Diff line number Diff line Loading @@ -3394,6 +3394,26 @@ struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = { mlo_chip_info), .ei_array = wlfw_host_mlo_chip_info_s_v01_ei, }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(u8), .array_type = NO_ARRAY, .tlv_type = 0x27, .offset = offsetof(struct wlfw_host_cap_req_msg_v01, feature_list_valid), }, { .data_type = QMI_UNSIGNED_8_BYTE, .elem_len = 1, .elem_size = sizeof(u64), .array_type = NO_ARRAY, .tlv_type = 0x27, .offset = offsetof(struct wlfw_host_cap_req_msg_v01, feature_list), }, { .data_type = QMI_EOTI, .array_type = NO_ARRAY, Loading