Skip to contentSkip to conversation

Bluetooth: btusb: Apply Intel device configuration routine

PATCH In review Tedd Ho-Jeong An 2 participants 4 messages May 8, 2015 – May 12, 2015 Bluetooth drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Bluetooth: btusb: Apply Intel device configuration routine

From: Tedd Ho-Jeong An <[email protected]>

This patch adds support to apply the device configuration parameters (DDC) after firwmare downloading on Intel 8265 device.

This is optional configuration parameters and good to have. So, even if it fails to apply it, it is not necessary to fail the setup.

The file format is same as previous firmware patch (.bseq) and this is only applicable to Intel 8265 device.

---
 drivers/bluetooth/btusb.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
drivers/bluetooth/btusb.c +34 -0
index d21f3b4..27cd2bf 100644
@@ -2644,6 +2644,40 @@ done:
 
 	clear_bit(BTUSB_BOOTLOADER, &data->flags);
 
+	/* Once the device is running in operational mode, it needs to apply
+	 * the configuration parameters to the device.
+	 */
+	snprintf(fwname, sizeof(fwname), "intel/ibt-11.bseq");
+
+	/* Device can work without this configuration so even if it fails
+	 * to load the file, no need to fail the setup
+	 */
+	err = request_firmware_direct(&fw, fwname, &hdev->dev);
+	if (err < 0) {
+		BT_INFO("%s: WARNING: unable to load configuration file (%d)",
+			hdev->name, err);
+		return 0;
+	}
+
+	BT_INFO("%s: Found device configuration file: %s", hdev->name, fwname);
+
+	fw_ptr = fw->data;
+	while (fw->size > fw_ptr - fw->data) {
+		int ignore;
+
+		err = btusb_setup_intel_patching(hdev, fw, &fw_ptr,
+						 &ignore);
+		if (err < 0) {
+			BT_INFO("%s: WARNING: failed to send configuration(%d)",
+				hdev->name, err);
+			release_firmware(fw);
+			return 0;
+		}
+	}
+	release_firmware(fw);
+
+	BT_INFO("%s: Device configuration completed", hdev->name);
+
 	return 0;
 }
 
Signature · 1 line
2.1.0
#1 lore raw

Hi Marcel,

I just wonder if you had a chance to review this pacth.

Let me know if you have any comments.

Regards,
Tedd

Quoted 62 lines · On Fri, 8 May 2015 03:59:46 -0700 Tedd Ho-Jeong An <[email protected]> wrote:

From: Tedd Ho-Jeong An <[email protected]>

This patch adds support to apply the device configuration parameters (DDC) after firwmare downloading on Intel 8265 device.

This is optional configuration parameters and good to have. So, even if it fails to apply it, it is not necessary to fail the setup.

The file format is same as previous firmware patch (.bseq) and this is only applicable to Intel 8265 device.

---
 drivers/bluetooth/btusb.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
drivers/bluetooth/btusb.c +34 -0
index d21f3b4..27cd2bf 100644
@@ -2644,6 +2644,40 @@ done:
 
 	clear_bit(BTUSB_BOOTLOADER, &data->flags);
 
+	/* Once the device is running in operational mode, it needs to apply
+	 * the configuration parameters to the device.
+	 */
+	snprintf(fwname, sizeof(fwname), "intel/ibt-11.bseq");
+
+	/* Device can work without this configuration so even if it fails
+	 * to load the file, no need to fail the setup
+	 */
+	err = request_firmware_direct(&fw, fwname, &hdev->dev);
+	if (err < 0) {
+		BT_INFO("%s: WARNING: unable to load configuration file (%d)",
+			hdev->name, err);
+		return 0;
+	}
+
+	BT_INFO("%s: Found device configuration file: %s", hdev->name, fwname);
+
+	fw_ptr = fw->data;
+	while (fw->size > fw_ptr - fw->data) {
+		int ignore;
+
+		err = btusb_setup_intel_patching(hdev, fw, &fw_ptr,
+						 &ignore);
+		if (err < 0) {
+			BT_INFO("%s: WARNING: failed to send configuration(%d)",
+				hdev->name, err);
+			release_firmware(fw);
+			return 0;
+		}
+	}
+	release_firmware(fw);
+
+	BT_INFO("%s: Device configuration completed", hdev->name);
+
 	return 0;
 }
 
maintainer
#2 lore raw
In reply to Tedd Ho-Jeong An

Hi Tedd,

Quoted 9 lines

This patch adds support to apply the device configuration parameters (DDC) after firwmare downloading on Intel 8265 device.

This is optional configuration parameters and good to have. So, even if it fails to apply it, it is not necessary to fail the setup.

The file format is same as previous firmware patch (.bseq) and this is only applicable to Intel 8265 device.

my preference is actually to not use *.bseq files since they are generic HCI commands. We want to use a new *.ddc file format that just contains the parameters. I clearly prefer that over just sending HCI commands. What we have to do is to actually define a simple DDC file format that lets us include the key/param pairs.

Regards

Marcel

#3 lore raw

Hi Marcel,

Quoted 5 lines · On Tue, 12 May 2015 17:05:21 +0200 Marcel Holtmann <[email protected]> wrote:

Hi Tedd,

Quoted 3 lines

This patch adds support to apply the device configuration parameters (DDC) after firwmare downloading on Intel 8265 device.

Quoted 9 lines
Quoted 6 lines

This is optional configuration parameters and good to have. So, even if it fails to apply it, it is not necessary to fail the setup.

The file format is same as previous firmware patch (.bseq) and this is only applicable to Intel 8265 device.

my preference is actually to not use *.bseq files since they are generic HCI commands. We want to use a new *.ddc file format that just contains the parameters. I clearly prefer that over just sending HCI commands. What we have to do is to actually define a simple DDC file format that lets us include the key/param pairs.

HCI command in .bseq is pretty simple to decode so extracting DDC contents (key/parmas) will not be a problem.
For DDC file, I think the simplest is [len] [key] [params] [len] [key] [params] ... in binary. So, the driver simpley read the full data and send with Intel_DDC_Write function.

Let me know if you have anything in your mind or any example in the other driver that I can refer.

Quoted 8 lines

Regards

Marcel

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html