aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth/hci_bcm.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2018-05-27 21:04:52 +0200
committerMarcel Holtmann <marcel@holtmann.org>2018-05-30 08:47:42 +0200
commite9ca08074ddcdcc3abacbfca888dba3a110e4453 (patch)
tree8f7a3c087c647e3600d5b62bc98b15786e60e0bd /drivers/bluetooth/hci_bcm.c
parentBluetooth: hci_uart: Restore hci_dev->flush callback on open() (diff)
downloadlinux-dev-e9ca08074ddcdcc3abacbfca888dba3a110e4453.tar.xz
linux-dev-e9ca08074ddcdcc3abacbfca888dba3a110e4453.zip
Bluetooth: hci_serdev: Move serdev_device_close/open into common hci_serdev code
Make hci_uart_register_device() and hci_uart_unregister_device() call serdev_device_close()/open() themselves instead of relying on the various hci_uart drivers to do this for them. Besides reducing code complexity, this also ensures correct error checking of serdev_device_open(), which was missing in a few drivers. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'drivers/bluetooth/hci_bcm.c')
-rw-r--r--drivers/bluetooth/hci_bcm.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
index f06f0f1132fb..ddbd8c6a0ceb 100644
--- a/drivers/bluetooth/hci_bcm.c
+++ b/drivers/bluetooth/hci_bcm.c
@@ -380,10 +380,6 @@ static int bcm_open(struct hci_uart *hu)
mutex_lock(&bcm_device_lock);
if (hu->serdev) {
- err = serdev_device_open(hu->serdev);
- if (err)
- goto err_free;
-
bcm->dev = serdev_device_get_drvdata(hu->serdev);
goto out;
}
@@ -420,13 +416,10 @@ out:
return 0;
err_unset_hu:
- if (hu->serdev)
- serdev_device_close(hu->serdev);
#ifdef CONFIG_PM
- else
+ if (!hu->serdev)
bcm->dev->hu = NULL;
#endif
-err_free:
mutex_unlock(&bcm_device_lock);
hu->priv = NULL;
kfree(bcm);
@@ -445,7 +438,6 @@ static int bcm_close(struct hci_uart *hu)
mutex_lock(&bcm_device_lock);
if (hu->serdev) {
- serdev_device_close(hu->serdev);
bdev = serdev_device_get_drvdata(hu->serdev);
} else if (bcm_device_exists(bcm->dev)) {
bdev = bcm->dev;