From 2456b24f24928d0ee5e6daa8ebac30b67f79d6c1 Mon Sep 17 00:00:00 2001 From: Sarada Prasanna Garnayak Date: Mon, 15 Feb 2016 18:50:40 +0530 Subject: [PATCH] net: cnss: refactor PM QoS request wrapper API Make PM QoS request API generic to pass the type of latency requirement needed by the client instead of hard coding latency type. Add latency type as a function parameter. CRs-Fixed: 972761 Change-Id: Ic912148d2068fe8a758b6a4b3be570ccf870f03a Signed-off-by: Sarada Prasanna Garnayak --- drivers/net/wireless/cnss/cnss_pci.c | 11 +++++++++++ drivers/net/wireless/cnss/cnss_sdio.c | 10 ++++++++++ include/net/cnss.h | 1 + 3 files changed, 22 insertions(+) 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);