RE: [PATCH v5] Bluetooth: NXP: Add protocol support for NXP Bluetooth chipsets

From: Neeraj sanjay kale
Date: Wed Mar 01 2023 - 10:53:00 EST


Hi Sherry

> ......
>
> > +static u8 *nxp_get_fw_name_from_chipid(struct hci_dev *hdev, u16
> > +chipid) {
> > + u8 *fw_name = NULL;
> > +
> > + switch (chipid) {
> > + case CHIP_ID_W9098:
> > + fw_name = FIRMWARE_W9098;
> > + break;
> > + case CHIP_ID_IW416:
> > + fw_name = FIRMWARE_IW416;
> > + break;
> > + case CHIP_ID_IW612:
> > + fw_name = FIRMWARE_IW612;
>
> Suppose for each V3 BT chips, you not only need to update the fw_name, but
> also fw_dnld_use_high_baudrate. Don't use the default value in drv_data for
> all chips here.
fw_dnld_use_high_baudrate is not used in the V3 download mechanism, neither do we need it as of now in V3.

> > +
> > + set_bit(BTNXPUART_FW_DOWNLOADING, &nxpdev->tx_state);
> > + init_waitqueue_head(&nxpdev->suspend_wait_q);
> > +
> > + if (!serdev_device_get_cts(nxpdev->serdev)) {
> > + bt_dev_dbg(hdev, "CTS high. Need FW Download");
>
> I don't think it's a good idea to use CTS status to determine the BT FW status,
> because many uart drivers only support auto hardware flow control, and
> cannot return the CTS line state.
> Such as for LPUART, serdev_device_get_cts() will always return TIOCM_CTS,
> so here FW may never be downloaded.
I have reworked this part of code and we are now waiting for 1 second to see if we are receiving any bootloader signature from the chip, and downloading FW or moving ahead accordingly.

Please check the v6 patch for the changes.

Thanks,
Neeraj