return 0;
 }
 
-static bool btmrvl_prevent_wake(struct hci_dev *hdev)
+static bool btmrvl_wakeup(struct hci_dev *hdev)
 {
        struct btmrvl_private *priv = hci_get_drvdata(hdev);
        struct btmrvl_sdio_card *card = priv->btmrvl_dev.card;
 
-       return !device_may_wakeup(&card->func->dev);
+       return device_may_wakeup(&card->func->dev);
 }
 
 /*
        hdev->send  = btmrvl_send_frame;
        hdev->setup = btmrvl_setup;
        hdev->set_bdaddr = btmrvl_set_bdaddr;
-       hdev->prevent_wake = btmrvl_prevent_wake;
+       hdev->wakeup = btmrvl_wakeup;
        SET_HCIDEV_DEV(hdev, &card->func->dev);
 
        hdev->dev_type = priv->btmrvl_dev.dev_type;
 
                interface_to_usbdev(intf)->quirks |= USB_QUIRK_RESET_RESUME;
 }
 
-static bool btusb_prevent_wake(struct hci_dev *hdev)
+static bool btusb_wakeup(struct hci_dev *hdev)
 {
        struct btusb_data *data = hci_get_drvdata(hdev);
 
-       return !device_may_wakeup(&data->udev->dev);
+       return device_may_wakeup(&data->udev->dev);
 }
 
 static int btusb_shutdown_qca(struct hci_dev *hdev)
        hdev->flush  = btusb_flush;
        hdev->send   = btusb_send_frame;
        hdev->notify = btusb_notify;
-       hdev->prevent_wake = btusb_prevent_wake;
+       hdev->wakeup = btusb_wakeup;
 
 #ifdef CONFIG_PM
        err = btusb_config_oob_wake(hdev);
 
        mutex_unlock(&qca->hci_memdump_lock);
 }
 
-static bool qca_prevent_wake(struct hci_dev *hdev)
+static bool qca_wakeup(struct hci_dev *hdev)
 {
        struct hci_uart *hu = hci_get_drvdata(hdev);
        bool wakeup;
                qca_debugfs_init(hdev);
                hu->hdev->hw_error = qca_hw_error;
                hu->hdev->cmd_timeout = qca_cmd_timeout;
-               hu->hdev->prevent_wake = qca_prevent_wake;
+               hu->hdev->wakeup = qca_wakeup;
        } else if (ret == -ENOENT) {
                /* No patch/nvm-config found, run with original fw/config */
                set_bit(QCA_ROM_FW, &qca->flags);
 
        struct delayed_work open_timeout;
 
        bool suspended;
-       bool prevent_wake;
+       bool wakeup;
 };
 
 static int vhci_open_dev(struct hci_dev *hdev)
        return 0;
 }
 
-static bool vhci_prevent_wake(struct hci_dev *hdev)
+static bool vhci_wakeup(struct hci_dev *hdev)
 {
        struct vhci_data *data = hci_get_drvdata(hdev);
 
-       return data->prevent_wake;
+       return data->wakeup;
 }
 
 static ssize_t force_suspend_read(struct file *file, char __user *user_buf,
        .llseek         = default_llseek,
 };
 
-static ssize_t force_prevent_wake_read(struct file *file, char __user *user_buf,
-                                      size_t count, loff_t *ppos)
+static ssize_t force_wakeup_read(struct file *file, char __user *user_buf,
+                                size_t count, loff_t *ppos)
 {
        struct vhci_data *data = file->private_data;
        char buf[3];
 
-       buf[0] = data->prevent_wake ? 'Y' : 'N';
+       buf[0] = data->wakeup ? 'Y' : 'N';
        buf[1] = '\n';
        buf[2] = '\0';
        return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
 }
 
-static ssize_t force_prevent_wake_write(struct file *file,
-                                       const char __user *user_buf,
-                                       size_t count, loff_t *ppos)
+static ssize_t force_wakeup_write(struct file *file,
+                                 const char __user *user_buf, size_t count,
+                                 loff_t *ppos)
 {
        struct vhci_data *data = file->private_data;
        bool enable;
        if (err)
                return err;
 
-       if (data->prevent_wake == enable)
+       if (data->wakeup == enable)
                return -EALREADY;
 
        return count;
 }
 
-static const struct file_operations force_prevent_wake_fops = {
+static const struct file_operations force_wakeup_fops = {
        .open           = simple_open,
-       .read           = force_prevent_wake_read,
-       .write          = force_prevent_wake_write,
+       .read           = force_wakeup_read,
+       .write          = force_wakeup_write,
        .llseek         = default_llseek,
 };
 
        hdev->send  = vhci_send_frame;
        hdev->get_data_path_id = vhci_get_data_path_id;
        hdev->get_codec_config_data = vhci_get_codec_config_data;
-       hdev->prevent_wake = vhci_prevent_wake;
+       hdev->wakeup = vhci_wakeup;
 
        /* bit 6 is for external configuration */
        if (opcode & 0x40)
        debugfs_create_file("force_suspend", 0644, hdev->debugfs, data,
                            &force_suspend_fops);
 
-       debugfs_create_file("force_prevent_wake", 0644, hdev->debugfs, data,
-                           &force_prevent_wake_fops);
+       debugfs_create_file("force_wakeup", 0644, hdev->debugfs, data,
+                           &force_wakeup_fops);
 
        hci_skb_pkt_type(skb) = HCI_VENDOR_PKT;
 
 
        int (*set_diag)(struct hci_dev *hdev, bool enable);
        int (*set_bdaddr)(struct hci_dev *hdev, const bdaddr_t *bdaddr);
        void (*cmd_timeout)(struct hci_dev *hdev);
-       bool (*prevent_wake)(struct hci_dev *hdev);
+       bool (*wakeup)(struct hci_dev *hdev);
        int (*set_quality_report)(struct hci_dev *hdev, bool enable);
        int (*get_data_path_id)(struct hci_dev *hdev, __u8 *data_path);
        int (*get_codec_config_data)(struct hci_dev *hdev, __u8 type,
 
         *  - Second, program event filter/accept list and enable scan
         */
        ret = hci_change_suspend_state(hdev, BT_SUSPEND_DISCONNECT);
-       if (!ret)
-               state = BT_SUSPEND_DISCONNECT;
+       if (ret)
+               goto clear;
 
-       /* Only configure accept list if disconnect succeeded and wake
-        * isn't being prevented.
-        */
-       if (!ret && !(hdev->prevent_wake && hdev->prevent_wake(hdev))) {
+       state = BT_SUSPEND_DISCONNECT;
+
+       /* Only configure accept list if device may wakeup. */
+       if (hdev->wakeup && hdev->wakeup(hdev)) {
                ret = hci_change_suspend_state(hdev, BT_SUSPEND_CONFIGURE_WAKE);
                if (!ret)
                        state = BT_SUSPEND_CONFIGURE_WAKE;
        }
 
+clear:
        hci_clear_wake_reason(hdev);
        mgmt_suspending(hdev, state);