[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <AM9PR04MB860397EC747D0F0999D1A6C6E7AD9@AM9PR04MB8603.eurprd04.prod.outlook.com>
Date: Wed, 1 Mar 2023 15:51:52 +0000
From: Neeraj sanjay kale <neeraj.sanjaykale@....com>
To: Sherry Sun <sherry.sun@....com>,
"davem@...emloft.net" <davem@...emloft.net>,
"edumazet@...gle.com" <edumazet@...gle.com>,
"kuba@...nel.org" <kuba@...nel.org>,
"pabeni@...hat.com" <pabeni@...hat.com>,
"robh+dt@...nel.org" <robh+dt@...nel.org>,
"krzysztof.kozlowski+dt@...aro.org"
<krzysztof.kozlowski+dt@...aro.org>,
"marcel@...tmann.org" <marcel@...tmann.org>,
"johan.hedberg@...il.com" <johan.hedberg@...il.com>,
"luiz.dentz@...il.com" <luiz.dentz@...il.com>,
"gregkh@...uxfoundation.org" <gregkh@...uxfoundation.org>,
"jirislaby@...nel.org" <jirislaby@...nel.org>,
"alok.a.tiwari@...cle.com" <alok.a.tiwari@...cle.com>,
"hdanton@...a.com" <hdanton@...a.com>,
"ilpo.jarvinen@...ux.intel.com" <ilpo.jarvinen@...ux.intel.com>,
"leon@...nel.org" <leon@...nel.org>
CC: "netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-bluetooth@...r.kernel.org" <linux-bluetooth@...r.kernel.org>,
"linux-serial@...r.kernel.org" <linux-serial@...r.kernel.org>,
Amitkumar Karwar <amitkumar.karwar@....com>,
Rohit Fule <rohit.fule@....com>
Subject: RE: [PATCH v5] Bluetooth: NXP: Add protocol support for NXP Bluetooth
chipsets
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
Powered by blists - more mailing lists