All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] Bluetooth: hci_qca: Optimizations in init sequence for WCN6750.
@ 2021-11-25 13:17 pharish
  2021-11-25 13:17 ` [PATCH v1] Bluetooth: hci_qca: Stop IBS timer during BT OFF pharish
  2021-11-25 18:44 ` [PATCH v1] Bluetooth: hci_qca: Optimizations in init sequence for WCN6750 Marcel Holtmann
  0 siblings, 2 replies; 5+ messages in thread
From: pharish @ 2021-11-25 13:17 UTC (permalink / raw)
  To: marcel, johan.hedberg
  Cc: mka, linux-kernel, linux-bluetooth, hemantg, linux-arm-msm,
	bgodavar, rjliao, hbandi, abhishekpandit, mcchou, saluvala,
	pharish

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(-)

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) {
-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member 
of Code Aurora Forum, hosted by The Linux Foundation


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v1] Bluetooth: hci_qca: Stop IBS timer during BT OFF
  2021-11-25 13:17 [PATCH v1] Bluetooth: hci_qca: Optimizations in init sequence for WCN6750 pharish
@ 2021-11-25 13:17 ` pharish
  2021-11-25 18:42   ` Marcel Holtmann
  2021-11-25 18:44 ` [PATCH v1] Bluetooth: hci_qca: Optimizations in init sequence for WCN6750 Marcel Holtmann
  1 sibling, 1 reply; 5+ messages in thread
From: pharish @ 2021-11-25 13:17 UTC (permalink / raw)
  To: marcel, johan.hedberg
  Cc: mka, linux-kernel, linux-bluetooth, hemantg, linux-arm-msm,
	bgodavar, rjliao, hbandi, abhishekpandit, mcchou, saluvala,
	pharish

This change stops IBS timers during BT OFF.

Signed-off-by: pharish <pharish@codeaurora.org>
---
 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);
+
 	/* Stop sending shutdown command if soc crashes. */
 	if (soc_type != QCA_ROME
 		&& qca->memdump_state == QCA_MEMDUMP_IDLE) {
-- 
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member 
of Code Aurora Forum, hosted by The Linux Foundation


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v1] Bluetooth: hci_qca: Stop IBS timer during BT OFF
  2021-11-25 13:17 ` [PATCH v1] Bluetooth: hci_qca: Stop IBS timer during BT OFF pharish
@ 2021-11-25 18:42   ` Marcel Holtmann
  2021-12-07  5:39     ` pharish
  0 siblings, 1 reply; 5+ messages in thread
From: Marcel Holtmann @ 2021-11-25 18:42 UTC (permalink / raw)
  To: pharish
  Cc: Johan Hedberg, mka, linux-kernel, linux-bluetooth, hemantg,
	linux-arm-msm, bgodavar, rjliao, hbandi, abhishekpandit, mcchou,
	saluvala

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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v1] Bluetooth: hci_qca: Optimizations in init sequence for WCN6750.
  2021-11-25 13:17 [PATCH v1] Bluetooth: hci_qca: Optimizations in init sequence for WCN6750 pharish
  2021-11-25 13:17 ` [PATCH v1] Bluetooth: hci_qca: Stop IBS timer during BT OFF pharish
@ 2021-11-25 18:44 ` Marcel Holtmann
  1 sibling, 0 replies; 5+ messages in thread
From: Marcel Holtmann @ 2021-11-25 18:44 UTC (permalink / raw)
  To: pharish
  Cc: Johan Hedberg, Matthias Kaehlcke, linux-kernel, linux-bluetooth,
	hemantg, linux-arm-msm, bgodavar, rjliao, hbandi, abhishekpandit,
	mcchou, saluvala

Hi,

> This change adds optimazation in init sequence for WCN6750.

you need to explain what you are doing.
> 
> Signed-off-by: pharish <pharish@codeaurora.org>
> ---
> drivers/bluetooth/hci_qca.c | 18 +++++++++++-------
> 1 file changed, 11 insertions(+), 7 deletions(-)
> 
> 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;
> +			}

I am really not doing this. You need to stop doing this SoC X or SoC Y crap. I said this before and I am saying this again, start from scratch and write a clean serdev only driver. Adding things to hci_qca is just a hack.

> 		}
> 	}
> 
> @@ -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.
> 	 */
> +

Unrelated change.

> 	serdev_device_close(hu->serdev);
> 	ret = serdev_device_open(hu->serdev);
> 	if (ret) {

Regards

Marcel


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v1] Bluetooth: hci_qca: Stop IBS timer during BT OFF
  2021-11-25 18:42   ` Marcel Holtmann
@ 2021-12-07  5:39     ` pharish
  0 siblings, 0 replies; 5+ messages in thread
From: pharish @ 2021-12-07  5:39 UTC (permalink / raw)
  To: Marcel Holtmann
  Cc: Johan Hedberg, mka, linux-kernel, linux-bluetooth, hemantg,
	linux-arm-msm, bgodavar, rjliao, hbandi, abhishekpandit, mcchou,
	saluvala

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-12-07  5:39 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-25 13:17 [PATCH v1] Bluetooth: hci_qca: Optimizations in init sequence for WCN6750 pharish
2021-11-25 13:17 ` [PATCH v1] Bluetooth: hci_qca: Stop IBS timer during BT OFF pharish
2021-11-25 18:42   ` Marcel Holtmann
2021-12-07  5:39     ` pharish
2021-11-25 18:44 ` [PATCH v1] Bluetooth: hci_qca: Optimizations in init sequence for WCN6750 Marcel Holtmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.