summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarada Prasanna Garnayak <sgarna@codeaurora.org>2016-02-02 15:51:29 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:19:36 -0700
commitac0f3e75de4161c00a512a1b3eb51b00039ba45f (patch)
tree32f978aebee835ce71eb46f04ddf3e7f9daa2e59
parentf087bb3d9ae69ccd2396929e397e9b7989eaeb6e (diff)
net: cnss_sdio: add PM QoS support in cnss sdio platform driver
To improve the wlan throughput add power management quality of service support in cnss sdio platform driver. The cnss sdio platform driver export PM QoS API to wlan host driver. CRs-Fixed: 970872 Change-Id: Idcea4cde74b280b26706be1bd88b822de80c0ff3 Signed-off-by: Sarada Prasanna Garnayak <sgarna@codeaurora.org>
-rw-r--r--drivers/net/wireless/cnss/cnss_sdio.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/net/wireless/cnss/cnss_sdio.c b/drivers/net/wireless/cnss/cnss_sdio.c
index 13bc3aa63dc8..48039992427e 100644
--- a/drivers/net/wireless/cnss/cnss_sdio.c
+++ b/drivers/net/wireless/cnss/cnss_sdio.c
@@ -27,6 +27,7 @@
#include <soc/qcom/ramdump.h>
#include <soc/qcom/memory_dump.h>
#include <net/cnss.h>
+#include <linux/pm_qos.h>
#define WLAN_VREG_NAME "vdd-wlan"
#define WLAN_VREG_DSRC_NAME "vdd-wlan-dsrc"
@@ -87,6 +88,7 @@ static struct cnss_sdio_data {
struct cnss_unsafe_channel_list unsafe_list;
struct cnss_sdio_info cnss_sdio_info;
struct cnss_ssr_info ssr_info;
+ struct pm_qos_request qos_request;
} *cnss_pdata;
#define WLAN_RECOVERY_DELAY 1
@@ -135,6 +137,34 @@ static const struct sdio_device_id ar6k_id_table[] = {
};
MODULE_DEVICE_TABLE(sdio, ar6k_id_table);
+int cnss_request_bus_bandwidth(int bandwidth)
+{
+ return 0;
+}
+EXPORT_SYMBOL(cnss_request_bus_bandwidth);
+
+void cnss_request_pm_qos(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,
+ PM_QOS_CPU_DMA_LATENCY, qos_val);
+}
+EXPORT_SYMBOL(cnss_request_pm_qos);
+
+void cnss_remove_pm_qos(void)
+{
+ if (!cnss_pdata)
+ return;
+
+ pm_qos_remove_request(&cnss_pdata->qos_request);
+ pr_debug("%s: PM QoS removed\n", __func__);
+}
+EXPORT_SYMBOL(cnss_remove_pm_qos);
+
int cnss_set_wlan_unsafe_channel(u16 *unsafe_ch_list, u16 ch_count)
{
struct cnss_unsafe_channel_list *unsafe_list;