2019-03-06 16:21:33

by Balakrishna Godavarthi

[permalink] [raw]
Subject: [PATCH v1] Bluetooth: hci_qca: Give enough time to ROME controller to bootup.

This patch enables enough time to ROME controller to bootup
after we bring the enable ping out of reset.

Signed-off-by: Balakrishna Godavarthi <[email protected]>
---
drivers/bluetooth/hci_qca.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index 237aea34b69f..1953b13511e7 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -508,6 +508,8 @@ static int qca_open(struct hci_uart *hu)
qcadev = serdev_device_get_drvdata(hu->serdev);
if (qcadev->btsoc_type != QCA_WCN3990) {
gpiod_set_value_cansleep(qcadev->bt_en, 1);
+ /* Controller needs time to bootup. */
+ msleep(150);
} else {
hu->init_speed = qcadev->init_speed;
hu->oper_speed = qcadev->oper_speed;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project



2019-03-06 22:33:15

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH v1] Bluetooth: hci_qca: Give enough time to ROME controller to bootup.

Quoting Balakrishna Godavarthi (2019-03-06 08:21:13)
> This patch enables enough time to ROME controller to bootup
> after we bring the enable ping out of reset.
>
> Signed-off-by: Balakrishna Godavarthi <[email protected]>
> ---

Any Fixes tag? And maybe some more explanation or background on where
150 ms sleep comes from would be useful. Was it determined
experimentally or did it come from a datasheet somewhere? Does the time
differ between boards?

> drivers/bluetooth/hci_qca.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
> index 237aea34b69f..1953b13511e7 100644
> --- a/drivers/bluetooth/hci_qca.c
> +++ b/drivers/bluetooth/hci_qca.c
> @@ -508,6 +508,8 @@ static int qca_open(struct hci_uart *hu)
> qcadev = serdev_device_get_drvdata(hu->serdev);
> if (qcadev->btsoc_type != QCA_WCN3990) {
> gpiod_set_value_cansleep(qcadev->bt_en, 1);
> + /* Controller needs time to bootup. */
> + msleep(150);
> } else {
> hu->init_speed = qcadev->init_speed;
> hu->oper_speed = qcadev->oper_speed;

2019-03-07 06:49:51

by Balakrishna Godavarthi

[permalink] [raw]
Subject: Re: [PATCH v1] Bluetooth: hci_qca: Give enough time to ROME controller to bootup.

Hi Stepen,

On 2019-03-07 04:03, Stephen Boyd wrote:
> Quoting Balakrishna Godavarthi (2019-03-06 08:21:13)
>> This patch enables enough time to ROME controller to bootup
>> after we bring the enable ping out of reset.
>>
>> Signed-off-by: Balakrishna Godavarthi <[email protected]>
>> ---
>
> Any Fixes tag? And maybe some more explanation or background on where
> 150 ms sleep comes from would be useful. Was it determined
> experimentally or did it come from a datasheet somewhere? Does the time
> differ between boards?
>
[Bala]: this was observed in our stress testing and even the CHIP
firmware team
confirmed that BT chip required at least 150 ms to boot up.

@Rocky to confirm my statement.

>> drivers/bluetooth/hci_qca.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
>> index 237aea34b69f..1953b13511e7 100644
>> --- a/drivers/bluetooth/hci_qca.c
>> +++ b/drivers/bluetooth/hci_qca.c
>> @@ -508,6 +508,8 @@ static int qca_open(struct hci_uart *hu)
>> qcadev = serdev_device_get_drvdata(hu->serdev);
>> if (qcadev->btsoc_type != QCA_WCN3990) {
>> gpiod_set_value_cansleep(qcadev->bt_en, 1);
>> + /* Controller needs time to bootup. */
>> + msleep(150);
>> } else {
>> hu->init_speed = qcadev->init_speed;
>> hu->oper_speed = qcadev->oper_speed;

--
Regards
Balakrishna.

2019-03-07 06:52:56

by Rocky Liao

[permalink] [raw]
Subject: Re: [PATCH v1] Bluetooth: hci_qca: Give enough time to ROME controller to bootup.

在 2019-03-07 14:49,Balakrishna Godavarthi 写道:
> Hi Stepen,
>
> On 2019-03-07 04:03, Stephen Boyd wrote:
>> Quoting Balakrishna Godavarthi (2019-03-06 08:21:13)
>>> This patch enables enough time to ROME controller to bootup
>>> after we bring the enable ping out of reset.
>>>
>>> Signed-off-by: Balakrishna Godavarthi <[email protected]>
>>> ---
>>
>> Any Fixes tag? And maybe some more explanation or background on where
>> 150 ms sleep comes from would be useful. Was it determined
>> experimentally or did it come from a datasheet somewhere? Does the
>> time
>> differ between boards?
>>
> [Bala]: this was observed in our stress testing and even the CHIP
> firmware team
> confirmed that BT chip required at least 150 ms to boot up.
>
> @Rocky to confirm my statement.
>
>>> drivers/bluetooth/hci_qca.c | 2 ++
>>> 1 file changed, 2 insertions(+)
>>>
>>> diff --git a/drivers/bluetooth/hci_qca.c
>>> b/drivers/bluetooth/hci_qca.c
>>> index 237aea34b69f..1953b13511e7 100644
>>> --- a/drivers/bluetooth/hci_qca.c
>>> +++ b/drivers/bluetooth/hci_qca.c
>>> @@ -508,6 +508,8 @@ static int qca_open(struct hci_uart *hu)
>>> qcadev = serdev_device_get_drvdata(hu->serdev);
>>> if (qcadev->btsoc_type != QCA_WCN3990) {
>>> gpiod_set_value_cansleep(qcadev->bt_en, 1);
>>> + /* Controller needs time to bootup. */
>>> + msleep(150);
>>> } else {
>>> hu->init_speed = qcadev->init_speed;
>>> hu->oper_speed = qcadev->oper_speed;

Yes,ROME firmware needs 150ms to boot up after toggle the BT_EN pin.

2019-03-08 05:15:33

by Rocky Liao

[permalink] [raw]
Subject: Re: [PATCH v1] Bluetooth: hci_qca: Give enough time to ROME controller to bootup.

在 2019-03-07 00:21,Balakrishna Godavarthi 写道:
> This patch enables enough time to ROME controller to bootup
> after we bring the enable ping out of reset.
>
> Signed-off-by: Balakrishna Godavarthi <[email protected]>
> ---
> drivers/bluetooth/hci_qca.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
> index 237aea34b69f..1953b13511e7 100644
> --- a/drivers/bluetooth/hci_qca.c
> +++ b/drivers/bluetooth/hci_qca.c
> @@ -508,6 +508,8 @@ static int qca_open(struct hci_uart *hu)
> qcadev = serdev_device_get_drvdata(hu->serdev);
> if (qcadev->btsoc_type != QCA_WCN3990) {
> gpiod_set_value_cansleep(qcadev->bt_en, 1);
> + /* Controller needs time to bootup. */
> + msleep(150);
> } else {
> hu->init_speed = qcadev->init_speed;
> hu->oper_speed = qcadev->oper_speed;
Reviewed-by: Rocky Liao <[email protected]>
Tested-by: Rocky Liao <[email protected]>

2019-03-13 09:45:14

by Rocky Liao

[permalink] [raw]
Subject: Re: [PATCH v1] Bluetooth: hci_qca: Give enough time to ROME controller to bootup.

在 2019-03-07 14:49,Balakrishna Godavarthi 写道:
> Hi Stepen,
>
> On 2019-03-07 04:03, Stephen Boyd wrote:
>> Quoting Balakrishna Godavarthi (2019-03-06 08:21:13)
>>> This patch enables enough time to ROME controller to bootup
>>> after we bring the enable ping out of reset.
>>>
>>> Signed-off-by: Balakrishna Godavarthi <[email protected]>
>>> ---
>>
>> Any Fixes tag? And maybe some more explanation or background on where
>> 150 ms sleep comes from would be useful. Was it determined
>> experimentally or did it come from a datasheet somewhere? Does the
>> time
>> differ between boards?
>>
> [Bala]: this was observed in our stress testing and even the CHIP
> firmware team
> confirmed that BT chip required at least 150 ms to boot up.
>
> @Rocky to confirm my statement.
>
>>> drivers/bluetooth/hci_qca.c | 2 ++
>>> 1 file changed, 2 insertions(+)
>>>
>>> diff --git a/drivers/bluetooth/hci_qca.c
>>> b/drivers/bluetooth/hci_qca.c
>>> index 237aea34b69f..1953b13511e7 100644
>>> --- a/drivers/bluetooth/hci_qca.c
>>> +++ b/drivers/bluetooth/hci_qca.c
>>> @@ -508,6 +508,8 @@ static int qca_open(struct hci_uart *hu)
>>> qcadev = serdev_device_get_drvdata(hu->serdev);
>>> if (qcadev->btsoc_type != QCA_WCN3990) {
>>> gpiod_set_value_cansleep(qcadev->bt_en, 1);
>>> + /* Controller needs time to bootup. */
>>> + msleep(150);
>>> } else {
>>> hu->init_speed = qcadev->init_speed;
>>> hu->oper_speed = qcadev->oper_speed;

Hello,

Any concern to merge this change? Without this change the Rome cannot up
while running the serdev way, we should mainline this change ASAP.

2019-03-19 00:49:54

by Nicolas Boichat

[permalink] [raw]
Subject: Re: [PATCH v1] Bluetooth: hci_qca: Give enough time to ROME controller to bootup.

On Wed, Mar 13, 2019 at 5:45 PM <[email protected]> wrote:
>
> 在 2019-03-07 14:49,Balakrishna Godavarthi 写道:
> > Hi Stepen,
> >
> > On 2019-03-07 04:03, Stephen Boyd wrote:
> >> Quoting Balakrishna Godavarthi (2019-03-06 08:21:13)
> >>> This patch enables enough time to ROME controller to bootup
> >>> after we bring the enable ping out of reset.
> >>>
> >>> Signed-off-by: Balakrishna Godavarthi <[email protected]>
> >>> ---
> >>
> >> Any Fixes tag? And maybe some more explanation or background on where
> >> 150 ms sleep comes from would be useful. Was it determined
> >> experimentally or did it come from a datasheet somewhere? Does the
> >> time
> >> differ between boards?
> >>
> > [Bala]: this was observed in our stress testing and even the CHIP
> > firmware team
> > confirmed that BT chip required at least 150 ms to boot up.
> >
> > @Rocky to confirm my statement.
> >
> >>> drivers/bluetooth/hci_qca.c | 2 ++
> >>> 1 file changed, 2 insertions(+)
> >>>
> >>> diff --git a/drivers/bluetooth/hci_qca.c
> >>> b/drivers/bluetooth/hci_qca.c
> >>> index 237aea34b69f..1953b13511e7 100644
> >>> --- a/drivers/bluetooth/hci_qca.c
> >>> +++ b/drivers/bluetooth/hci_qca.c
> >>> @@ -508,6 +508,8 @@ static int qca_open(struct hci_uart *hu)
> >>> qcadev = serdev_device_get_drvdata(hu->serdev);
> >>> if (qcadev->btsoc_type != QCA_WCN3990) {
> >>> gpiod_set_value_cansleep(qcadev->bt_en, 1);
> >>> + /* Controller needs time to bootup. */
> >>> + msleep(150);
> >>> } else {
> >>> hu->init_speed = qcadev->init_speed;
> >>> hu->oper_speed = qcadev->oper_speed;
>
> Hello,
>
> Any concern to merge this change? Without this change the Rome cannot up
> while running the serdev way, we should mainline this change ASAP.

Stephen was also asking about a Fixes tag, maybe we should add this?
Fixes: 05ba533c5c11 ("Bluetooth: hci_qca: Add serdev support")

2019-03-19 02:35:38

by Claire Chang

[permalink] [raw]
Subject: Re: [PATCH v1] Bluetooth: hci_qca: Give enough time to ROME controller to bootup.

> > >>> Signed-off-by: Balakrishna Godavarthi <[email protected]>
Tested-by: Claire Chang <[email protected]>