Loading drivers/soc/qcom/icnss2/main.c +12 −0 Original line number Diff line number Diff line Loading @@ -507,6 +507,18 @@ static int icnss_driver_event_server_arrive(struct icnss_priv *priv, goto err_power_on; } priv->mem_base_va = devm_ioremap(&priv->pdev->dev, priv->mem_base_pa, priv->mem_base_size); if (!priv->mem_base_va) { icnss_pr_err("Ioremap failed for bar address\n"); goto err_power_on; } icnss_pr_dbg("MEM_BASE pa: %pa, va: 0x%pK\n", &priv->mem_base_pa, priv->mem_base_va); icnss_wlfw_bdf_dnld_send_sync(priv, ICNSS_BDF_REGDB); ret = icnss_wlfw_bdf_dnld_send_sync(priv, Loading drivers/soc/qcom/icnss2/qmi.c +18 −3 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ #define REGDB_FILE_NAME "regdb.bin" #define DUMMY_BDF_FILE_NAME "bdwlan.dmy" #define DEVICE_BAR_SIZE 0x200000 #ifdef CONFIG_ICNSS2_DEBUG bool ignore_fw_timeout; #define ICNSS_QMI_ASSERT() ICNSS_ASSERT(ignore_fw_timeout) Loading Loading @@ -312,6 +314,19 @@ int wlfw_device_info_send_msg(struct icnss_priv *priv) if (resp->bar_size_valid) priv->mem_base_size = resp->bar_size; if (!priv->mem_base_pa) { ret = -EINVAL; icnss_qmi_fatal_err("Fail to get bar address\n"); goto out; } if (priv->mem_base_size < DEVICE_BAR_SIZE) { ret = -EINVAL; icnss_qmi_fatal_err("Bar size is not proper 0x%x\n", priv->mem_base_size); goto out; } kfree(resp); kfree(req); return 0; Loading Loading @@ -1644,14 +1659,14 @@ int icnss_send_wlan_enable_to_fw(struct icnss_priv *priv, if (priv->device_id == WCN6750_DEVICE_ID) { req.shadow_reg_v2_valid = 1; if (config->num_shadow_reg_cfg > if (config->num_shadow_reg_v2_cfg > QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01) req.shadow_reg_v2_len = QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01; else req.shadow_reg_v2_len = config->num_shadow_reg_cfg; req.shadow_reg_v2_len = config->num_shadow_reg_v2_cfg; memcpy(req.shadow_reg_v2, config->shadow_reg_cfg, memcpy(req.shadow_reg_v2, config->shadow_reg_v2_cfg, sizeof(struct wlfw_shadow_reg_v2_cfg_s_v01) * req.shadow_reg_v2_len); } else if (priv->device_id == ADRASTEA_DEVICE_ID) { Loading include/soc/qcom/icnss2.h +12 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,14 @@ struct icnss_shadow_reg_cfg { u16 reg_offset; }; struct icnss_shadow_reg_v2_cfg { u32 addr; }; struct icnss_rri_over_ddr_cfg { u32 base_addr_low; u32 base_addr_high; }; /* CE configuration to target */ struct icnss_wlan_enable_cfg { u32 num_ce_tgt_cfg; Loading @@ -77,6 +85,10 @@ struct icnss_wlan_enable_cfg { struct ce_svc_pipe_cfg *ce_svc_cfg; u32 num_shadow_reg_cfg; struct icnss_shadow_reg_cfg *shadow_reg_cfg; u32 num_shadow_reg_v2_cfg; struct icnss_shadow_reg_v2_cfg *shadow_reg_v2_cfg; bool rri_over_ddr_cfg_valid; struct icnss_rri_over_ddr_cfg rri_over_ddr_cfg; }; /* driver modes */ Loading Loading
drivers/soc/qcom/icnss2/main.c +12 −0 Original line number Diff line number Diff line Loading @@ -507,6 +507,18 @@ static int icnss_driver_event_server_arrive(struct icnss_priv *priv, goto err_power_on; } priv->mem_base_va = devm_ioremap(&priv->pdev->dev, priv->mem_base_pa, priv->mem_base_size); if (!priv->mem_base_va) { icnss_pr_err("Ioremap failed for bar address\n"); goto err_power_on; } icnss_pr_dbg("MEM_BASE pa: %pa, va: 0x%pK\n", &priv->mem_base_pa, priv->mem_base_va); icnss_wlfw_bdf_dnld_send_sync(priv, ICNSS_BDF_REGDB); ret = icnss_wlfw_bdf_dnld_send_sync(priv, Loading
drivers/soc/qcom/icnss2/qmi.c +18 −3 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ #define REGDB_FILE_NAME "regdb.bin" #define DUMMY_BDF_FILE_NAME "bdwlan.dmy" #define DEVICE_BAR_SIZE 0x200000 #ifdef CONFIG_ICNSS2_DEBUG bool ignore_fw_timeout; #define ICNSS_QMI_ASSERT() ICNSS_ASSERT(ignore_fw_timeout) Loading Loading @@ -312,6 +314,19 @@ int wlfw_device_info_send_msg(struct icnss_priv *priv) if (resp->bar_size_valid) priv->mem_base_size = resp->bar_size; if (!priv->mem_base_pa) { ret = -EINVAL; icnss_qmi_fatal_err("Fail to get bar address\n"); goto out; } if (priv->mem_base_size < DEVICE_BAR_SIZE) { ret = -EINVAL; icnss_qmi_fatal_err("Bar size is not proper 0x%x\n", priv->mem_base_size); goto out; } kfree(resp); kfree(req); return 0; Loading Loading @@ -1644,14 +1659,14 @@ int icnss_send_wlan_enable_to_fw(struct icnss_priv *priv, if (priv->device_id == WCN6750_DEVICE_ID) { req.shadow_reg_v2_valid = 1; if (config->num_shadow_reg_cfg > if (config->num_shadow_reg_v2_cfg > QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01) req.shadow_reg_v2_len = QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01; else req.shadow_reg_v2_len = config->num_shadow_reg_cfg; req.shadow_reg_v2_len = config->num_shadow_reg_v2_cfg; memcpy(req.shadow_reg_v2, config->shadow_reg_cfg, memcpy(req.shadow_reg_v2, config->shadow_reg_v2_cfg, sizeof(struct wlfw_shadow_reg_v2_cfg_s_v01) * req.shadow_reg_v2_len); } else if (priv->device_id == ADRASTEA_DEVICE_ID) { Loading
include/soc/qcom/icnss2.h +12 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,14 @@ struct icnss_shadow_reg_cfg { u16 reg_offset; }; struct icnss_shadow_reg_v2_cfg { u32 addr; }; struct icnss_rri_over_ddr_cfg { u32 base_addr_low; u32 base_addr_high; }; /* CE configuration to target */ struct icnss_wlan_enable_cfg { u32 num_ce_tgt_cfg; Loading @@ -77,6 +85,10 @@ struct icnss_wlan_enable_cfg { struct ce_svc_pipe_cfg *ce_svc_cfg; u32 num_shadow_reg_cfg; struct icnss_shadow_reg_cfg *shadow_reg_cfg; u32 num_shadow_reg_v2_cfg; struct icnss_shadow_reg_v2_cfg *shadow_reg_v2_cfg; bool rri_over_ddr_cfg_valid; struct icnss_rri_over_ddr_cfg rri_over_ddr_cfg; }; /* driver modes */ Loading