mwifiex: add support for sleep cookie in PCIe
This patch adds support to read sleep cookie for command response before accessing buffer. Signed-off-by: Avinash Patil <patila@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
cc5c1afb1e
commit
c4bc980f1b
|
@ -327,6 +327,30 @@ static void mwifiex_pcie_dev_wakeup_delay(struct mwifiex_adapter *adapter)
|
|||
return;
|
||||
}
|
||||
|
||||
static void mwifiex_delay_for_sleep_cookie(struct mwifiex_adapter *adapter,
|
||||
u32 max_delay_loop_cnt)
|
||||
{
|
||||
struct pcie_service_card *card = adapter->card;
|
||||
u8 *buffer;
|
||||
u32 sleep_cookie, count;
|
||||
|
||||
for (count = 0; count < max_delay_loop_cnt; count++) {
|
||||
buffer = card->cmdrsp_buf->data - INTF_HEADER_LEN;
|
||||
sleep_cookie = *(u32 *)buffer;
|
||||
|
||||
if (sleep_cookie == MWIFIEX_DEF_SLEEP_COOKIE) {
|
||||
dev_dbg(adapter->dev,
|
||||
"sleep cookie found at count %d\n", count);
|
||||
break;
|
||||
}
|
||||
usleep_range(20, 30);
|
||||
}
|
||||
|
||||
if (count >= max_delay_loop_cnt)
|
||||
dev_dbg(adapter->dev,
|
||||
"max count reached while accessing sleep cookie\n");
|
||||
}
|
||||
|
||||
/* This function wakes up the card by reading fw_status register. */
|
||||
static int mwifiex_pm_wakeup_card(struct mwifiex_adapter *adapter)
|
||||
{
|
||||
|
@ -1539,6 +1563,8 @@ static int mwifiex_pcie_process_cmd_complete(struct mwifiex_adapter *adapter)
|
|||
"Write register failed\n");
|
||||
return -1;
|
||||
}
|
||||
mwifiex_delay_for_sleep_cookie(adapter,
|
||||
MWIFIEX_MAX_DELAY_COUNT);
|
||||
while (reg->sleep_cookie && (count++ < 10) &&
|
||||
mwifiex_pcie_ok_to_access_hw(adapter))
|
||||
usleep_range(50, 60);
|
||||
|
|
|
@ -97,6 +97,8 @@
|
|||
#define MWIFIEX_PCIE_BLOCK_SIZE_FW_DNLD 256
|
||||
/* FW awake cookie after FW ready */
|
||||
#define FW_AWAKE_COOKIE (0xAA55AA55)
|
||||
#define MWIFIEX_DEF_SLEEP_COOKIE 0xBEEFBEEF
|
||||
#define MWIFIEX_MAX_DELAY_COUNT 5
|
||||
|
||||
struct mwifiex_pcie_card_reg {
|
||||
u16 cmd_addr_lo;
|
||||
|
|
Loading…
Reference in New Issue