|
@@ -2219,36 +2219,7 @@ done:
|
|
|
* The device can work without DDC parameters, 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)
|
|
|
- return 0;
|
|
|
-
|
|
|
- BT_INFO("%s: Found Intel DDC parameters: %s", hdev->name, fwname);
|
|
|
-
|
|
|
- fw_ptr = fw->data;
|
|
|
-
|
|
|
- /* DDC file contains one or more DDC structure which has
|
|
|
- * Length (1 byte), DDC ID (2 bytes), and DDC value (Length - 2).
|
|
|
- */
|
|
|
- while (fw->size > fw_ptr - fw->data) {
|
|
|
- u8 cmd_plen = fw_ptr[0] + sizeof(u8);
|
|
|
-
|
|
|
- skb = __hci_cmd_sync(hdev, 0xfc8b, cmd_plen, fw_ptr,
|
|
|
- HCI_INIT_TIMEOUT);
|
|
|
- if (IS_ERR(skb)) {
|
|
|
- BT_ERR("%s: Failed to send Intel_Write_DDC (%ld)",
|
|
|
- hdev->name, PTR_ERR(skb));
|
|
|
- release_firmware(fw);
|
|
|
- return PTR_ERR(skb);
|
|
|
- }
|
|
|
-
|
|
|
- fw_ptr += cmd_plen;
|
|
|
- kfree_skb(skb);
|
|
|
- }
|
|
|
-
|
|
|
- release_firmware(fw);
|
|
|
-
|
|
|
- BT_INFO("%s: Applying Intel DDC parameters completed", hdev->name);
|
|
|
+ btintel_load_ddc_config(hdev, fwname);
|
|
|
|
|
|
return 0;
|
|
|
}
|