2015-05-08 10:59:46

by An, Tedd

[permalink] [raw]
Subject: [PATCH] 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.

Signed-off-by: Tedd Ho-Jeong An <[email protected]>
---
drivers/bluetooth/btusb.c | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index d21f3b4..27cd2bf 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -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;
}

--
2.1.0



2015-05-09 13:50:52

by An, Tedd

[permalink] [raw]
Subject: Re: [PATCH] Bluetooth: btusb: Apply Intel device configuration routine

Hi Marcel,

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

> Hi Tedd,
>
> > 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.
>

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.

> 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

2015-05-12 15:05:21

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH] Bluetooth: btusb: Apply Intel device configuration routine

Hi Tedd,

> 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


2015-05-09 11:17:16

by An, Tedd

[permalink] [raw]
Subject: Re: [PATCH] Bluetooth: btusb: Apply Intel device configuration routine

Hi Marcel,

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

Let me know if you have any comments.

Regards,
Tedd

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.
>
> Signed-off-by: Tedd Ho-Jeong An <[email protected]>
> ---
> drivers/bluetooth/btusb.c | 34 ++++++++++++++++++++++++++++++++++
> 1 file changed, 34 insertions(+)
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index d21f3b4..27cd2bf 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -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;
> }
>