Bluetooth: btbcm: Make btbcm_setup_patchram use btbcm_finalize
authorHans de Goede <hdegoede@redhat.com>
Fri, 17 Apr 2020 17:15:29 +0000 (19:15 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 22 Apr 2020 17:43:58 +0000 (19:43 +0200)
On UART attached devices we do:

1. btbcm_initialize()
2. Setup UART baudrate, etc.
3. btbcm_finalize()

After our previous changes we can now also use btbcm_finalize() from
the btbcm_setup_patchram() function used on USB devices without any
functional changes. This completes unifying the USB and UART paths
as much as possible.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/bluetooth/btbcm.c
drivers/bluetooth/btbcm.h
drivers/bluetooth/hci_bcm.c

index 3404021..cc3628c 100644 (file)
@@ -502,15 +502,16 @@ int btbcm_initialize(struct hci_dev *hdev, bool *fw_load_done)
 }
 EXPORT_SYMBOL_GPL(btbcm_initialize);
 
-int btbcm_finalize(struct hci_dev *hdev)
+int btbcm_finalize(struct hci_dev *hdev, bool *fw_load_done)
 {
-       bool fw_load_done = true;
        int err;
 
-       /* Re-initialize */
-       err = btbcm_initialize(hdev, &fw_load_done);
-       if (err)
-               return err;
+       /* Re-initialize if necessary */
+       if (*fw_load_done) {
+               err = btbcm_initialize(hdev, fw_load_done);
+               if (err)
+                       return err;
+       }
 
        btbcm_check_bdaddr(hdev);
 
@@ -530,20 +531,8 @@ int btbcm_setup_patchram(struct hci_dev *hdev)
        if (err)
                return err;
 
-       if (!fw_load_done)
-               goto done;
-
        /* Re-initialize after loading Patch */
-       err = btbcm_initialize(hdev, &fw_load_done);
-       if (err)
-               return err;
-
-done:
-       btbcm_check_bdaddr(hdev);
-
-       set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);
-
-       return 0;
+       return btbcm_finalize(hdev, &fw_load_done);
 }
 EXPORT_SYMBOL_GPL(btbcm_setup_patchram);
 
index 8437cab..8bf0156 100644 (file)
@@ -63,7 +63,7 @@ int btbcm_setup_patchram(struct hci_dev *hdev);
 int btbcm_setup_apple(struct hci_dev *hdev);
 
 int btbcm_initialize(struct hci_dev *hdev, bool *fw_load_done);
-int btbcm_finalize(struct hci_dev *hdev);
+int btbcm_finalize(struct hci_dev *hdev, bool *fw_load_done);
 
 #else
 
@@ -109,7 +109,7 @@ static inline int btbcm_initialize(struct hci_dev *hdev, bool *fw_load_done)
        return 0;
 }
 
-static inline int btbcm_finalize(struct hci_dev *hdev)
+static inline int btbcm_finalize(struct hci_dev *hdev, bool *fw_load_done)
 {
        return 0;
 }
index 61731cb..8ea5ca8 100644 (file)
@@ -606,7 +606,7 @@ static int bcm_setup(struct hci_uart *hu)
                btbcm_write_pcm_int_params(hu->hdev, &params);
        }
 
-       err = btbcm_finalize(hu->hdev);
+       err = btbcm_finalize(hu->hdev, &fw_load_done);
        if (err)
                return err;