Commit 4b127bd5 authored by Alain Michaud's avatar Alain Michaud Committed by Marcel Holtmann
Browse files

Bluetooth: Support querying for WBS support through MGMT



This patch provides a mechanism for MGMT interface client to query the
capability of the controller to support WBS.

Signed-off-by: default avatarAlain Michaud <alainm@chromium.org>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 3e4e3f73
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -3867,6 +3867,9 @@ static int btusb_probe(struct usb_interface *intf,
	if (id->driver_info & BTUSB_BROKEN_ISOC)
		data->isoc = NULL;

	if (id->driver_info & BTUSB_WIDEBAND_SPEECH)
		set_bit(HCI_QUIRK_WIDE_BAND_SPEECH_SUPPORTED, &hdev->quirks);

	if (id->driver_info & BTUSB_DIGIANSWER) {
		data->cmdreq_type = USB_TYPE_VENDOR;
		set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
+9 −0
Original line number Diff line number Diff line
@@ -205,6 +205,15 @@ enum {
	 *
	 */
	HCI_QUIRK_NON_PERSISTENT_SETUP,

	/* When this quirk is set, wide band speech is supported by
	 * the driver since no reliable mechanism exist to report
	 * this from the hardware, a driver flag is use to convey
	 * this support
	 *
	 * This quirk must be set before hci_register_dev is called.
	 */
	HCI_QUIRK_WIDE_BAND_SPEECH_SUPPORTED,
};

/* HCI device flags */
+2 −1
Original line number Diff line number Diff line
@@ -102,6 +102,7 @@ struct mgmt_rp_read_index_list {
#define MGMT_SETTING_CONFIGURATION	0x00004000
#define MGMT_SETTING_STATIC_ADDRESS	0x00008000
#define MGMT_SETTING_PHY_CONFIGURATION	0x00010000
#define MGMT_SETTING_WIDE_BAND_SPEECH	0x00020000

#define MGMT_OP_READ_INFO		0x0004
#define MGMT_READ_INFO_SIZE		0
+4 −0
Original line number Diff line number Diff line
@@ -762,6 +762,10 @@ static u32 get_supported_settings(struct hci_dev *hdev)

		if (lmp_sc_capable(hdev))
			settings |= MGMT_SETTING_SECURE_CONN;

		if (test_bit(HCI_QUIRK_WIDE_BAND_SPEECH_SUPPORTED,
			     &hdev->quirks))
			settings |= MGMT_SETTING_WIDE_BAND_SPEECH;
	}

	if (lmp_le_capable(hdev)) {