* [PATCH v1 0/2] Bluetooth: hci_qca: Refactor HFP hardware offload capability handling
@ 2026-01-23 5:52 Mengshi Wu
2026-01-23 5:52 ` [PATCH v1 1/2] " Mengshi Wu
2026-01-23 5:52 ` [PATCH v1 2/2] Bluetooth: hci_qca: Enable HFP hardware offload for QCA2066 and WCN6855 Mengshi Wu
0 siblings, 2 replies; 8+ messages in thread
From: Mengshi Wu @ 2026-01-23 5:52 UTC (permalink / raw)
To: Bartosz Golaszewski, Marcel Holtmann, Luiz Augusto von Dentz
Cc: linux-arm-msm, linux-bluetooth, linux-kernel, shuai.zhang,
cheng.jiang, chezhou, wei.deng, yiboz, Mengshi Wu
Changes from v1:
- Refactor HFP hardware offload capability handling.
- Enable HFP hardware offload for QCA2066 and WCN6855.
Mengshi Wu (2):
Bluetooth: hci_qca: Refactor HFP hardware offload capability handling
Bluetooth: hci_qca: Enable HFP hardware offload for QCA2066 and
WCN6855
drivers/bluetooth/hci_qca.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH v1 1/2] Bluetooth: hci_qca: Refactor HFP hardware offload capability handling
2026-01-23 5:52 [PATCH v1 0/2] Bluetooth: hci_qca: Refactor HFP hardware offload capability handling Mengshi Wu
@ 2026-01-23 5:52 ` Mengshi Wu
2026-01-23 6:47 ` bluez.test.bot
2026-01-23 19:26 ` [PATCH v1 1/2] " Dmitry Baryshkov
2026-01-23 5:52 ` [PATCH v1 2/2] Bluetooth: hci_qca: Enable HFP hardware offload for QCA2066 and WCN6855 Mengshi Wu
1 sibling, 2 replies; 8+ messages in thread
From: Mengshi Wu @ 2026-01-23 5:52 UTC (permalink / raw)
To: Bartosz Golaszewski, Marcel Holtmann, Luiz Augusto von Dentz
Cc: linux-arm-msm, linux-bluetooth, linux-kernel, shuai.zhang,
cheng.jiang, chezhou, wei.deng, yiboz, Mengshi Wu
Replace SoC-specific check with capability-based approach for HFP
hardware offload configuration. Add QCA_CAP_HFP_HW_OFFLOAD capability
flag and support_hfp_hw_offload field to qca_serdev structure.
Signed-off-by: Mengshi Wu <mengshi.wu@oss.qualcomm.com>
---
drivers/bluetooth/hci_qca.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index 888176b0f..4e1e113f4 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -87,6 +87,7 @@ enum qca_flags {
enum qca_capabilities {
QCA_CAP_WIDEBAND_SPEECH = BIT(0),
QCA_CAP_VALID_LE_STATES = BIT(1),
+ QCA_CAP_HFP_HW_OFFLOAD = BIT(2),
};
/* HCI_IBS transmit side sleep protocol states */
@@ -229,6 +230,7 @@ struct qca_serdev {
u32 init_speed;
u32 oper_speed;
bool bdaddr_property_broken;
+ bool support_hfp_hw_offload;
const char *firmware_name[2];
};
@@ -1879,7 +1881,7 @@ static int qca_setup(struct hci_uart *hu)
const char *rampatch_name = qca_get_rampatch_name(hu);
int ret;
struct qca_btsoc_version ver;
- struct qca_serdev *qcadev;
+ struct qca_serdev *qcadev = serdev_device_get_drvdata(hu->serdev);
const char *soc_name;
ret = qca_check_speeds(hu);
@@ -1943,7 +1945,6 @@ static int qca_setup(struct hci_uart *hu)
case QCA_WCN6750:
case QCA_WCN6855:
case QCA_WCN7850:
- qcadev = serdev_device_get_drvdata(hu->serdev);
if (qcadev->bdaddr_property_broken)
hci_set_quirk(hdev, HCI_QUIRK_BDADDR_PROPERTY_BROKEN);
@@ -2033,7 +2034,7 @@ static int qca_setup(struct hci_uart *hu)
else
hu->hdev->set_bdaddr = qca_set_bdaddr;
- if (soc_type == QCA_QCA2066)
+ if (qcadev->support_hfp_hw_offload)
qca_configure_hfp_offload(hdev);
qca->fw_version = le16_to_cpu(ver.patch_ver);
@@ -2502,6 +2503,9 @@ static int qca_serdev_probe(struct serdev_device *serdev)
if (!(data->capabilities & QCA_CAP_VALID_LE_STATES))
hci_set_quirk(hdev, HCI_QUIRK_BROKEN_LE_STATES);
+
+ if (data->capabilities & QCA_CAP_HFP_HW_OFFLOAD)
+ qcadev->support_hfp_hw_offload = true;
}
return 0;
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* RE: Bluetooth: hci_qca: Refactor HFP hardware offload capability handling
2026-01-23 5:52 ` [PATCH v1 1/2] " Mengshi Wu
@ 2026-01-23 6:47 ` bluez.test.bot
2026-01-23 19:26 ` [PATCH v1 1/2] " Dmitry Baryshkov
1 sibling, 0 replies; 8+ messages in thread
From: bluez.test.bot @ 2026-01-23 6:47 UTC (permalink / raw)
To: linux-bluetooth, mengshi.wu
[-- Attachment #1: Type: text/plain, Size: 2861 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=1046029
---Test result---
Test Summary:
CheckPatch PENDING 0.45 seconds
GitLint PENDING 0.39 seconds
SubjectPrefix PASS 0.15 seconds
BuildKernel PASS 22.62 seconds
CheckAllWarning PASS 25.33 seconds
CheckSparse PASS 27.72 seconds
BuildKernel32 PASS 22.33 seconds
TestRunnerSetup PASS 500.06 seconds
TestRunner_l2cap-tester FAIL 27.84 seconds
TestRunner_iso-tester PASS 70.76 seconds
TestRunner_bnep-tester PASS 6.26 seconds
TestRunner_mgmt-tester FAIL 119.66 seconds
TestRunner_rfcomm-tester PASS 9.36 seconds
TestRunner_sco-tester FAIL 14.22 seconds
TestRunner_ioctl-tester PASS 10.08 seconds
TestRunner_mesh-tester FAIL 10.42 seconds
TestRunner_smp-tester PASS 8.44 seconds
TestRunner_userchan-tester PASS 6.57 seconds
IncrementalBuild PENDING 0.45 seconds
Details
##############################
Test: CheckPatch - PENDING
Desc: Run checkpatch.pl script
Output:
##############################
Test: GitLint - PENDING
Desc: Run gitlint
Output:
##############################
Test: TestRunner_l2cap-tester - FAIL
Desc: Run l2cap-tester with test-runner
Output:
Total: 96, Passed: 95 (99.0%), Failed: 1, Not Run: 0
Failed Test Cases
L2CAP BR/EDR Client - Set PHY 3M Failed 0.110 seconds
##############################
Test: TestRunner_mgmt-tester - FAIL
Desc: Run mgmt-tester with test-runner
Output:
Total: 494, Passed: 489 (99.0%), Failed: 1, Not Run: 4
Failed Test Cases
Read Exp Feature - Success Failed 0.104 seconds
##############################
Test: TestRunner_sco-tester - FAIL
Desc: Run sco-tester with test-runner
Output:
WARNING: possible circular locking dependency detected
BUG: sleeping function called from invalid context at net/core/sock.c:3782
Total: 30, Passed: 30 (100.0%), Failed: 0, Not Run: 0
##############################
Test: TestRunner_mesh-tester - FAIL
Desc: Run mesh-tester with test-runner
Output:
Total: 10, Passed: 8 (80.0%), Failed: 2, Not Run: 0
Failed Test Cases
Mesh - Send cancel - 1 Failed 0.129 seconds
Mesh - Send cancel - 2 Timed out 2.694 seconds
##############################
Test: IncrementalBuild - PENDING
Desc: Incremental build with the patches in the series
Output:
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 1/2] Bluetooth: hci_qca: Refactor HFP hardware offload capability handling
2026-01-23 5:52 ` [PATCH v1 1/2] " Mengshi Wu
2026-01-23 6:47 ` bluez.test.bot
@ 2026-01-23 19:26 ` Dmitry Baryshkov
2026-01-26 16:20 ` Mengshi Wu
1 sibling, 1 reply; 8+ messages in thread
From: Dmitry Baryshkov @ 2026-01-23 19:26 UTC (permalink / raw)
To: Mengshi Wu
Cc: Bartosz Golaszewski, Marcel Holtmann, Luiz Augusto von Dentz,
linux-arm-msm, linux-bluetooth, linux-kernel, shuai.zhang,
cheng.jiang, chezhou, wei.deng, yiboz
On Fri, Jan 23, 2026 at 01:52:42PM +0800, Mengshi Wu wrote:
> Replace SoC-specific check with capability-based approach for HFP
> hardware offload configuration. Add QCA_CAP_HFP_HW_OFFLOAD capability
> flag and support_hfp_hw_offload field to qca_serdev structure.
>
> Signed-off-by: Mengshi Wu <mengshi.wu@oss.qualcomm.com>
> ---
> drivers/bluetooth/hci_qca.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> @@ -2033,7 +2034,7 @@ static int qca_setup(struct hci_uart *hu)
> else
> hu->hdev->set_bdaddr = qca_set_bdaddr;
>
> - if (soc_type == QCA_QCA2066)
> + if (qcadev->support_hfp_hw_offload)
At this point QCA2066 becomes broken until the next commit. This is not
a proper way to do things. At the very least, squash the first chunk of
your next commit into this patch.
> qca_configure_hfp_offload(hdev);
>
> qca->fw_version = le16_to_cpu(ver.patch_ver);
> @@ -2502,6 +2503,9 @@ static int qca_serdev_probe(struct serdev_device *serdev)
>
> if (!(data->capabilities & QCA_CAP_VALID_LE_STATES))
> hci_set_quirk(hdev, HCI_QUIRK_BROKEN_LE_STATES);
> +
> + if (data->capabilities & QCA_CAP_HFP_HW_OFFLOAD)
> + qcadev->support_hfp_hw_offload = true;
> }
>
> return 0;
> --
> 2.34.1
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1 1/2] Bluetooth: hci_qca: Refactor HFP hardware offload capability handling
2026-01-23 19:26 ` [PATCH v1 1/2] " Dmitry Baryshkov
@ 2026-01-26 16:20 ` Mengshi Wu
0 siblings, 0 replies; 8+ messages in thread
From: Mengshi Wu @ 2026-01-26 16:20 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Bartosz Golaszewski, Marcel Holtmann, Luiz Augusto von Dentz,
linux-arm-msm, linux-bluetooth, linux-kernel, shuai.zhang,
cheng.jiang, chezhou, wei.deng, yiboz
Hi,
On 1/24/2026 3:26 AM, Dmitry Baryshkov wrote:
> On Fri, Jan 23, 2026 at 01:52:42PM +0800, Mengshi Wu wrote:
>> Replace SoC-specific check with capability-based approach for HFP
>> hardware offload configuration. Add QCA_CAP_HFP_HW_OFFLOAD capability
>> flag and support_hfp_hw_offload field to qca_serdev structure.
>>
>> Signed-off-by: Mengshi Wu <mengshi.wu@oss.qualcomm.com>
>> ---
>> drivers/bluetooth/hci_qca.c | 10 +++++++---
>> 1 file changed, 7 insertions(+), 3 deletions(-)
>>
>> @@ -2033,7 +2034,7 @@ static int qca_setup(struct hci_uart *hu)
>> else
>> hu->hdev->set_bdaddr = qca_set_bdaddr;
>>
>> - if (soc_type == QCA_QCA2066)
>> + if (qcadev->support_hfp_hw_offload)
>
> At this point QCA2066 becomes broken until the next commit. This is not
> a proper way to do things. At the very least, squash the first chunk of
> your next commit into this patch.
Thanks for comments. I will fix this.
>
>> qca_configure_hfp_offload(hdev);
>>
>> qca->fw_version = le16_to_cpu(ver.patch_ver);
>> @@ -2502,6 +2503,9 @@ static int qca_serdev_probe(struct serdev_device *serdev)
>>
>> if (!(data->capabilities & QCA_CAP_VALID_LE_STATES))
>> hci_set_quirk(hdev, HCI_QUIRK_BROKEN_LE_STATES);
>> +
>> + if (data->capabilities & QCA_CAP_HFP_HW_OFFLOAD)
>> + qcadev->support_hfp_hw_offload = true;
>> }
>>
>> return 0;
>> --
>> 2.34.1
>>
>
--
Best regards,
Mengshi Wu
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v1 2/2] Bluetooth: hci_qca: Enable HFP hardware offload for QCA2066 and WCN6855
2026-01-23 5:52 [PATCH v1 0/2] Bluetooth: hci_qca: Refactor HFP hardware offload capability handling Mengshi Wu
2026-01-23 5:52 ` [PATCH v1 1/2] " Mengshi Wu
@ 2026-01-23 5:52 ` Mengshi Wu
1 sibling, 0 replies; 8+ messages in thread
From: Mengshi Wu @ 2026-01-23 5:52 UTC (permalink / raw)
To: Bartosz Golaszewski, Marcel Holtmann, Luiz Augusto von Dentz
Cc: linux-arm-msm, linux-bluetooth, linux-kernel, shuai.zhang,
cheng.jiang, chezhou, wei.deng, yiboz, Mengshi Wu
Add QCA_CAP_HFP_HW_OFFLOAD capability flag to QCA2066 and WCN6855
device data structures to enable Hands-Free Profile (HFP) hardware
offload support on these Qualcomm Bluetooth chipsets.
Signed-off-by: Mengshi Wu <mengshi.wu@oss.qualcomm.com>
---
drivers/bluetooth/hci_qca.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index 4e1e113f4..212a92bbf 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -2118,7 +2118,8 @@ static const struct qca_device_data qca_soc_data_wcn3998 __maybe_unused = {
static const struct qca_device_data qca_soc_data_qca2066 __maybe_unused = {
.soc_type = QCA_QCA2066,
.num_vregs = 0,
- .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES,
+ .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES |
+ QCA_CAP_HFP_HW_OFFLOAD,
};
static const struct qca_device_data qca_soc_data_qca6390 __maybe_unused = {
@@ -2154,7 +2155,8 @@ static const struct qca_device_data qca_soc_data_wcn6855 __maybe_unused = {
{ "vddrfa1p2", 257000 },
},
.num_vregs = 6,
- .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES,
+ .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES |
+ QCA_CAP_HFP_HW_OFFLOAD,
};
static const struct qca_device_data qca_soc_data_wcn7850 __maybe_unused = {
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 1/2] Bluetooth: hci_qca: Refactor HFP hardware offload capability handling
@ 2026-01-26 16:24 Mengshi Wu
2026-01-26 16:49 ` bluez.test.bot
0 siblings, 1 reply; 8+ messages in thread
From: Mengshi Wu @ 2026-01-26 16:24 UTC (permalink / raw)
To: Bartosz Golaszewski, Marcel Holtmann, Luiz Augusto von Dentz
Cc: linux-arm-msm, linux-bluetooth, linux-kernel, shuai.zhang,
cheng.jiang, chezhou, wei.deng, yiboz, Mengshi Wu
Replace SoC-specific check with capability-based approach for HFP
hardware offload configuration. Add QCA_CAP_HFP_HW_OFFLOAD capability
flag and support_hfp_hw_offload field to qca_serdev structure. Add
QCA_CAP_HFP_HW_OFFLOAD capability flag to QCA2066 device data
structures.
Signed-off-by: Mengshi Wu <mengshi.wu@oss.qualcomm.com>
---
drivers/bluetooth/hci_qca.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index 888176b0f..b99fdda88 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -87,6 +87,7 @@ enum qca_flags {
enum qca_capabilities {
QCA_CAP_WIDEBAND_SPEECH = BIT(0),
QCA_CAP_VALID_LE_STATES = BIT(1),
+ QCA_CAP_HFP_HW_OFFLOAD = BIT(2),
};
/* HCI_IBS transmit side sleep protocol states */
@@ -229,6 +230,7 @@ struct qca_serdev {
u32 init_speed;
u32 oper_speed;
bool bdaddr_property_broken;
+ bool support_hfp_hw_offload;
const char *firmware_name[2];
};
@@ -1879,7 +1881,7 @@ static int qca_setup(struct hci_uart *hu)
const char *rampatch_name = qca_get_rampatch_name(hu);
int ret;
struct qca_btsoc_version ver;
- struct qca_serdev *qcadev;
+ struct qca_serdev *qcadev = serdev_device_get_drvdata(hu->serdev);
const char *soc_name;
ret = qca_check_speeds(hu);
@@ -1943,7 +1945,6 @@ static int qca_setup(struct hci_uart *hu)
case QCA_WCN6750:
case QCA_WCN6855:
case QCA_WCN7850:
- qcadev = serdev_device_get_drvdata(hu->serdev);
if (qcadev->bdaddr_property_broken)
hci_set_quirk(hdev, HCI_QUIRK_BDADDR_PROPERTY_BROKEN);
@@ -2033,7 +2034,7 @@ static int qca_setup(struct hci_uart *hu)
else
hu->hdev->set_bdaddr = qca_set_bdaddr;
- if (soc_type == QCA_QCA2066)
+ if (qcadev->support_hfp_hw_offload)
qca_configure_hfp_offload(hdev);
qca->fw_version = le16_to_cpu(ver.patch_ver);
@@ -2117,7 +2118,8 @@ static const struct qca_device_data qca_soc_data_wcn3998 __maybe_unused = {
static const struct qca_device_data qca_soc_data_qca2066 __maybe_unused = {
.soc_type = QCA_QCA2066,
.num_vregs = 0,
- .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES,
+ .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES |
+ QCA_CAP_HFP_HW_OFFLOAD,
};
static const struct qca_device_data qca_soc_data_qca6390 __maybe_unused = {
@@ -2502,6 +2504,9 @@ static int qca_serdev_probe(struct serdev_device *serdev)
if (!(data->capabilities & QCA_CAP_VALID_LE_STATES))
hci_set_quirk(hdev, HCI_QUIRK_BROKEN_LE_STATES);
+
+ if (data->capabilities & QCA_CAP_HFP_HW_OFFLOAD)
+ qcadev->support_hfp_hw_offload = true;
}
return 0;
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* RE: Bluetooth: hci_qca: Refactor HFP hardware offload capability handling
2026-01-26 16:24 [PATCH v2 1/2] Bluetooth: hci_qca: Refactor HFP hardware offload capability handling Mengshi Wu
@ 2026-01-26 16:49 ` bluez.test.bot
0 siblings, 0 replies; 8+ messages in thread
From: bluez.test.bot @ 2026-01-26 16:49 UTC (permalink / raw)
To: linux-bluetooth, mengshi.wu
[-- Attachment #1: Type: text/plain, Size: 2672 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=1047176
---Test result---
Test Summary:
CheckPatch PENDING 0.45 seconds
GitLint PENDING 0.47 seconds
SubjectPrefix PASS 0.12 seconds
BuildKernel PASS 25.26 seconds
CheckAllWarning PASS 27.50 seconds
CheckSparse PASS 31.06 seconds
BuildKernel32 PASS 24.66 seconds
TestRunnerSetup PASS 550.08 seconds
TestRunner_l2cap-tester PASS 28.06 seconds
TestRunner_iso-tester PASS 67.01 seconds
TestRunner_bnep-tester PASS 6.11 seconds
TestRunner_mgmt-tester FAIL 117.00 seconds
TestRunner_rfcomm-tester PASS 9.27 seconds
TestRunner_sco-tester FAIL 14.41 seconds
TestRunner_ioctl-tester PASS 9.96 seconds
TestRunner_mesh-tester FAIL 12.55 seconds
TestRunner_smp-tester PASS 8.55 seconds
TestRunner_userchan-tester PASS 6.54 seconds
IncrementalBuild PENDING 0.95 seconds
Details
##############################
Test: CheckPatch - PENDING
Desc: Run checkpatch.pl script
Output:
##############################
Test: GitLint - PENDING
Desc: Run gitlint
Output:
##############################
Test: TestRunner_mgmt-tester - FAIL
Desc: Run mgmt-tester with test-runner
Output:
Total: 494, Passed: 488 (98.8%), Failed: 2, Not Run: 4
Failed Test Cases
Read Exp Feature - Success Failed 0.105 seconds
LL Privacy - Start Discovery 2 (Disable RL) Failed 0.182 seconds
##############################
Test: TestRunner_sco-tester - FAIL
Desc: Run sco-tester with test-runner
Output:
WARNING: possible circular locking dependency detected
BUG: sleeping function called from invalid context at net/core/sock.c:3782
Total: 30, Passed: 30 (100.0%), Failed: 0, Not Run: 0
##############################
Test: TestRunner_mesh-tester - FAIL
Desc: Run mesh-tester with test-runner
Output:
Total: 10, Passed: 8 (80.0%), Failed: 2, Not Run: 0
Failed Test Cases
Mesh - Send cancel - 1 Timed out 2.776 seconds
Mesh - Send cancel - 2 Timed out 1.996 seconds
##############################
Test: IncrementalBuild - PENDING
Desc: Incremental build with the patches in the series
Output:
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 1/2] Bluetooth: hci_qca: Refactor HFP hardware offload capability handling
@ 2026-01-27 2:54 Mengshi Wu
2026-01-27 3:43 ` bluez.test.bot
0 siblings, 1 reply; 8+ messages in thread
From: Mengshi Wu @ 2026-01-27 2:54 UTC (permalink / raw)
To: Bartosz Golaszewski, Marcel Holtmann, Luiz Augusto von Dentz
Cc: linux-arm-msm, linux-bluetooth, linux-kernel, shuai.zhang,
cheng.jiang, chezhou, wei.deng, yiboz, Mengshi Wu,
Dmitry Baryshkov
Replace SoC-specific check with capability-based approach for HFP
hardware offload configuration. Add QCA_CAP_HFP_HW_OFFLOAD capability
flag and support_hfp_hw_offload field to qca_serdev structure. Add
QCA_CAP_HFP_HW_OFFLOAD capability flag to QCA2066 device data
structures.
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Mengshi Wu <mengshi.wu@oss.qualcomm.com>
---
drivers/bluetooth/hci_qca.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index 888176b0f..b99fdda88 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -87,6 +87,7 @@ enum qca_flags {
enum qca_capabilities {
QCA_CAP_WIDEBAND_SPEECH = BIT(0),
QCA_CAP_VALID_LE_STATES = BIT(1),
+ QCA_CAP_HFP_HW_OFFLOAD = BIT(2),
};
/* HCI_IBS transmit side sleep protocol states */
@@ -229,6 +230,7 @@ struct qca_serdev {
u32 init_speed;
u32 oper_speed;
bool bdaddr_property_broken;
+ bool support_hfp_hw_offload;
const char *firmware_name[2];
};
@@ -1879,7 +1881,7 @@ static int qca_setup(struct hci_uart *hu)
const char *rampatch_name = qca_get_rampatch_name(hu);
int ret;
struct qca_btsoc_version ver;
- struct qca_serdev *qcadev;
+ struct qca_serdev *qcadev = serdev_device_get_drvdata(hu->serdev);
const char *soc_name;
ret = qca_check_speeds(hu);
@@ -1943,7 +1945,6 @@ static int qca_setup(struct hci_uart *hu)
case QCA_WCN6750:
case QCA_WCN6855:
case QCA_WCN7850:
- qcadev = serdev_device_get_drvdata(hu->serdev);
if (qcadev->bdaddr_property_broken)
hci_set_quirk(hdev, HCI_QUIRK_BDADDR_PROPERTY_BROKEN);
@@ -2033,7 +2034,7 @@ static int qca_setup(struct hci_uart *hu)
else
hu->hdev->set_bdaddr = qca_set_bdaddr;
- if (soc_type == QCA_QCA2066)
+ if (qcadev->support_hfp_hw_offload)
qca_configure_hfp_offload(hdev);
qca->fw_version = le16_to_cpu(ver.patch_ver);
@@ -2117,7 +2118,8 @@ static const struct qca_device_data qca_soc_data_wcn3998 __maybe_unused = {
static const struct qca_device_data qca_soc_data_qca2066 __maybe_unused = {
.soc_type = QCA_QCA2066,
.num_vregs = 0,
- .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES,
+ .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES |
+ QCA_CAP_HFP_HW_OFFLOAD,
};
static const struct qca_device_data qca_soc_data_qca6390 __maybe_unused = {
@@ -2502,6 +2504,9 @@ static int qca_serdev_probe(struct serdev_device *serdev)
if (!(data->capabilities & QCA_CAP_VALID_LE_STATES))
hci_set_quirk(hdev, HCI_QUIRK_BROKEN_LE_STATES);
+
+ if (data->capabilities & QCA_CAP_HFP_HW_OFFLOAD)
+ qcadev->support_hfp_hw_offload = true;
}
return 0;
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* RE: Bluetooth: hci_qca: Refactor HFP hardware offload capability handling
2026-01-27 2:54 [PATCH v3 1/2] " Mengshi Wu
@ 2026-01-27 3:43 ` bluez.test.bot
0 siblings, 0 replies; 8+ messages in thread
From: bluez.test.bot @ 2026-01-27 3:43 UTC (permalink / raw)
To: linux-bluetooth, mengshi.wu
[-- Attachment #1: Type: text/plain, Size: 2593 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=1047345
---Test result---
Test Summary:
CheckPatch PENDING 0.28 seconds
GitLint PENDING 0.22 seconds
SubjectPrefix PASS 0.26 seconds
BuildKernel PASS 25.18 seconds
CheckAllWarning PASS 27.98 seconds
CheckSparse PASS 31.47 seconds
BuildKernel32 PASS 25.12 seconds
TestRunnerSetup PASS 557.27 seconds
TestRunner_l2cap-tester PASS 28.78 seconds
TestRunner_iso-tester PASS 55.61 seconds
TestRunner_bnep-tester PASS 6.30 seconds
TestRunner_mgmt-tester FAIL 120.79 seconds
TestRunner_rfcomm-tester PASS 9.50 seconds
TestRunner_sco-tester FAIL 14.70 seconds
TestRunner_ioctl-tester PASS 10.14 seconds
TestRunner_mesh-tester FAIL 12.50 seconds
TestRunner_smp-tester PASS 8.57 seconds
TestRunner_userchan-tester PASS 6.68 seconds
IncrementalBuild PENDING 0.57 seconds
Details
##############################
Test: CheckPatch - PENDING
Desc: Run checkpatch.pl script
Output:
##############################
Test: GitLint - PENDING
Desc: Run gitlint
Output:
##############################
Test: TestRunner_mgmt-tester - FAIL
Desc: Run mgmt-tester with test-runner
Output:
Total: 494, Passed: 489 (99.0%), Failed: 1, Not Run: 4
Failed Test Cases
Read Exp Feature - Success Failed 0.108 seconds
##############################
Test: TestRunner_sco-tester - FAIL
Desc: Run sco-tester with test-runner
Output:
WARNING: possible circular locking dependency detected
BUG: sleeping function called from invalid context at net/core/sock.c:3782
Total: 30, Passed: 30 (100.0%), Failed: 0, Not Run: 0
##############################
Test: TestRunner_mesh-tester - FAIL
Desc: Run mesh-tester with test-runner
Output:
Total: 10, Passed: 8 (80.0%), Failed: 2, Not Run: 0
Failed Test Cases
Mesh - Send cancel - 1 Timed out 2.772 seconds
Mesh - Send cancel - 2 Timed out 1.996 seconds
##############################
Test: IncrementalBuild - PENDING
Desc: Incremental build with the patches in the series
Output:
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-01-27 3:43 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-23 5:52 [PATCH v1 0/2] Bluetooth: hci_qca: Refactor HFP hardware offload capability handling Mengshi Wu
2026-01-23 5:52 ` [PATCH v1 1/2] " Mengshi Wu
2026-01-23 6:47 ` bluez.test.bot
2026-01-23 19:26 ` [PATCH v1 1/2] " Dmitry Baryshkov
2026-01-26 16:20 ` Mengshi Wu
2026-01-23 5:52 ` [PATCH v1 2/2] Bluetooth: hci_qca: Enable HFP hardware offload for QCA2066 and WCN6855 Mengshi Wu
-- strict thread matches above, loose matches on Subject: below --
2026-01-26 16:24 [PATCH v2 1/2] Bluetooth: hci_qca: Refactor HFP hardware offload capability handling Mengshi Wu
2026-01-26 16:49 ` bluez.test.bot
2026-01-27 2:54 [PATCH v3 1/2] " Mengshi Wu
2026-01-27 3:43 ` bluez.test.bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox