Merge tag 'mtd/for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux
[linux-2.6-block.git] / drivers / bluetooth / hci_qca.c
index 31dec435767be3757adcfeadad1ce2cfbcad620a..e3164c200eac5ae0ebd84a6e69b1ec14adeafea9 100644 (file)
@@ -504,26 +504,7 @@ static int qca_open(struct hci_uart *hu)
        qca->tx_ibs_state = HCI_IBS_TX_ASLEEP;
        qca->rx_ibs_state = HCI_IBS_RX_ASLEEP;
 
-       /* clocks actually on, but we start votes off */
-       qca->tx_vote = false;
-       qca->rx_vote = false;
-       qca->flags = 0;
-
-       qca->ibs_sent_wacks = 0;
-       qca->ibs_sent_slps = 0;
-       qca->ibs_sent_wakes = 0;
-       qca->ibs_recv_wacks = 0;
-       qca->ibs_recv_slps = 0;
-       qca->ibs_recv_wakes = 0;
        qca->vote_last_jif = jiffies;
-       qca->vote_on_ms = 0;
-       qca->vote_off_ms = 0;
-       qca->votes_on = 0;
-       qca->votes_off = 0;
-       qca->tx_votes_on = 0;
-       qca->tx_votes_off = 0;
-       qca->rx_votes_on = 0;
-       qca->rx_votes_off = 0;
 
        hu->priv = qca;
 
@@ -1263,6 +1244,11 @@ static int qca_setup(struct hci_uart *hu)
        /* Patch downloading has to be done without IBS mode */
        clear_bit(QCA_IBS_ENABLED, &qca->flags);
 
+       /* Enable controller to do both LE scan and BR/EDR inquiry
+        * simultaneously.
+        */
+       set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
+
        if (qca_is_wcn399x(soc_type)) {
                bt_dev_info(hdev, "setting up wcn3990");
 
@@ -1328,7 +1314,7 @@ static int qca_setup(struct hci_uart *hu)
        return ret;
 }
 
-static struct hci_uart_proto qca_proto = {
+static const struct hci_uart_proto qca_proto = {
        .id             = HCI_UART_QCA,
        .name           = "QCA",
        .manufacturer   = 29,
@@ -1391,6 +1377,8 @@ static int qca_power_off(struct hci_dev *hdev)
        /* Perform pre shutdown command */
        qca_send_pre_shutdown_cmd(hdev);
 
+       usleep_range(8000, 10000);
+
        qca_power_shutdown(hu);
        return 0;
 }