Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Bluetooth: btbcm: Make btbcm_setup_patchram use btbcm_finalize

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>

authored by

Hans de Goede and committed by
Marcel Holtmann
0383f16a 2fcdd562

+11 -22
+8 -19
drivers/bluetooth/btbcm.c
··· 502 502 } 503 503 EXPORT_SYMBOL_GPL(btbcm_initialize); 504 504 505 - int btbcm_finalize(struct hci_dev *hdev) 505 + int btbcm_finalize(struct hci_dev *hdev, bool *fw_load_done) 506 506 { 507 - bool fw_load_done = true; 508 507 int err; 509 508 510 - /* Re-initialize */ 511 - err = btbcm_initialize(hdev, &fw_load_done); 512 - if (err) 513 - return err; 509 + /* Re-initialize if necessary */ 510 + if (*fw_load_done) { 511 + err = btbcm_initialize(hdev, fw_load_done); 512 + if (err) 513 + return err; 514 + } 514 515 515 516 btbcm_check_bdaddr(hdev); 516 517 ··· 531 530 if (err) 532 531 return err; 533 532 534 - if (!fw_load_done) 535 - goto done; 536 - 537 533 /* Re-initialize after loading Patch */ 538 - err = btbcm_initialize(hdev, &fw_load_done); 539 - if (err) 540 - return err; 541 - 542 - done: 543 - btbcm_check_bdaddr(hdev); 544 - 545 - set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); 546 - 547 - return 0; 534 + return btbcm_finalize(hdev, &fw_load_done); 548 535 } 549 536 EXPORT_SYMBOL_GPL(btbcm_setup_patchram); 550 537
+2 -2
drivers/bluetooth/btbcm.h
··· 63 63 int btbcm_setup_apple(struct hci_dev *hdev); 64 64 65 65 int btbcm_initialize(struct hci_dev *hdev, bool *fw_load_done); 66 - int btbcm_finalize(struct hci_dev *hdev); 66 + int btbcm_finalize(struct hci_dev *hdev, bool *fw_load_done); 67 67 68 68 #else 69 69 ··· 109 109 return 0; 110 110 } 111 111 112 - static inline int btbcm_finalize(struct hci_dev *hdev) 112 + static inline int btbcm_finalize(struct hci_dev *hdev, bool *fw_load_done) 113 113 { 114 114 return 0; 115 115 }
+1 -1
drivers/bluetooth/hci_bcm.c
··· 606 606 btbcm_write_pcm_int_params(hu->hdev, &params); 607 607 } 608 608 609 - err = btbcm_finalize(hu->hdev); 609 + err = btbcm_finalize(hu->hdev, &fw_load_done); 610 610 if (err) 611 611 return err; 612 612