brcmfmac: Fix suspend/resume (issue6488018)

79 views
Skip to first unread message

ol...@chromium.org

unread,
Mar 7, 2011, 9:35:23 PM3/7/11
to grun...@chromium.org, chromium-...@chromium.org, vb+k...@google.com, m...@chromium.org

http://codereview.chromium.org/6488018/diff/1/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
File drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c (right):

http://codereview.chromium.org/6488018/diff/1/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c#newcode76
drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c:76: printk(KERN_ERR
"%s: Failed to set pm_flags 0x%08x\n",\
No need for \ at the end. It would be more interesting to print the
actual error code too (if it's propagated up).

http://codereview.chromium.org/6488018/diff/1/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c#newcode77
drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c:77: __func__,
(unsigned int)flag);
No need to cast flag

http://codereview.chromium.org/6488018/

grun...@chromium.org

unread,
Mar 8, 2011, 12:59:17 PM3/8/11
to ol...@chromium.org, chromium-...@chromium.org, vb+k...@google.com, m...@chromium.org
Reviewers: Olof Johansson,

Message:
Done. PTAL.

BTW, goal here is to submit these to gregkh drivers/staging ASAP. I'd like
Venkat to concentrate on fixing the remaining suspend/resume issues.

Description:
brcmfmac: Fix suspend/resume

Change-Id: I0754b3c54e90aa6808c052c9ff19ba1409e2bb24
Signed-off-by: Venkat Rao <vr...@broadcom.com>
Signed-off-by: Grant Grundler <grun...@chromium.org>

BUG=none
TEST=built/booted on tegra2_seabord. WIFI suspend/resume doesn't panic.

Please review this at http://codereview.chromium.org/6488018/

SVN Base: ssh://g...@gitrw.chromium.org:9222/kernel-...@chromeos-2.6.37

Affected files:
M drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
M drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c


Index: drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
diff --git a/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
b/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
index
4409443c69de8b5188a13bd0c189158e25a3b610..9282d8b1eb157a52e46a1c9f909540a4accfa3b8
100644
--- a/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
+++ b/drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
@@ -69,6 +69,14 @@ DHD_PM_RESUME_WAIT_INIT(sdioh_request_buffer_wait);
int sdioh_sdmmc_card_regread(sdioh_info_t *sd, int func, u32 regaddr,
int regsize, u32 *data);

+void sdioh_sdio_set_host_pm_flags(int flag)
+{
+ int err = sdio_set_host_pm_flags(gInstance->func[1], flag);
+ if (err)
+ printk(KERN_ERR "%s: Failed to set pm_flags 0x%08x (err=%d)\n",
+ __func__, flag, err);
+}
+
static int sdioh_sdmmc_card_enablefuncs(sdioh_info_t *sd)
{
int err_ret;
Index: drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
diff --git a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
index
86c18be7d64e8152d855aa2662683272f0050cd9..375e378c0be7da88acec8232127f3bf455027c7b
100644
--- a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
+++ b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
@@ -40,6 +40,8 @@
#include <linux/firmware.h>
#include <wl_cfg80211.h>

+void sdioh_sdio_set_host_pm_flags(int flag);
+
static struct sdio_func *cfg80211_sdio_func;
static struct wl_dev *wl_cfg80211_dev;
static const u8 ether_bcast[ETH_ALEN] = {255, 255, 255, 255, 255, 255};
@@ -1978,8 +1980,6 @@ static s32 wl_cfg80211_suspend(struct wiphy *wiphy)
struct net_device *ndev = wl_to_ndev(wl);
s32 err = 0;

- CHECK_SYS_UP();
-
set_bit(WL_STATUS_SCAN_ABORTING, &wl->status);
wl_term_iscan(wl);
if (wl->scan_request) {
@@ -1991,6 +1991,8 @@ static s32 wl_cfg80211_suspend(struct wiphy *wiphy)
clear_bit(WL_STATUS_SCANNING, &wl->status);
clear_bit(WL_STATUS_SCAN_ABORTING, &wl->status);

+ sdioh_sdio_set_host_pm_flags(MMC_PM_KEEP_POWER);
+
return err;
}

Reply all
Reply to author
Forward
0 new messages