diff --git a/drivers/net/wireless/cnss/cnss_pci.c b/drivers/net/wireless/cnss/cnss_pci.c index 7f483d28d33e..8629555fbefd 100644 --- a/drivers/net/wireless/cnss/cnss_pci.c +++ b/drivers/net/wireless/cnss/cnss_pci.c @@ -2867,6 +2867,17 @@ static void __exit cnss_exit(void) platform_driver_unregister(&cnss_driver); } +void cnss_request_pm_qos_type(int latency_type, u32 qos_val) +{ + if (!penv) { + pr_err("%s: penv is NULL!\n", __func__); + return; + } + + pm_qos_add_request(&penv->qos_request, latency_type, qos_val); +} +EXPORT_SYMBOL(cnss_request_pm_qos_type); + void cnss_request_pm_qos(u32 qos_val) { if (!penv) { diff --git a/drivers/net/wireless/cnss/cnss_sdio.c b/drivers/net/wireless/cnss/cnss_sdio.c index 48039992427e..6a9f6b5c4845 100644 --- a/drivers/net/wireless/cnss/cnss_sdio.c +++ b/drivers/net/wireless/cnss/cnss_sdio.c @@ -143,6 +143,16 @@ int cnss_request_bus_bandwidth(int bandwidth) } EXPORT_SYMBOL(cnss_request_bus_bandwidth); +void cnss_request_pm_qos_type(int latency_type, u32 qos_val) +{ + if (!cnss_pdata) + return; + + pr_debug("%s: PM QoS value: %d\n", __func__, qos_val); + pm_qos_add_request(&cnss_pdata->qos_request, latency_type, qos_val); +} +EXPORT_SYMBOL(cnss_request_pm_qos_type); + void cnss_request_pm_qos(u32 qos_val) { if (!cnss_pdata) diff --git a/include/net/cnss.h b/include/net/cnss.h index e71a53c7182f..d0753eb960b4 100644 --- a/include/net/cnss.h +++ b/include/net/cnss.h @@ -137,6 +137,7 @@ extern int cnss_wlan_pm_control(bool vote); extern void cnss_lock_pm_sem(void); extern void cnss_release_pm_sem(void); +extern void cnss_request_pm_qos_type(int latency_type, u32 qos_val); extern void cnss_request_pm_qos(u32 qos_val); extern void cnss_remove_pm_qos(void); extern int cnss_get_platform_cap(struct cnss_platform_cap *cap);