Skip to content

Commit eba1718

Browse files
Bartosz GolaszewskiVudentz
authored andcommitted
Bluetooth: hci_qca: make pwrseq calls the default if available
If the device has a power sequencing handle, use it first. Otherwise fall back to whatever code already exists. Signed-off-by: Bartosz Golaszewski <[email protected]> Signed-off-by: Luiz Augusto von Dentz <[email protected]>
1 parent b809315 commit eba1718

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

drivers/bluetooth/hci_qca.c

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1718,6 +1718,7 @@ static int qca_regulator_init(struct hci_uart *hu)
17181718
* off the voltage regulator.
17191719
*/
17201720
qcadev = serdev_device_get_drvdata(hu->serdev);
1721+
17211722
if (!qcadev->bt_power->vregs_on) {
17221723
serdev_device_close(hu->serdev);
17231724
ret = qca_regulator_enable(qcadev);
@@ -1800,18 +1801,8 @@ static int qca_power_on(struct hci_dev *hdev)
18001801
case QCA_WCN6750:
18011802
case QCA_WCN6855:
18021803
case QCA_WCN7850:
1803-
ret = qca_regulator_init(hu);
1804-
break;
1805-
18061804
case QCA_QCA6390:
1807-
qcadev = serdev_device_get_drvdata(hu->serdev);
1808-
ret = pwrseq_power_on(qcadev->bt_power->pwrseq);
1809-
if (ret)
1810-
return ret;
1811-
1812-
ret = qca_port_reopen(hu);
1813-
if (ret)
1814-
return ret;
1805+
ret = qca_regulator_init(hu);
18151806
break;
18161807

18171808
default:
@@ -2149,6 +2140,7 @@ static void qca_power_shutdown(struct hci_uart *hu)
21492140
unsigned long flags;
21502141
enum qca_btsoc_type soc_type = qca_soc_type(hu);
21512142
bool sw_ctrl_state;
2143+
struct qca_power *power;
21522144

21532145
/* From this point we go into power off state. But serial port is
21542146
* still open, stop queueing the IBS data and flush all the buffered
@@ -2166,6 +2158,13 @@ static void qca_power_shutdown(struct hci_uart *hu)
21662158
return;
21672159

21682160
qcadev = serdev_device_get_drvdata(hu->serdev);
2161+
power = qcadev->bt_power;
2162+
2163+
if (power->pwrseq) {
2164+
pwrseq_power_off(power->pwrseq);
2165+
set_bit(QCA_BT_OFF, &qca->flags);
2166+
return;
2167+
}
21692168

21702169
switch (soc_type) {
21712170
case QCA_WCN3988:
@@ -2227,6 +2226,9 @@ static int qca_regulator_enable(struct qca_serdev *qcadev)
22272226
struct qca_power *power = qcadev->bt_power;
22282227
int ret;
22292228

2229+
if (power->pwrseq)
2230+
return pwrseq_power_on(power->pwrseq);
2231+
22302232
/* Already enabled */
22312233
if (power->vregs_on)
22322234
return 0;

0 commit comments

Comments
 (0)