|
@@ -284,10 +284,14 @@ int hci_uart_register_device(struct hci_uart *hu,
|
|
|
|
|
|
serdev_device_set_client_ops(hu->serdev, &hci_serdev_client_ops);
|
|
serdev_device_set_client_ops(hu->serdev, &hci_serdev_client_ops);
|
|
|
|
|
|
- err = p->open(hu);
|
|
|
|
|
|
+ err = serdev_device_open(hu->serdev);
|
|
if (err)
|
|
if (err)
|
|
return err;
|
|
return err;
|
|
|
|
|
|
|
|
+ err = p->open(hu);
|
|
|
|
+ if (err)
|
|
|
|
+ goto err_open;
|
|
|
|
+
|
|
hu->proto = p;
|
|
hu->proto = p;
|
|
set_bit(HCI_UART_PROTO_READY, &hu->flags);
|
|
set_bit(HCI_UART_PROTO_READY, &hu->flags);
|
|
|
|
|
|
@@ -353,6 +357,8 @@ err_register:
|
|
err_alloc:
|
|
err_alloc:
|
|
clear_bit(HCI_UART_PROTO_READY, &hu->flags);
|
|
clear_bit(HCI_UART_PROTO_READY, &hu->flags);
|
|
p->close(hu);
|
|
p->close(hu);
|
|
|
|
+err_open:
|
|
|
|
+ serdev_device_close(hu->serdev);
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(hci_uart_register_device);
|
|
EXPORT_SYMBOL_GPL(hci_uart_register_device);
|
|
@@ -367,5 +373,6 @@ void hci_uart_unregister_device(struct hci_uart *hu)
|
|
cancel_work_sync(&hu->write_work);
|
|
cancel_work_sync(&hu->write_work);
|
|
|
|
|
|
hu->proto->close(hu);
|
|
hu->proto->close(hu);
|
|
|
|
+ serdev_device_close(hu->serdev);
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(hci_uart_unregister_device);
|
|
EXPORT_SYMBOL_GPL(hci_uart_unregister_device);
|