{
        u32 *cookie_addr;
        struct pcie_service_card *card = adapter->card;
+       const struct mwifiex_pcie_card_reg *reg = card->pcie.reg;
+
+       if (!reg->sleep_cookie)
+               return true;
 
        if (card->sleep_cookie_vbase) {
                cookie_addr = (u32 *)card->sleep_cookie_vbase;
 static int mwifiex_pm_wakeup_card(struct mwifiex_adapter *adapter)
 {
        int i = 0;
+       struct pcie_service_card *card = adapter->card;
+       const struct mwifiex_pcie_card_reg *reg = card->pcie.reg;
 
-       while (mwifiex_pcie_ok_to_access_hw(adapter)) {
+       while (reg->sleep_cookie && mwifiex_pcie_ok_to_access_hw(adapter)) {
                i++;
                usleep_range(10, 20);
                /* 50ms max wait */
                if (adapter->ps_state == PS_STATE_SLEEP_CFM) {
                        mwifiex_process_sleep_confirm_resp(adapter, skb->data,
                                                           skb->len);
-                       while (mwifiex_pcie_ok_to_access_hw(adapter) &&
-                                                       (count++ < 10))
+                       while (reg->sleep_cookie && (count++ < 10) &&
+                              mwifiex_pcie_ok_to_access_hw(adapter))
                                usleep_range(50, 60);
                } else {
                        dev_err(adapter->dev,
        struct pcie_service_card *card = adapter->card;
        int ret;
        struct pci_dev *pdev = card->dev;
+       const struct mwifiex_pcie_card_reg *reg = card->pcie.reg;
 
        pci_set_drvdata(pdev, card);
 
        ret = mwifiex_pcie_alloc_cmdrsp_buf(adapter);
        if (ret)
                goto err_alloc_cmdbuf;
-       ret = mwifiex_pcie_alloc_sleep_cookie_buf(adapter);
-       if (ret)
-               goto err_alloc_cookie;
-
+       if (reg->sleep_cookie) {
+               ret = mwifiex_pcie_alloc_sleep_cookie_buf(adapter);
+               if (ret)
+                       goto err_alloc_cookie;
+       } else {
+               card->sleep_cookie_vbase = NULL;
+       }
        return ret;
 
 err_alloc_cookie:
 static void mwifiex_unregister_dev(struct mwifiex_adapter *adapter)
 {
        struct pcie_service_card *card = adapter->card;
+       const struct mwifiex_pcie_card_reg *reg;
 
        if (card) {
                dev_dbg(adapter->dev, "%s(): calling free_irq()\n", __func__);
                free_irq(card->dev->irq, card->dev);
 
-               mwifiex_pcie_delete_sleep_cookie_buf(adapter);
+               reg = card->pcie.reg;
+               if (reg->sleep_cookie)
+                       mwifiex_pcie_delete_sleep_cookie_buf(adapter);
+
                mwifiex_pcie_delete_cmdrsp_buf(adapter);
                mwifiex_pcie_delete_evtbd_ring(adapter);
                mwifiex_pcie_delete_rxbd_ring(adapter);