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

Configure Feed

Select the types of activity you want to include in your feed.

Bluetooth: hci_ll: Enable BROKEN_ENHANCED_SETUP_SYNC_CONN for WL183x

TI WL183x controllers advertise support for the HCI Enhanced Setup
Synchronous Connection command, but SCO setup fails when the enhanced
path is used. The only working configuration is to fall back to the
legacy HCI Setup Synchronous Connection (0x0028).

This matches the scenario described in commit 05abad857277
("Bluetooth: HCI: Add HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN quirk").

Enable HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN automatically for
devices compatible with:
- ti,wl1831-st
- ti,wl1835-st
- ti,wl1837-st

Signed-off-by: Stefano Radaelli <stefano.r@variscite.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

authored by

Stefano Radaelli and committed by
Luiz Augusto von Dentz
1c0bc11c 5e17010b

+10
+10
drivers/bluetooth/hci_ll.c
··· 68 68 struct gpio_desc *enable_gpio; 69 69 struct clk *ext_clk; 70 70 bdaddr_t bdaddr; 71 + bool broken_enhanced_setup; 71 72 }; 72 73 73 74 struct ll_struct { ··· 659 658 hci_set_quirk(hu->hdev, HCI_QUIRK_INVALID_BDADDR); 660 659 } 661 660 661 + if (lldev->broken_enhanced_setup) 662 + hci_set_quirk(hu->hdev, 663 + HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN); 664 + 662 665 /* Operational speed if any */ 663 666 if (hu->oper_speed) 664 667 speed = hu->oper_speed; ··· 716 711 717 712 of_property_read_u32(serdev->dev.of_node, "max-speed", &max_speed); 718 713 hci_uart_set_speeds(hu, 115200, max_speed); 714 + 715 + if (of_device_is_compatible(serdev->dev.of_node, "ti,wl1831-st") || 716 + of_device_is_compatible(serdev->dev.of_node, "ti,wl1835-st") || 717 + of_device_is_compatible(serdev->dev.of_node, "ti,wl1837-st")) 718 + lldev->broken_enhanced_setup = true; 719 719 720 720 /* optional BD address from nvram */ 721 721 bdaddr_cell = nvmem_cell_get(&serdev->dev, "bd-address");