diff mbox series

[v1,3/3] Bluetooth: hci_qca: WAR to handle WCN6750 HW issue

Message ID 1651228073-1999-4-git-send-email-quic_bgodavar@quicinc.com
State New
Headers show
Series WAR to handle WCN6750 hardware issue | expand

Commit Message

Balakrishna Godavarthi (QUIC) April 29, 2022, 10:27 a.m. UTC
The patch is workaround for hardware issue on WCN6750.
On WCN6750 sometimes observed AON power source takes 100ms
time to fully discharge voltage during OFF. As WCN6750 is
combo chip for WLAN and BT. If any of the tech area ON is
triggered during discharge phase, it fails to turn ON.
To overcome this hardware issue, During BT ON, driver check
for WLAN_EN pin status. If it high, it will pull BT_EN to high
immediately else it will wait for 100ms assuming WLAN was just
powered OFF and then BT_EN will be pulled to high.

Fixes: d8f97da1b92d2 ("Bluetooth: hci_qca: Add support for QTI Bluetooth chip wcn6750")
Reviewed-by: Miao-chen Chou <mcchou@chromium.org>
Signed-off-by: Sai Teja Aluvala <quic_saluvala@quicinc.com>
Signed-off-by: Balakrishna Godavarthi <quic_bgodavar@quicinc.com>
---
 drivers/bluetooth/hci_qca.c | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

Comments

Balakrishna Godavarthi (QUIC) April 30, 2022, 3:09 a.m. UTC | #1
Hi Marcel,

-----Original Message-----
From: Marcel Holtmann <marcel@holtmann.org> 
Sent: Friday, April 29, 2022 8:24 PM
To: Balakrishna Godavarthi (QUIC) <quic_bgodavar@quicinc.com>
Cc: Andy Gross <agross@kernel.org>; robh+dt@kernel.org; bjorn.andersson@linaro.org; linux-arm-msm@vger.kernel.org; devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; Johan Hedberg <johan.hedberg@gmail.com>; mka@chromium.org; linux-bluetooth@vger.kernel.org; Hemant Gupta (QUIC) <quic_hemantg@quicinc.com>; Sai Teja Aluvala (Temp) (QUIC) <quic_saluvala@quicinc.com>; quic_rjliao <quic_rjliao@quicinc.com>; mcchou@chromium.org
Subject: Re: [PATCH v1 3/3] Bluetooth: hci_qca: WAR to handle WCN6750 HW issue

Hi Balakrishna,

> The patch is workaround for hardware issue on WCN6750.
> On WCN6750 sometimes observed AON power source takes 100ms time to 
> fully discharge voltage during OFF. As WCN6750 is combo chip for WLAN 
> and BT. If any of the tech area ON is triggered during discharge 
> phase, it fails to turn ON.
> To overcome this hardware issue, During BT ON, driver check for 
> WLAN_EN pin status. If it high, it will pull BT_EN to high immediately 
> else it will wait for 100ms assuming WLAN was just powered OFF and 
> then BT_EN will be pulled to high.
> 
> Fixes: d8f97da1b92d2 ("Bluetooth: hci_qca: Add support for QTI 
> Bluetooth chip wcn6750")
> Reviewed-by: Miao-chen Chou <mcchou@chromium.org>
> Signed-off-by: Sai Teja Aluvala <quic_saluvala@quicinc.com>
> Signed-off-by: Balakrishna Godavarthi <quic_bgodavar@quicinc.com>
> ---
> drivers/bluetooth/hci_qca.c | 30 ++++++++++++++++++++++++------
> 1 file changed, 24 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c 
> index eab34e2..c3862d1 100644
> --- a/drivers/bluetooth/hci_qca.c
> +++ b/drivers/bluetooth/hci_qca.c
> @@ -219,6 +219,7 @@ struct qca_serdev {
> 	struct hci_uart	 serdev_hu;
> 	struct gpio_desc *bt_en;
> 	struct gpio_desc *sw_ctrl;
> +	struct gpio_desc *wlan_en;
> 	struct clk	 *susclk;
> 	enum qca_btsoc_type btsoc_type;
> 	struct qca_power *bt_power;

I am really against these intermixing of Bluetooth and WiFi details. There is work ongoing to do some sequence power procedure. Maybe that is something you should look into. This is a mess.

And again, we are still hacking around hci_qca.c instead of writing a clean serdev only driver for this hardware. I have the feeling that nobody listens to review comments these days. It is just hacking patches together to get hardware enabled somehow and then disappear.

[Bala]: We are working on serdev like driver for our QCA platform.  We are in initial stages of discussion, and soon we will start the driver development work. 
In mean to stop stability or functional issues we are trying to add these HACKs in QCA driver.

Regards

Marcel
Miao-chen Chou May 10, 2022, 3:17 a.m. UTC | #2
Hi Bala,

When is the estimated start date and timeline of the driver development?

Thanks,
Miao

On Fri, Apr 29, 2022 at 8:09 PM Balakrishna Godavarthi (QUIC)
<quic_bgodavar@quicinc.com> wrote:
>
> Hi Marcel,
>
> -----Original Message-----
> From: Marcel Holtmann <marcel@holtmann.org>
> Sent: Friday, April 29, 2022 8:24 PM
> To: Balakrishna Godavarthi (QUIC) <quic_bgodavar@quicinc.com>
> Cc: Andy Gross <agross@kernel.org>; robh+dt@kernel.org; bjorn.andersson@linaro.org; linux-arm-msm@vger.kernel.org; devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; Johan Hedberg <johan.hedberg@gmail.com>; mka@chromium.org; linux-bluetooth@vger.kernel.org; Hemant Gupta (QUIC) <quic_hemantg@quicinc.com>; Sai Teja Aluvala (Temp) (QUIC) <quic_saluvala@quicinc.com>; quic_rjliao <quic_rjliao@quicinc.com>; mcchou@chromium.org
> Subject: Re: [PATCH v1 3/3] Bluetooth: hci_qca: WAR to handle WCN6750 HW issue
>
> Hi Balakrishna,
>
> > The patch is workaround for hardware issue on WCN6750.
> > On WCN6750 sometimes observed AON power source takes 100ms time to
> > fully discharge voltage during OFF. As WCN6750 is combo chip for WLAN
> > and BT. If any of the tech area ON is triggered during discharge
> > phase, it fails to turn ON.
> > To overcome this hardware issue, During BT ON, driver check for
> > WLAN_EN pin status. If it high, it will pull BT_EN to high immediately
> > else it will wait for 100ms assuming WLAN was just powered OFF and
> > then BT_EN will be pulled to high.
> >
> > Fixes: d8f97da1b92d2 ("Bluetooth: hci_qca: Add support for QTI
> > Bluetooth chip wcn6750")
> > Reviewed-by: Miao-chen Chou <mcchou@chromium.org>
> > Signed-off-by: Sai Teja Aluvala <quic_saluvala@quicinc.com>
> > Signed-off-by: Balakrishna Godavarthi <quic_bgodavar@quicinc.com>
> > ---
> > drivers/bluetooth/hci_qca.c | 30 ++++++++++++++++++++++++------
> > 1 file changed, 24 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
> > index eab34e2..c3862d1 100644
> > --- a/drivers/bluetooth/hci_qca.c
> > +++ b/drivers/bluetooth/hci_qca.c
> > @@ -219,6 +219,7 @@ struct qca_serdev {
> >       struct hci_uart  serdev_hu;
> >       struct gpio_desc *bt_en;
> >       struct gpio_desc *sw_ctrl;
> > +     struct gpio_desc *wlan_en;
> >       struct clk       *susclk;
> >       enum qca_btsoc_type btsoc_type;
> >       struct qca_power *bt_power;
>
> I am really against these intermixing of Bluetooth and WiFi details. There is work ongoing to do some sequence power procedure. Maybe that is something you should look into. This is a mess.
>
> And again, we are still hacking around hci_qca.c instead of writing a clean serdev only driver for this hardware. I have the feeling that nobody listens to review comments these days. It is just hacking patches together to get hardware enabled somehow and then disappear.
>
> [Bala]: We are working on serdev like driver for our QCA platform.  We are in initial stages of discussion, and soon we will start the driver development work.
> In mean to stop stability or functional issues we are trying to add these HACKs in QCA driver.
>
> Regards
>
> Marcel
>
Matthias Kaehlcke Oct. 13, 2022, 7:11 p.m. UTC | #3
On Wed, Jun 22, 2022 at 07:27:21AM +0000, Balakrishna Godavarthi (QUIC) wrote:
> Hi Marcel/Miao,
> 
> We are working on new driver, by 7/29 we will submit initial patch for review.

Has this ever been sent? I skimmed through the list archives and couldn't find it.

> -----Original Message-----
> From: Miao-chen Chou <mcchou@chromium.org> 
> Sent: Tuesday, May 10, 2022 8:47 AM
> To: Balakrishna Godavarthi (QUIC) <quic_bgodavar@quicinc.com>
> Cc: Marcel Holtmann <marcel@holtmann.org>; Andy Gross <agross@kernel.org>; robh+dt@kernel.org; bjorn.andersson@linaro.org; linux-arm-msm@vger.kernel.org; devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; Johan Hedberg <johan.hedberg@gmail.com>; mka@chromium.org; linux-bluetooth@vger.kernel.org; Hemant Gupta (QUIC) <quic_hemantg@quicinc.com>; Sai Teja Aluvala (Temp) (QUIC) <quic_saluvala@quicinc.com>; quic_rjliao <quic_rjliao@quicinc.com>; Alain Michaud <alainmichaud@google.com>; Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
> Subject: Re: [PATCH v1 3/3] Bluetooth: hci_qca: WAR to handle WCN6750 HW issue
> 
> Hi Bala,
> 
> When is the estimated start date and timeline of the driver development?
> 
> Thanks,
> Miao
> 
> On Fri, Apr 29, 2022 at 8:09 PM Balakrishna Godavarthi (QUIC) <quic_bgodavar@quicinc.com> wrote:
> >
> > Hi Marcel,
> >
> > -----Original Message-----
> > From: Marcel Holtmann <marcel@holtmann.org>
> > Sent: Friday, April 29, 2022 8:24 PM
> > To: Balakrishna Godavarthi (QUIC) <quic_bgodavar@quicinc.com>
> > Cc: Andy Gross <agross@kernel.org>; robh+dt@kernel.org; 
> > bjorn.andersson@linaro.org; linux-arm-msm@vger.kernel.org; 
> > devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; Johan 
> > Hedberg <johan.hedberg@gmail.com>; mka@chromium.org; 
> > linux-bluetooth@vger.kernel.org; Hemant Gupta (QUIC) 
> > <quic_hemantg@quicinc.com>; Sai Teja Aluvala (Temp) (QUIC) 
> > <quic_saluvala@quicinc.com>; quic_rjliao <quic_rjliao@quicinc.com>; 
> > mcchou@chromium.org
> > Subject: Re: [PATCH v1 3/3] Bluetooth: hci_qca: WAR to handle WCN6750 
> > HW issue
> >
> > Hi Balakrishna,
> >
> > > The patch is workaround for hardware issue on WCN6750.
> > > On WCN6750 sometimes observed AON power source takes 100ms time to 
> > > fully discharge voltage during OFF. As WCN6750 is combo chip for 
> > > WLAN and BT. If any of the tech area ON is triggered during 
> > > discharge phase, it fails to turn ON.
> > > To overcome this hardware issue, During BT ON, driver check for 
> > > WLAN_EN pin status. If it high, it will pull BT_EN to high 
> > > immediately else it will wait for 100ms assuming WLAN was just 
> > > powered OFF and then BT_EN will be pulled to high.
> > >
> > > Fixes: d8f97da1b92d2 ("Bluetooth: hci_qca: Add support for QTI 
> > > Bluetooth chip wcn6750")
> > > Reviewed-by: Miao-chen Chou <mcchou@chromium.org>
> > > Signed-off-by: Sai Teja Aluvala <quic_saluvala@quicinc.com>
> > > Signed-off-by: Balakrishna Godavarthi <quic_bgodavar@quicinc.com>
> > > ---
> > > drivers/bluetooth/hci_qca.c | 30 ++++++++++++++++++++++++------
> > > 1 file changed, 24 insertions(+), 6 deletions(-)
> > >
> > > diff --git a/drivers/bluetooth/hci_qca.c 
> > > b/drivers/bluetooth/hci_qca.c index eab34e2..c3862d1 100644
> > > --- a/drivers/bluetooth/hci_qca.c
> > > +++ b/drivers/bluetooth/hci_qca.c
> > > @@ -219,6 +219,7 @@ struct qca_serdev {
> > >       struct hci_uart  serdev_hu;
> > >       struct gpio_desc *bt_en;
> > >       struct gpio_desc *sw_ctrl;
> > > +     struct gpio_desc *wlan_en;
> > >       struct clk       *susclk;
> > >       enum qca_btsoc_type btsoc_type;
> > >       struct qca_power *bt_power;
> >
> > I am really against these intermixing of Bluetooth and WiFi details. There is work ongoing to do some sequence power procedure. Maybe that is something you should look into. This is a mess.
> >
> > And again, we are still hacking around hci_qca.c instead of writing a clean serdev only driver for this hardware. I have the feeling that nobody listens to review comments these days. It is just hacking patches together to get hardware enabled somehow and then disappear.
> >
> > [Bala]: We are working on serdev like driver for our QCA platform.  We are in initial stages of discussion, and soon we will start the driver development work.
> > In mean to stop stability or functional issues we are trying to add these HACKs in QCA driver.
> >
> > Regards
> >
> > Marcel
> >
Luiz Augusto von Dentz Oct. 13, 2022, 8:06 p.m. UTC | #4
Hi,

On Thu, Oct 13, 2022 at 12:29 PM mka@chromium.org <mka@chromium.org> wrote:
>
> On Wed, Jun 22, 2022 at 07:27:21AM +0000, Balakrishna Godavarthi (QUIC) wrote:
> > Hi Marcel/Miao,
> >
> > We are working on new driver, by 7/29 we will submit initial patch for review.
>
> Has this ever been sent? I skimmed through the list archives and couldn't find it.

If you are asking if it was applied, not it wasn't, it probably needs
to be resend since we were expecting a follow up on the set.

> > -----Original Message-----
> > From: Miao-chen Chou <mcchou@chromium.org>
> > Sent: Tuesday, May 10, 2022 8:47 AM
> > To: Balakrishna Godavarthi (QUIC) <quic_bgodavar@quicinc.com>
> > Cc: Marcel Holtmann <marcel@holtmann.org>; Andy Gross <agross@kernel.org>; robh+dt@kernel.org; bjorn.andersson@linaro.org; linux-arm-msm@vger.kernel.org; devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; Johan Hedberg <johan.hedberg@gmail.com>; mka@chromium.org; linux-bluetooth@vger.kernel.org; Hemant Gupta (QUIC) <quic_hemantg@quicinc.com>; Sai Teja Aluvala (Temp) (QUIC) <quic_saluvala@quicinc.com>; quic_rjliao <quic_rjliao@quicinc.com>; Alain Michaud <alainmichaud@google.com>; Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
> > Subject: Re: [PATCH v1 3/3] Bluetooth: hci_qca: WAR to handle WCN6750 HW issue
> >
> > Hi Bala,
> >
> > When is the estimated start date and timeline of the driver development?
> >
> > Thanks,
> > Miao
> >
> > On Fri, Apr 29, 2022 at 8:09 PM Balakrishna Godavarthi (QUIC) <quic_bgodavar@quicinc.com> wrote:
> > >
> > > Hi Marcel,
> > >
> > > -----Original Message-----
> > > From: Marcel Holtmann <marcel@holtmann.org>
> > > Sent: Friday, April 29, 2022 8:24 PM
> > > To: Balakrishna Godavarthi (QUIC) <quic_bgodavar@quicinc.com>
> > > Cc: Andy Gross <agross@kernel.org>; robh+dt@kernel.org;
> > > bjorn.andersson@linaro.org; linux-arm-msm@vger.kernel.org;
> > > devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; Johan
> > > Hedberg <johan.hedberg@gmail.com>; mka@chromium.org;
> > > linux-bluetooth@vger.kernel.org; Hemant Gupta (QUIC)
> > > <quic_hemantg@quicinc.com>; Sai Teja Aluvala (Temp) (QUIC)
> > > <quic_saluvala@quicinc.com>; quic_rjliao <quic_rjliao@quicinc.com>;
> > > mcchou@chromium.org
> > > Subject: Re: [PATCH v1 3/3] Bluetooth: hci_qca: WAR to handle WCN6750
> > > HW issue
> > >
> > > Hi Balakrishna,
> > >
> > > > The patch is workaround for hardware issue on WCN6750.
> > > > On WCN6750 sometimes observed AON power source takes 100ms time to
> > > > fully discharge voltage during OFF. As WCN6750 is combo chip for
> > > > WLAN and BT. If any of the tech area ON is triggered during
> > > > discharge phase, it fails to turn ON.
> > > > To overcome this hardware issue, During BT ON, driver check for
> > > > WLAN_EN pin status. If it high, it will pull BT_EN to high
> > > > immediately else it will wait for 100ms assuming WLAN was just
> > > > powered OFF and then BT_EN will be pulled to high.
> > > >
> > > > Fixes: d8f97da1b92d2 ("Bluetooth: hci_qca: Add support for QTI
> > > > Bluetooth chip wcn6750")
> > > > Reviewed-by: Miao-chen Chou <mcchou@chromium.org>
> > > > Signed-off-by: Sai Teja Aluvala <quic_saluvala@quicinc.com>
> > > > Signed-off-by: Balakrishna Godavarthi <quic_bgodavar@quicinc.com>
> > > > ---
> > > > drivers/bluetooth/hci_qca.c | 30 ++++++++++++++++++++++++------
> > > > 1 file changed, 24 insertions(+), 6 deletions(-)
> > > >
> > > > diff --git a/drivers/bluetooth/hci_qca.c
> > > > b/drivers/bluetooth/hci_qca.c index eab34e2..c3862d1 100644
> > > > --- a/drivers/bluetooth/hci_qca.c
> > > > +++ b/drivers/bluetooth/hci_qca.c
> > > > @@ -219,6 +219,7 @@ struct qca_serdev {
> > > >       struct hci_uart  serdev_hu;
> > > >       struct gpio_desc *bt_en;
> > > >       struct gpio_desc *sw_ctrl;
> > > > +     struct gpio_desc *wlan_en;
> > > >       struct clk       *susclk;
> > > >       enum qca_btsoc_type btsoc_type;
> > > >       struct qca_power *bt_power;
> > >
> > > I am really against these intermixing of Bluetooth and WiFi details. There is work ongoing to do some sequence power procedure. Maybe that is something you should look into. This is a mess.
> > >
> > > And again, we are still hacking around hci_qca.c instead of writing a clean serdev only driver for this hardware. I have the feeling that nobody listens to review comments these days. It is just hacking patches together to get hardware enabled somehow and then disappear.
> > >
> > > [Bala]: We are working on serdev like driver for our QCA platform.  We are in initial stages of discussion, and soon we will start the driver development work.
> > > In mean to stop stability or functional issues we are trying to add these HACKs in QCA driver.
> > >
> > > Regards
> > >
> > > Marcel
> > >
Matthias Kaehlcke Oct. 13, 2022, 8:12 p.m. UTC | #5
On Thu, Oct 13, 2022 at 01:06:41PM -0700, Luiz Augusto von Dentz wrote:
> Hi,
> 
> On Thu, Oct 13, 2022 at 12:29 PM mka@chromium.org <mka@chromium.org> wrote:
> >
> > On Wed, Jun 22, 2022 at 07:27:21AM +0000, Balakrishna Godavarthi (QUIC) wrote:
> > > Hi Marcel/Miao,
> > >
> > > We are working on new driver, by 7/29 we will submit initial patch for review.
> >
> > Has this ever been sent? I skimmed through the list archives and couldn't find it.
> 
> If you are asking if it was applied, not it wasn't, it probably needs
> to be resend since we were expecting a follow up on the set.

Sorry, if I wasn't clear, my question was about the new serdev based driver
which was supposed to be posted by 7/29.

> > > -----Original Message-----
> > > From: Miao-chen Chou <mcchou@chromium.org>
> > > Sent: Tuesday, May 10, 2022 8:47 AM
> > > To: Balakrishna Godavarthi (QUIC) <quic_bgodavar@quicinc.com>
> > > Cc: Marcel Holtmann <marcel@holtmann.org>; Andy Gross <agross@kernel.org>; robh+dt@kernel.org; bjorn.andersson@linaro.org; linux-arm-msm@vger.kernel.org; devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; Johan Hedberg <johan.hedberg@gmail.com>; mka@chromium.org; linux-bluetooth@vger.kernel.org; Hemant Gupta (QUIC) <quic_hemantg@quicinc.com>; Sai Teja Aluvala (Temp) (QUIC) <quic_saluvala@quicinc.com>; quic_rjliao <quic_rjliao@quicinc.com>; Alain Michaud <alainmichaud@google.com>; Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
> > > Subject: Re: [PATCH v1 3/3] Bluetooth: hci_qca: WAR to handle WCN6750 HW issue
> > >
> > > Hi Bala,
> > >
> > > When is the estimated start date and timeline of the driver development?
> > >
> > > Thanks,
> > > Miao
> > >
> > > On Fri, Apr 29, 2022 at 8:09 PM Balakrishna Godavarthi (QUIC) <quic_bgodavar@quicinc.com> wrote:
> > > >
> > > > Hi Marcel,
> > > >
> > > > -----Original Message-----
> > > > From: Marcel Holtmann <marcel@holtmann.org>
> > > > Sent: Friday, April 29, 2022 8:24 PM
> > > > To: Balakrishna Godavarthi (QUIC) <quic_bgodavar@quicinc.com>
> > > > Cc: Andy Gross <agross@kernel.org>; robh+dt@kernel.org;
> > > > bjorn.andersson@linaro.org; linux-arm-msm@vger.kernel.org;
> > > > devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; Johan
> > > > Hedberg <johan.hedberg@gmail.com>; mka@chromium.org;
> > > > linux-bluetooth@vger.kernel.org; Hemant Gupta (QUIC)
> > > > <quic_hemantg@quicinc.com>; Sai Teja Aluvala (Temp) (QUIC)
> > > > <quic_saluvala@quicinc.com>; quic_rjliao <quic_rjliao@quicinc.com>;
> > > > mcchou@chromium.org
> > > > Subject: Re: [PATCH v1 3/3] Bluetooth: hci_qca: WAR to handle WCN6750
> > > > HW issue
> > > >
> > > > Hi Balakrishna,
> > > >
> > > > > The patch is workaround for hardware issue on WCN6750.
> > > > > On WCN6750 sometimes observed AON power source takes 100ms time to
> > > > > fully discharge voltage during OFF. As WCN6750 is combo chip for
> > > > > WLAN and BT. If any of the tech area ON is triggered during
> > > > > discharge phase, it fails to turn ON.
> > > > > To overcome this hardware issue, During BT ON, driver check for
> > > > > WLAN_EN pin status. If it high, it will pull BT_EN to high
> > > > > immediately else it will wait for 100ms assuming WLAN was just
> > > > > powered OFF and then BT_EN will be pulled to high.
> > > > >
> > > > > Fixes: d8f97da1b92d2 ("Bluetooth: hci_qca: Add support for QTI
> > > > > Bluetooth chip wcn6750")
> > > > > Reviewed-by: Miao-chen Chou <mcchou@chromium.org>
> > > > > Signed-off-by: Sai Teja Aluvala <quic_saluvala@quicinc.com>
> > > > > Signed-off-by: Balakrishna Godavarthi <quic_bgodavar@quicinc.com>
> > > > > ---
> > > > > drivers/bluetooth/hci_qca.c | 30 ++++++++++++++++++++++++------
> > > > > 1 file changed, 24 insertions(+), 6 deletions(-)
> > > > >
> > > > > diff --git a/drivers/bluetooth/hci_qca.c
> > > > > b/drivers/bluetooth/hci_qca.c index eab34e2..c3862d1 100644
> > > > > --- a/drivers/bluetooth/hci_qca.c
> > > > > +++ b/drivers/bluetooth/hci_qca.c
> > > > > @@ -219,6 +219,7 @@ struct qca_serdev {
> > > > >       struct hci_uart  serdev_hu;
> > > > >       struct gpio_desc *bt_en;
> > > > >       struct gpio_desc *sw_ctrl;
> > > > > +     struct gpio_desc *wlan_en;
> > > > >       struct clk       *susclk;
> > > > >       enum qca_btsoc_type btsoc_type;
> > > > >       struct qca_power *bt_power;
> > > >
> > > > I am really against these intermixing of Bluetooth and WiFi details. There is work ongoing to do some sequence power procedure. Maybe that is something you should look into. This is a mess.
> > > >
> > > > And again, we are still hacking around hci_qca.c instead of writing a clean serdev only driver for this hardware. I have the feeling that nobody listens to review comments these days. It is just hacking patches together to get hardware enabled somehow and then disappear.
> > > >
> > > > [Bala]: We are working on serdev like driver for our QCA platform.  We are in initial stages of discussion, and soon we will start the driver development work.
> > > > In mean to stop stability or functional issues we are trying to add these HACKs in QCA driver.
> > > >
> > > > Regards
> > > >
> > > > Marcel
> > > >
> 
> 
> 
> -- 
> Luiz Augusto von Dentz
diff mbox series

Patch

diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index eab34e2..c3862d1 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -219,6 +219,7 @@  struct qca_serdev {
 	struct hci_uart	 serdev_hu;
 	struct gpio_desc *bt_en;
 	struct gpio_desc *sw_ctrl;
+	struct gpio_desc *wlan_en;
 	struct clk	 *susclk;
 	enum qca_btsoc_type btsoc_type;
 	struct qca_power *bt_power;
@@ -1627,12 +1628,25 @@  static int qca_regulator_init(struct hci_uart *hu)
 	if (qcadev->bt_en) {
 		gpiod_set_value_cansleep(qcadev->bt_en, 0);
 		msleep(50);
+	}
+
+	if (!qcadev->wlan_en || (qcadev->wlan_en && gpiod_get_value_cansleep(qcadev->wlan_en)))
+		gpiod_set_value_cansleep(qcadev->bt_en, 1);
+
+	if (qcadev->wlan_en && !gpiod_get_value_cansleep(qcadev->wlan_en)) {
+		gpiod_set_value_cansleep(qcadev->bt_en, 0);
+		msleep(100);
 		gpiod_set_value_cansleep(qcadev->bt_en, 1);
-		msleep(50);
-		if (qcadev->sw_ctrl) {
-			sw_ctrl_state = gpiod_get_value_cansleep(qcadev->sw_ctrl);
-			bt_dev_dbg(hu->hdev, "SW_CTRL is %d", sw_ctrl_state);
-		}
+	}
+
+	if (!gpiod_get_value_cansleep(qcadev->bt_en))
+		gpiod_set_value_cansleep(qcadev->bt_en, 1);
+
+	msleep(50);
+
+	if (qcadev->sw_ctrl) {
+		sw_ctrl_state = gpiod_get_value_cansleep(qcadev->sw_ctrl);
+		bt_dev_dbg(hu->hdev, "SW_CTRL is %d", sw_ctrl_state);
 	}
 
 	qca_set_speed(hu, QCA_INIT_SPEED);
@@ -1906,8 +1920,8 @@  static void qca_power_shutdown(struct hci_uart *hu)
 		qca_regulator_disable(qcadev);
 	} else if (soc_type == QCA_WCN6750) {
 		gpiod_set_value_cansleep(qcadev->bt_en, 0);
-		msleep(100);
 		qca_regulator_disable(qcadev);
+		msleep(100);
 		if (qcadev->sw_ctrl) {
 			sw_ctrl_state = gpiod_get_value_cansleep(qcadev->sw_ctrl);
 			bt_dev_dbg(hu->hdev, "SW_CTRL is %d", sw_ctrl_state);
@@ -2057,6 +2071,10 @@  static int qca_serdev_probe(struct serdev_device *serdev)
 
 		qcadev->bt_power->vregs_on = false;
 
+		qcadev->wlan_en = devm_gpiod_get_optional(&serdev->dev, "wlan", GPIOD_ASIS);
+		if (!qcadev->wlan_en && data->soc_type == QCA_WCN6750)
+			dev_err(&serdev->dev, "failed to acquire WL_EN gpio");
+
 		qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",
 					       GPIOD_OUT_LOW);
 		if (IS_ERR_OR_NULL(qcadev->bt_en) && data->soc_type == QCA_WCN6750) {