Bluetooth: hci_qca: move the SoC type check to the right place
Subsystems (3)
PATCH 1/1 Bluetooth: hci_qca: move the SoC type check to the right place
From: Bartosz Golaszewski <[email protected]>
Commit 3d05fc82237a ("Bluetooth: qca: set power_ctrl_enabled on NULL returned by gpiod_get_optional()") accidentally changed the prevous behavior where power control would be disabled without the BT_EN GPIO only on QCA_WCN6750 and QCA_WCN6855 while also getting the error check wrong. We should treat every IS_ERR() return value from devm_gpiod_get_optional() as a reason to bail-out while we should only set power_ctrl_enabled to false on the two models mentioned above. While at it: use dev_err_probe() to save a LOC.
--- drivers/bluetooth/hci_qca.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/bluetooth/hci_qca.c +7 -7
@@ -2415,14 +2415,14 @@ static int qca_serdev_probe(struct serdev_device *serdev) qcadev->bt_en =devm_gpiod_get_optional (&serdev->dev,"enable" ,GPIOD_OUT_LOW ); -if (IS_ERR (qcadev->bt_en) && - (data->soc_type ==QCA_WCN6750 || - data->soc_type ==QCA_WCN6855 )) { -dev_err (&serdev->dev,"failed to acquire BT_EN gpio\n" ); -return PTR_ERR (qcadev->bt_en); - } +if (IS_ERR (qcadev->bt_en)) +return dev_err_probe (&serdev->dev, +PTR_ERR (qcadev->bt_en), +"failed to acquire BT_EN gpio\n" ); -if (!qcadev->bt_en) +if (!qcadev->bt_en && + (data->soc_type ==QCA_WCN6750 || + data->soc_type ==QCA_WCN6855 )) power_ctrl_enabled = false; qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl",
Signature · 1 line
2.48.1
Quoted 10 lines · Bartosz Golaszewski
From: Bartosz Golaszewski <[email protected]>
Commit
3d05fc82237a("Bluetooth: qca: setpower_ctrl_enabledon NULL returned bygpiod_get_optional()") accidentally changed the prevous behavior where power control would be disabled without theBT_ENGPIO only onQCA_WCN6750andQCA_WCN6855while also getting the error check wrong. We should treat everyIS_ERR()return value fromdevm_gpiod_get_optional()as a reason to bail-out while we should only setpower_ctrl_enabledto false on the two models mentioned above. While at it: usedev_err_probe()to save a LOC.
... and to fix spamming kernel logs on deferred probe.
Best regards,
Krzysztof
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=966577
---Test result---
Test Summary:
CheckPatch PENDING 0.36 seconds GitLint PENDING 0.24 seconds SubjectPrefix PASS 0.12 seconds BuildKernel PASS 24.24 seconds CheckAllWarning PASS 27.40 seconds CheckSparse PASS 30.50 seconds BuildKernel32 PASS 24.08 seconds TestRunnerSetup PASS 455.94 seconds TestRunner_l2cap-tester PASS 25.19 seconds TestRunner_iso-tester PASS 41.68 seconds TestRunner_bnep-tester PASS 5.98 seconds TestRunner_mgmt-tester FAIL 131.47 seconds TestRunner_rfcomm-tester PASS 9.30 seconds TestRunner_sco-tester PASS 14.75 seconds TestRunner_ioctl-tester PASS 9.99 seconds TestRunner_mesh-tester PASS 7.39 seconds TestRunner_smp-tester PASS 8.55 seconds TestRunner_userchan-tester PASS 6.25 seconds IncrementalBuild PENDING 0.65 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: 490, Passed: 485 (99.0%), Failed: 1, Not Run: 4
Failed Test Cases
LL Privacy - Set Flags 2 (Enable RL) Failed 0.192 seconds
##############################
Test: IncrementalBuild - PENDING
Desc: Incremental build with the patches in the series Output:
---
Regards,
Linux Bluetooth
Quoted 5 lines · Bartosz Golaszewski
From: Bartosz Golaszewski <[email protected]>
Commit
3d05fc82237a("Bluetooth: qca: setpower_ctrl_enabledon NULL returned bygpiod_get_optional()") accidentally changed the prevous
typo: previous
Quoted 41 lines
behavior where power control would be disabled without the
BT_ENGPIO only onQCA_WCN6750andQCA_WCN6855while also getting the error check wrong. We should treat everyIS_ERR()return value fromdevm_gpiod_get_optional()as a reason to bail-out while we should only setpower_ctrl_enabledto false on the two models mentioned above. While at it: usedev_err_probe()to save a LOC.Fixes 3d05fc82237a ("Bluetooth: qca: set power_ctrl_enabled on NULL returned by gpiod_get_optional()")Signed-off-by Bartosz Golaszewski <[email protected]>--- drivers/bluetooth/hci_qca.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)drivers/bluetooth/hci_qca.c +7
-8@@ -2415,14 +2415,14 @@ static int qca_serdev_probe(struct serdev_device *serdev) qcadev->bt_en =devm_gpiod_get_optional (&serdev->dev,"enable" ,GPIOD_OUT_LOW ); -if (IS_ERR (qcadev->bt_en) && - (data->soc_type ==QCA_WCN6750 || - data->soc_type ==QCA_WCN6855 )) { -dev_err (&serdev->dev,"failed to acquire BT_EN gpio\n" ); -return PTR_ERR (qcadev->bt_en); - } +if (IS_ERR (qcadev->bt_en)) +return dev_err_probe (&serdev->dev, +PTR_ERR (qcadev->bt_en), +"failed to acquire BT_EN gpio\n" ); -if (!qcadev->bt_en) +if (!qcadev->bt_en && + (data->soc_type ==QCA_WCN6750 || + data->soc_type ==QCA_WCN6855 )) power_ctrl_enabled = false; qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl", --
Quoted 2 lines
2.48.1
Thanks for the fix!
Tested on a Chromebook device with WCN3991 chip.
Without the patch the hdev->reset callback would make the HCI device unrecoverable, and with the patch the callback can reset the HCI device smoothly.
Best Regards,
Hsin-chen
This patch was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <[email protected]>:
Hello:
This patch was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <[email protected]>:
Quoted 11 lines · On Tue, 27 May 2025 09:47:37 +0200 you wrote:
From: Bartosz Golaszewski <[email protected]>
Commit
3d05fc82237a("Bluetooth: qca: setpower_ctrl_enabledon NULL returned bygpiod_get_optional()") accidentally changed the prevous behavior where power control would be disabled without theBT_ENGPIO only onQCA_WCN6750andQCA_WCN6855while also getting the error check wrong. We should treat everyIS_ERR()return value fromdevm_gpiod_get_optional()as a reason to bail-out while we should only setpower_ctrl_enabledto false on the two models mentioned above. While at it: usedev_err_probe()to save a LOC.
Quoted 1 line
[...]
Here is the summary with links:
- Bluetooth: hci_qca: move the SoC type check to the right place
https://git.kernel.org/bluetooth/bluetooth-next/c/8df2c74d466c
You are awesome, thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html