diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2015-10-04 23:34:02 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2015-10-05 09:30:25 +0200 |
commit | e9ca8bf157f2b45f8f670517c96da313083ee9b2 (patch) | |
tree | 7aaa31766e0af85588a84f0d06d65d5b77375f7b /drivers/bluetooth/btsdio.c | |
parent | Bluetooth: Move HCI_RUNNING check into hci_send_frame (diff) | |
download | linux-e9ca8bf157f2b45f8f670517c96da313083ee9b2.tar.xz linux-e9ca8bf157f2b45f8f670517c96da313083ee9b2.zip |
Bluetooth: Move handling of HCI_RUNNING flag into core
Setting and clearing of HCI_RUNNING flag in each and every driver is
just duplicating the same code all over the place. So instead of having
the driver do it in their hdev->open and hdev->close callbacks, set it
globally in the core transport handling.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Diffstat (limited to 'drivers/bluetooth/btsdio.c')
-rw-r--r-- | drivers/bluetooth/btsdio.c | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/drivers/bluetooth/btsdio.c b/drivers/bluetooth/btsdio.c index 21f99cc8c669..7b624423a7e8 100644 --- a/drivers/bluetooth/btsdio.c +++ b/drivers/bluetooth/btsdio.c @@ -194,21 +194,15 @@ static int btsdio_open(struct hci_dev *hdev) BT_DBG("%s", hdev->name); - if (test_and_set_bit(HCI_RUNNING, &hdev->flags)) - return 0; - sdio_claim_host(data->func); err = sdio_enable_func(data->func); - if (err < 0) { - clear_bit(HCI_RUNNING, &hdev->flags); + if (err < 0) goto release; - } err = sdio_claim_irq(data->func, btsdio_interrupt); if (err < 0) { sdio_disable_func(data->func); - clear_bit(HCI_RUNNING, &hdev->flags); goto release; } @@ -229,9 +223,6 @@ static int btsdio_close(struct hci_dev *hdev) BT_DBG("%s", hdev->name); - if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags)) - return 0; - sdio_claim_host(data->func); sdio_writeb(data->func, 0x00, REG_EN_INTRD, NULL); |