Skip to content

Commit a529ecf

Browse files
lumagVudentz
authored andcommitted
Bluetooth: qca: enable pwrseq support for WCN39xx devices
The WCN39xx family of WiFi/BT chips incorporates a simple PMU, spreading voltages over internal rails. Implement support for using powersequencer for this family of QCA devices in addition to using regulators. Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
1 parent 77a65e8 commit a529ecf

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

drivers/bluetooth/hci_qca.c

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2241,6 +2241,18 @@ static void qca_power_off(struct hci_uart *hu)
22412241
qcadev = serdev_device_get_drvdata(hu->serdev);
22422242
power = qcadev->bt_power;
22432243

2244+
switch (soc_type) {
2245+
case QCA_WCN3988:
2246+
case QCA_WCN3990:
2247+
case QCA_WCN3991:
2248+
case QCA_WCN3998:
2249+
host_set_baudrate(hu, 2400);
2250+
qca_send_power_pulse(hu, false);
2251+
break;
2252+
default:
2253+
break;
2254+
}
2255+
22442256
if (power && power->pwrseq) {
22452257
pwrseq_power_off(power->pwrseq);
22462258
set_bit(QCA_BT_OFF, &qca->flags);
@@ -2252,8 +2264,6 @@ static void qca_power_off(struct hci_uart *hu)
22522264
case QCA_WCN3990:
22532265
case QCA_WCN3991:
22542266
case QCA_WCN3998:
2255-
host_set_baudrate(hu, 2400);
2256-
qca_send_power_pulse(hu, false);
22572267
qca_regulator_disable(qcadev);
22582268
break;
22592269

@@ -2425,6 +2435,11 @@ static int qca_serdev_probe(struct serdev_device *serdev)
24252435
}
24262436

24272437
switch (qcadev->btsoc_type) {
2438+
case QCA_WCN3950:
2439+
case QCA_WCN3988:
2440+
case QCA_WCN3990:
2441+
case QCA_WCN3991:
2442+
case QCA_WCN3998:
24282443
case QCA_WCN6750:
24292444
case QCA_WCN6855:
24302445
case QCA_WCN7850:
@@ -2449,12 +2464,7 @@ static int qca_serdev_probe(struct serdev_device *serdev)
24492464
else
24502465
break;
24512466
}
2452-
fallthrough;
2453-
case QCA_WCN3950:
2454-
case QCA_WCN3988:
2455-
case QCA_WCN3990:
2456-
case QCA_WCN3991:
2457-
case QCA_WCN3998:
2467+
24582468
qcadev->bt_power->dev = &serdev->dev;
24592469
err = qca_init_regulators(qcadev->bt_power, data->vregs,
24602470
data->num_vregs);

0 commit comments

Comments
 (0)