diff --git a/components/pmo/core/src/wlan_pmo_main.c b/components/pmo/core/src/wlan_pmo_main.c index 4b8c5405bf..66284a0863 100644 --- a/components/pmo/core/src/wlan_pmo_main.c +++ b/components/pmo/core/src/wlan_pmo_main.c @@ -240,6 +240,8 @@ static void wlan_pmo_init_cfg(struct wlan_objmgr_psoc *psoc, cfg_get(psoc, CFG_ENABLE_BUS_SUSPEND_IN_SAP_MODE); psoc_cfg->is_bus_suspend_enabled_in_go_mode = cfg_get(psoc, CFG_ENABLE_BUS_SUSPEND_IN_GO_MODE); + psoc_cfg->is_dynamic_pcie_gen_speed_change_enabled = + cfg_get(psoc, CFG_ENABLE_DYNAMIC_PCIE_GEN_SPEED_SWITCH); psoc_cfg->default_power_save_mode = psoc_cfg->power_save_mode; psoc_cfg->max_ps_poll = cfg_get(psoc, CFG_PMO_MAX_PS_POLL); diff --git a/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h b/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h index ba05852689..4a6696785a 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h @@ -525,6 +525,27 @@ 0, \ "This ini is used to enable bus suspend in P2PGO mode") +/* + * + * enable_dynamic_pcie_gen_speed_switch - enable dynamic PCIe gen speed change + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * This ini is used to enable dynamic PCIe gen speed change + * + * 0: Dynamic PCIe gen speed change is not enabled + * 1: Dynamic PCIe gen speed change is enabled + * + * Usage: Internal + * + * + */ +#define CFG_ENABLE_DYNAMIC_PCIE_GEN_SPEED_SWITCH CFG_INI_BOOL( \ + "enable_dynamic_pcie_gen_speed_switch", \ + 0, \ + "This ini is used to enable dynamic PCIe gen speed change") + /* * * igmp_version_support - Configure igmp version @@ -591,7 +612,8 @@ CFG(CFG_PMO_MOD_DTIM_ON_SYS_SUSPEND) \ CFG(CFG_ENABLE_BUS_SUSPEND_IN_SAP_MODE) \ CFG(CFG_ENABLE_BUS_SUSPEND_IN_GO_MODE)\ - CFG(CFG_IGMP_VERSION_SUPPORT) \ - CFG(CFG_DISCONNECT_SAP_TDLS_IN_WOW) + CFG(CFG_DISCONNECT_SAP_TDLS_IN_WOW) \ + CFG(CFG_ENABLE_DYNAMIC_PCIE_GEN_SPEED_SWITCH) \ + CFG(CFG_IGMP_VERSION_SUPPORT) #endif /* WLAN_PMO_COMMON_CFG_H__ */ diff --git a/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h b/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h index 65bf5ec814..2a612837aa 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h @@ -416,6 +416,7 @@ struct pmo_psoc_cfg { bool is_mod_dtim_on_sys_suspend_enabled; bool is_bus_suspend_enabled_in_sap_mode; bool is_bus_suspend_enabled_in_go_mode; + bool is_dynamic_pcie_gen_speed_change_enabled; #ifdef WLAN_ENABLE_GPIO_WAKEUP bool enable_gpio_wakeup; uint32_t gpio_wakeup_pin; diff --git a/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h b/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h index df8fadf0fd..48d282f19a 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_ucfg_api.h @@ -2217,6 +2217,16 @@ ucfg_pmo_get_go_mode_bus_suspend(struct wlan_objmgr_psoc *psoc); enum pmo_suspend_mode ucfg_pmo_get_suspend_mode(struct wlan_objmgr_psoc *psoc); +/** + * ucfg_pmo_get_dynamic_pcie_gen_switch_cfg() - get PMO config for + * dynamic PCIe gen speed change + * @psoc: pointer to psoc object + * + * Return: bool + */ +bool +ucfg_pmo_get_dynamic_pcie_gen_switch_cfg(struct wlan_objmgr_psoc *psoc); + #ifdef SYSTEM_PM_CHECK /** * ucfg_pmo_notify_system_resume() - system resume notification to pmo diff --git a/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c b/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c index 300c41fd3a..1dab87928b 100644 --- a/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c +++ b/components/pmo/dispatcher/src/wlan_pmo_ucfg_api.c @@ -947,6 +947,14 @@ ucfg_pmo_get_suspend_mode(struct wlan_objmgr_psoc *psoc) return pmo_psoc_ctx->psoc_cfg.suspend_mode; } +bool +ucfg_pmo_get_dynamic_pcie_gen_switch_cfg(struct wlan_objmgr_psoc *psoc) +{ + struct pmo_psoc_priv_obj *pmo_psoc_ctx = pmo_psoc_get_priv(psoc); + + return pmo_psoc_ctx->psoc_cfg.is_dynamic_pcie_gen_speed_change_enabled; +} + QDF_STATUS ucfg_pmo_core_txrx_suspend(struct wlan_objmgr_psoc *psoc) { return pmo_core_txrx_suspend(psoc); diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index 17c2c2096a..39384a7b29 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -377,6 +377,8 @@ static void wma_set_default_tgt_config(tp_wma_handle wma_handle, ucfg_pmo_get_sap_mode_bus_suspend(wma_handle->psoc); tgt_cfg->is_go_connected_d3wow_enabled = ucfg_pmo_get_go_mode_bus_suspend(wma_handle->psoc); + tgt_cfg->dynamic_pcie_gen_speed_change = + ucfg_pmo_get_dynamic_pcie_gen_switch_cfg(wma_handle->psoc); cfg_nan_get_max_ndi(wma_handle->psoc, &tgt_cfg->max_ndi);