To prevent Bluetooth SDIO card from be physically removed suddenly,
driver needs to ensure btmtksdio_close is called before
btmtksdio_remove to disable interrupts and txrx workqueue.
Fixes: 6ac4233afb9a ("Bluetooth: btmtksdio: Prevent enabling interrupts after IRQ handler removal")
Signed-off-by: Chris Lu <chris.lu@mediatek.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
        if (!bdev)
                return;
 
+       hdev = bdev->hdev;
+
+       /* Make sure to call btmtksdio_close before removing sdio card */
+       if (test_bit(BTMTKSDIO_FUNC_ENABLED, &bdev->tx_state))
+               btmtksdio_close(hdev);
+
        /* Be consistent the state in btmtksdio_probe */
        pm_runtime_get_noresume(bdev->dev);
 
-       hdev = bdev->hdev;
-
        sdio_set_drvdata(func, NULL);
        hci_unregister_dev(hdev);
        hci_free_dev(hdev);