Bluetooth: hci_bcm: Prevent early baudrate setting in autobaud mode
authorHakan Jansson <hakan.jansson@infineon.com>
Thu, 30 Jun 2022 12:45:23 +0000 (14:45 +0200)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Fri, 22 Jul 2022 00:12:09 +0000 (17:12 -0700)
Always prevent trying to set device baudrate before calling setup() when
using autobaud mode.

This was previously happening for devices which had device specific data
with member no_early_set_baudrate set to 0.

Signed-off-by: Hakan Jansson <hakan.jansson@infineon.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/hci_bcm.c

index 9a12986..0ae627c 100644 (file)
@@ -484,7 +484,7 @@ out:
                /* If oper_speed is set, ldisc/serdev will set the baudrate
                 * before calling setup()
                 */
-               if (!bcm->dev->no_early_set_baudrate)
+               if (!bcm->dev->no_early_set_baudrate && !bcm->dev->use_autobaud_mode)
                        hu->oper_speed = bcm->dev->oper_speed;
 
                err = bcm_gpio_set_power(bcm->dev, true);
@@ -1204,9 +1204,6 @@ static int bcm_of_probe(struct bcm_device *bdev)
 {
        bdev->use_autobaud_mode = device_property_read_bool(bdev->dev,
                                                            "brcm,requires-autobaud-mode");
-       if (bdev->use_autobaud_mode)
-               bdev->no_early_set_baudrate = true;
-
        device_property_read_u32(bdev->dev, "max-speed", &bdev->oper_speed);
        device_property_read_u8_array(bdev->dev, "brcm,bt-pcm-int-params",
                                      bdev->pcm_int_params, 5);