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 |
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;
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;
在 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.
在 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>
在 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.
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")
> > >>> Signed-off-by: Balakrishna Godavarthi <bgodavar@codeaurora.org> Tested-by: Claire Chang <tientzu@chromium.org>
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;
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(+)