Bluetooth: Use delayed init for Three-wire UART
authorJohan Hedberg <johan.hedberg@intel.com>
Mon, 16 Jul 2012 13:12:12 +0000 (16:12 +0300)
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>
Tue, 17 Jul 2012 17:48:30 +0000 (14:48 -0300)
This patch takes into use the delayed initialization feature that the
Bluetooth UART framework provides.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
drivers/bluetooth/hci_h5.c

index 022a6bcb432307aaa8c033accb0b6d55315647f9..3c0e17b4602d70b69e6dbe5d1b55d864c88a1c92 100644 (file)
@@ -138,6 +138,8 @@ static int h5_open(struct hci_uart *hu)
        h5->timer.function = h5_timed_event;
        h5->timer.data = (unsigned long) hu;
 
+       set_bit(HCI_UART_INIT_PENDING, &hu->hdev_flags);
+
        /* Send initial sync request */
        h5_link_control(hu, sync, sizeof(sync));
        mod_timer(&h5->timer, jiffies + H5_SYNC_TIMEOUT);
@@ -229,6 +231,7 @@ static void h5_handle_internal_rx(struct hci_uart *hu)
                h5_link_control(hu, conf_req, 3);
        } else if (memcmp(data, conf_rsp, 2) == 0) {
                BT_DBG("Three-wire init sequence complete");
+               hci_uart_init_ready(hu);
                return;
        } else {
                BT_DBG("Link Control: 0x%02hhx 0x%02hhx", data[0], data[1]);