Re: [PATCH v3] Bluetooth: hci_qca: disable power control for WCN7850 when bt_en is not defined
From: Neil Armstrong
Date: Fri Oct 16 2026 - 02:50:29 EST
On 3/24/26 03:30, Shuai Zhang wrote:
On platforms using an M.2 slot with both UART and USB support, bt_en is
pulled high by hardware. In this case, software-based power control
should be disabled. The current platforms are Lemans-EVK and Monaco-EVK.
Add QCA_WCN7850 to the existing condition so that power_ctrl_enabled is
cleared when bt_en is not software-controlled (or absent), aligning its
behavior with WCN6750 and WCN6855
Signed-off-by: Shuai Zhang <shuai.zhang@xxxxxxxxxxxxxxxx>
---
Changes for v3
- Add change history.
- Link to v2: https://lore.kernel.org/all/20260319075125.76539-1-shuai.zhang@xxxxxxxxxxxxxxxx/
Changes for v2
- Expand the commit description to include the affected platforms.
- Link to v1: https://lore.kernel.org/all/20260319031040.4096297-1-shuai.zhang@xxxxxxxxxxxxxxxx/
---
drivers/bluetooth/hci_qca.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index c17a462aef55..4512ff7cd0c0 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -2484,7 +2484,8 @@ static int qca_serdev_probe(struct serdev_device *serdev)
if (!qcadev->bt_en &&
(data->soc_type == QCA_WCN6750 ||
- data->soc_type == QCA_WCN6855))
+ data->soc_type == QCA_WCN6855 ||
+ data->soc_type == QCA_WCN7850))
power_ctrl_enabled = false;
This disables power_ctrl for WCN7850 soldered down on the main board and handled by pwrseq, which is a regression.
When pwrseq handles the QCA_WCN7850 qcadev->bt_en is obviously NULL, but qcadev->bt_power->pwrseq is not.
The test should be `if (!qcadev->bt_en && !qcadev->bt_power && !qcadev->bt_power->pwrseq`
Neil
qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl",