Message ID | 1637846230-4798-1-git-send-email-pharish@codeaurora.org |
---|---|
State | New |
Headers | show |
Series | [v1] Bluetooth: hci_qca: Optimizations in init sequence for WCN6750. | expand |
Hi, > This change stops IBS timers during BT OFF. > > Signed-off-by: pharish <pharish@codeaurora.org> clear name please. > --- > drivers/bluetooth/hci_qca.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c > index dd768a8..6f44b26 100644 > --- a/drivers/bluetooth/hci_qca.c > +++ b/drivers/bluetooth/hci_qca.c > @@ -1928,6 +1928,9 @@ static int qca_power_off(struct hci_dev *hdev) > hu->hdev->hw_error = NULL; > hu->hdev->cmd_timeout = NULL; > > + mod_timer(&qca->tx_idle_timer, 0); > + mod_timer(&qca->wake_retrans_timer, 0); > + And I would really prefer if this gets changed to use a workqueue instead of a timer. Regards Marcel
On 2021-11-26 00:12, Marcel Holtmann wrote: > Hi, > >> This change stops IBS timers during BT OFF. >> >> Signed-off-by: pharish <pharish@codeaurora.org> > > clear name please. [Harish]: will update > >> --- >> drivers/bluetooth/hci_qca.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c >> index dd768a8..6f44b26 100644 >> --- a/drivers/bluetooth/hci_qca.c >> +++ b/drivers/bluetooth/hci_qca.c >> @@ -1928,6 +1928,9 @@ static int qca_power_off(struct hci_dev *hdev) >> hu->hdev->hw_error = NULL; >> hu->hdev->cmd_timeout = NULL; >> >> + mod_timer(&qca->tx_idle_timer, 0); >> + mod_timer(&qca->wake_retrans_timer, 0); >> + > > And I would really prefer if this gets changed to use a workqueue > instead of a timer. [Harish]: The full implementation of IBS is based on timers to that reason I have switched to timers. > > Regards > > Marcel
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 6f44b26..4dedaaa 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -1603,15 +1603,19 @@ static int qca_regulator_init(struct hci_uart *hu) */ qcadev = serdev_device_get_drvdata(hu->serdev); if (!qcadev->bt_power->vregs_on) { - serdev_device_close(hu->serdev); + if (qca_is_wcn399x(soc_type)) + serdev_device_close(hu->serdev); + ret = qca_regulator_enable(qcadev); if (ret) return ret; - ret = serdev_device_open(hu->serdev); - if (ret) { - bt_dev_err(hu->hdev, "failed to open port"); - return ret; + if (qca_is_wcn399x(soc_type)) { + ret = serdev_device_open(hu->serdev); + if (ret) { + bt_dev_err(hu->hdev, "failed to open port"); + return ret; + } } } @@ -1635,9 +1639,8 @@ static int qca_regulator_init(struct hci_uart *hu) } } - qca_set_speed(hu, QCA_INIT_SPEED); - if (qca_is_wcn399x(soc_type)) { + qca_set_speed(hu, QCA_INIT_SPEED); ret = qca_send_power_pulse(hu, true); if (ret) return ret; @@ -1648,6 +1651,7 @@ static int qca_regulator_init(struct hci_uart *hu) * Without this, we will have RTS and CTS synchronization * issues. */ + serdev_device_close(hu->serdev); ret = serdev_device_open(hu->serdev); if (ret) {
This change adds optimazation in init sequence for WCN6750. Signed-off-by: pharish <pharish@codeaurora.org> --- drivers/bluetooth/hci_qca.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)