Commit 8277de15 authored by Kalle Valo's avatar Kalle Valo

ath6kl: add suspend_cutpower module parameter

This is to force ath6kl to power off hardware during suspend even if
sdio support keep power. This is needed, for example, when sdio
controller is buggy or maximum powersaving is desired.

Usage:

insmod ath6kl.ko suspend_cutpower=1
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent cf97fa9f
...@@ -166,6 +166,7 @@ struct ath6kl_fw_ie { ...@@ -166,6 +166,7 @@ struct ath6kl_fw_ie {
#define ATH6KL_CONF_IGNORE_PS_FAIL_EVT_IN_SCAN BIT(1) #define ATH6KL_CONF_IGNORE_PS_FAIL_EVT_IN_SCAN BIT(1)
#define ATH6KL_CONF_ENABLE_11N BIT(2) #define ATH6KL_CONF_ENABLE_11N BIT(2)
#define ATH6KL_CONF_ENABLE_TX_BURST BIT(3) #define ATH6KL_CONF_ENABLE_TX_BURST BIT(3)
#define ATH6KL_CONF_SUSPEND_CUTPOWER BIT(4)
enum wlan_low_pwr_state { enum wlan_low_pwr_state {
WLAN_POWER_STATE_ON, WLAN_POWER_STATE_ON,
......
...@@ -27,9 +27,11 @@ ...@@ -27,9 +27,11 @@
unsigned int debug_mask; unsigned int debug_mask;
static unsigned int testmode; static unsigned int testmode;
static bool suspend_cutpower;
module_param(debug_mask, uint, 0644); module_param(debug_mask, uint, 0644);
module_param(testmode, uint, 0644); module_param(testmode, uint, 0644);
module_param(suspend_cutpower, bool, 0444);
/* /*
* Include definitions here that can be used to tune the WLAN module * Include definitions here that can be used to tune the WLAN module
...@@ -1596,6 +1598,9 @@ int ath6kl_core_init(struct ath6kl *ar) ...@@ -1596,6 +1598,9 @@ int ath6kl_core_init(struct ath6kl *ar)
ar->conf_flags = ATH6KL_CONF_IGNORE_ERP_BARKER | ar->conf_flags = ATH6KL_CONF_IGNORE_ERP_BARKER |
ATH6KL_CONF_ENABLE_11N | ATH6KL_CONF_ENABLE_TX_BURST; ATH6KL_CONF_ENABLE_11N | ATH6KL_CONF_ENABLE_TX_BURST;
if (suspend_cutpower)
ar->conf_flags |= ATH6KL_CONF_SUSPEND_CUTPOWER;
ar->wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM | ar->wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM |
WIPHY_FLAG_HAVE_AP_SME; WIPHY_FLAG_HAVE_AP_SME;
......
...@@ -784,7 +784,8 @@ static int ath6kl_sdio_suspend(struct ath6kl *ar) ...@@ -784,7 +784,8 @@ static int ath6kl_sdio_suspend(struct ath6kl *ar)
ath6kl_dbg(ATH6KL_DBG_SUSPEND, "sdio suspend pm_caps 0x%x\n", flags); ath6kl_dbg(ATH6KL_DBG_SUSPEND, "sdio suspend pm_caps 0x%x\n", flags);
if (!(flags & MMC_PM_KEEP_POWER)) { if (!(flags & MMC_PM_KEEP_POWER) ||
(ar->conf_flags & ATH6KL_CONF_SUSPEND_CUTPOWER)) {
/* as host doesn't support keep power we need to cut power */ /* as host doesn't support keep power we need to cut power */
return ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_CUTPOWER); return ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_CUTPOWER);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment