diff mbox series

[v1] Bluetooth: hci_qca: Give enough time to ROME controller to bootup.

Message ID 20190306162113.8585-1-bgodavar@codeaurora.org (mailing list archive)
State Not Applicable, archived
Delegated to: Andy Gross
Headers show
Series [v1] Bluetooth: hci_qca: Give enough time to ROME controller to bootup. | expand

Commit Message

Balakrishna Godavarthi March 6, 2019, 4:21 p.m. UTC
This patch enables enough time to ROME controller to bootup
after we bring the enable ping out of reset.

Signed-off-by: Balakrishna Godavarthi <bgodavar@codeaurora.org>
---
 drivers/bluetooth/hci_qca.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Stephen Boyd March 6, 2019, 10:33 p.m. UTC | #1
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 <bgodavar@codeaurora.org>
> ---

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;
Balakrishna Godavarthi March 7, 2019, 6:49 a.m. UTC | #2
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 <bgodavar@codeaurora.org>
>> ---
> 
> 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;
Rocky Liao March 7, 2019, 6:52 a.m. UTC | #3
在 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 <bgodavar@codeaurora.org>
>>> ---
>> 
>> 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.
Rocky Liao March 8, 2019, 5:15 a.m. UTC | #4
在 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 <bgodavar@codeaurora.org>
> ---
>  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 <rjliao@codeaurora.org>
Tested-by: Rocky Liao <rjliao@codeaurora.org>
Rocky Liao March 13, 2019, 9:45 a.m. UTC | #5
在 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 <bgodavar@codeaurora.org>
>>> ---
>> 
>> 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.
Nicolas Boichat March 19, 2019, 12:49 a.m. UTC | #6
On Wed, Mar 13, 2019 at 5:45 PM <rjliao@codeaurora.org> 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 <bgodavar@codeaurora.org>
> >>> ---
> >>
> >> 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")
Claire Chang March 19, 2019, 2:35 a.m. UTC | #7
> > >>> Signed-off-by: Balakrishna Godavarthi <bgodavar@codeaurora.org>
Tested-by: Claire Chang <tientzu@chromium.org>
diff mbox series

Patch

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;