Thread (1 message) 1 message, 1 author, 2021-10-17

[Bug 213829] Intel AX210 Bluetooth controller doesn't start from warm boot

From: <hidden>
Date: 2021-10-17 18:05:07

https://bugzilla.kernel.org/show_bug.cgi?id=213829
--- Comment #13 from Guillaume Binet (gbin@gootz.net) ---
I continued to investigate. The major difference between a cold boot and a warm
boot is the driver trying to load a firmware.

For the science, I just disabled this behavior and it looks like the device and
driver recover on a warm boot. Consider this a workaround and not a fix but at
least it works for me, bluetooth is available on a warm boot.
pal   linux-5.14.12  diff -u drivers/bluetooth/btintel.c.old
drivers/bluetooth/btintel.c 
--- drivers/bluetooth/btintel.c.old     2021-10-17 13:56:23.583338189 -0400
+++ drivers/bluetooth/btintel.c 2021-10-17 14:01:16.113344330 -0400
@@ -1034,17 +1034,6 @@
                /* Skip reading firmware file version in bootloader mode */
                if (ver->fw_variant == 0x06)
                        break;
-
-               /* Skip download if firmware has the same version */
-               if (btintel_firmware_version(hdev, ver->fw_build_num,
-                                            ver->fw_build_ww,
ver->fw_build_yy,
-                                            fw, boot_param)) {
-                       bt_dev_info(hdev, "Firmware already loaded");
-                       /* Return -EALREADY to indicate that the firmware has
-                        * already been loaded.
-                        */
-                       return -EALREADY;
-               }
        }

        /* The firmware variant determines if the device is in bootloader
@@ -1074,21 +1063,6 @@
        int err;
        u32 css_header_ver;

-       /* Skip reading firmware file version in bootloader mode */
-       if (ver->img_type != 0x01) {
-               /* Skip download if firmware has the same version */
-               if (btintel_firmware_version(hdev, ver->min_fw_build_nn,
-                                            ver->min_fw_build_cw,
-                                            ver->min_fw_build_yy,
-                                            fw, boot_param)) {
-                       bt_dev_info(hdev, "Firmware already loaded");
-                       /* Return -EALREADY to indicate that firmware has
-                        * already been loaded.
-                        */
-                       return -EALREADY;
-               }
-       }
-
        /* The firmware variant determines if the device is in bootloader
         * mode or is running operational firmware. The value 0x01 identifies
         * the bootloader and the value 0x03 identifies the operational
-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are the assignee for the bug.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help