pm_runtime_disable(bdev->dev);
                pm_runtime_set_suspended(bdev->dev);
 
-               if (device_can_wakeup(bdev->dev)) {
+               if (bdev->irq > 0) {
                        devm_free_irq(bdev->dev, bdev->irq, bdev);
                        device_init_wakeup(bdev->dev, false);
                }
        if (pm_runtime_active(dev))
                bcm_suspend_device(dev);
 
-       if (device_may_wakeup(dev)) {
+       if (device_may_wakeup(dev) && bdev->irq > 0) {
                error = enable_irq_wake(bdev->irq);
                if (!error)
                        bt_dev_dbg(bdev, "BCM irq: enabled");
        if (!bdev->hu)
                goto unlock;
 
-       if (device_may_wakeup(dev)) {
+       if (device_may_wakeup(dev) && bdev->irq > 0) {
                disable_irq_wake(bdev->irq);
                bt_dev_dbg(bdev, "BCM irq: disabled");
        }