RE: [PATCH v1 1/2] Bluetooth: btnxpuart: Add msleep() after changing the baudrate

From: Sherry Sun
Date: Fri Mar 28 2025 - 10:02:51 EST




> -----Original Message-----
> From: Neeraj Sanjay Kale <neeraj.sanjaykale@xxxxxxx>
> Sent: Friday, March 28, 2025 2:25 AM
> To: marcel@xxxxxxxxxxxx; luiz.dentz@xxxxxxxxx
> Cc: linux-bluetooth@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> Amitkumar Karwar <amitkumar.karwar@xxxxxxx>; Neeraj Sanjay Kale
> <neeraj.sanjaykale@xxxxxxx>; Sherry Sun <sherry.sun@xxxxxxx>
> Subject: [PATCH v1 1/2] Bluetooth: btnxpuart: Add msleep() after changing the
> baudrate
>
> This adds a 100 millisec sleep after change baudrate vendor command.
>
> It is observed that when the baudrate change command changes the
> baudrate from 3000000 to 115200, any immediate HCI command returns an
> error -22 (Device Busy).
>
> Adding a small delay after the change baudrate command complete event is
> received helps fix the issue.
>
> Signed-off-by: Neeraj Sanjay Kale <neeraj.sanjaykale@xxxxxxx>
> ---
> drivers/bluetooth/btnxpuart.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
> index 5091dea762a0..e26fabe8fb3d 100644
> --- a/drivers/bluetooth/btnxpuart.c
> +++ b/drivers/bluetooth/btnxpuart.c
> @@ -1238,6 +1238,8 @@ static int nxp_set_baudrate_cmd(struct hci_dev
> *hdev, void *data)
> if (*status == 0) {
> serdev_device_set_baudrate(nxpdev->serdev,
> nxpdev->new_baudrate);
> nxpdev->current_baudrate = nxpdev->new_baudrate;
> + /* Allow sufficiant time for chip to switch to new
> baudrate */
> + sleep(100);

Hi Neeraj,

Assuming that msleep() should be used here, sleep (100) means 100 seconds of sleep, too crazy :)

Best Regards
Sherry


> }
> bt_dev_dbg(hdev, "Set baudrate response: status=%d,
> baudrate=%d",
> *status, nxpdev->new_baudrate);
> --
> 2.25.1