diff --git a/cnss2/main.c b/cnss2/main.c index 8f6d528574..1dc1ade2fb 100644 --- a/cnss2/main.c +++ b/cnss2/main.c @@ -274,6 +274,12 @@ cnss_get_pld_bus_ops_name(struct cnss_plat_data *plat_priv) } #endif +void cnss_get_bwscal_info(struct cnss_plat_data *plat_priv) +{ + plat_priv->no_bwscale = of_property_read_bool(plat_priv->dev_node, + "qcom,no-bwscale"); +} + static inline int cnss_get_rc_num(struct cnss_plat_data *plat_priv) { diff --git a/cnss2/main.h b/cnss2/main.h index 2a73bb0930..de7ea0e5c6 100644 --- a/cnss2/main.h +++ b/cnss2/main.h @@ -609,6 +609,7 @@ struct cnss_plat_data { const char *pld_bus_ops_name; u32 on_chip_pmic_devices_count; u32 *on_chip_pmic_board_ids; + bool no_bwscale; }; #if IS_ENABLED(CONFIG_ARCH_QCOM) @@ -640,6 +641,7 @@ struct cnss_plat_data *cnss_get_plat_priv_by_rc_num(int rc_num); int cnss_get_plat_env_count(void); struct cnss_plat_data *cnss_get_plat_env(int index); void cnss_get_qrtr_info(struct cnss_plat_data *plat_priv); +void cnss_get_bwscal_info(struct cnss_plat_data *plat_priv); bool cnss_is_dual_wlan_enabled(void); int cnss_driver_event_post(struct cnss_plat_data *plat_priv, enum cnss_driver_event_type type, diff --git a/cnss2/pci.c b/cnss2/pci.c index 95e58ee658..a2e1c7b796 100644 --- a/cnss2/pci.c +++ b/cnss2/pci.c @@ -6389,8 +6389,13 @@ static int cnss_pci_register_mhi(struct cnss_pci_data *pci_priv) if (cnss_pci_get_drv_supported(pci_priv)) cnss_mhi_controller_set_base(pci_priv, bar_start); + cnss_get_bwscal_info(plat_priv); + cnss_pr_dbg("no_bwscale: %d\n", plat_priv->no_bwscale); + /* BW scale CB needs to be set after registering MHI per requirement */ - cnss_mhi_controller_set_bw_scale_cb(pci_priv, cnss_mhi_bw_scale); + if (!plat_priv->no_bwscale) + cnss_mhi_controller_set_bw_scale_cb(pci_priv, + cnss_mhi_bw_scale); ret = cnss_pci_update_fw_name(pci_priv); if (ret)