diff options
author | Rolando Roca <rolandor@valvesoftware.com> | 2023-09-20 14:36:38 -0700 |
---|---|---|
committer | Christian Marcheselli <christianm@valvesoftware.com> | 2023-11-09 10:47:59 -0800 |
commit | 69be18f81e69dfa29b0304c956c27a6ccb510e71 (patch) | |
tree | 6fea09fc1bfe95b811af940534c0737c39911ea0 | |
parent | 58dc35e5b1636353d8be27c1a30eaf3c584bf917 (diff) | |
download | linux-69be18f81e69dfa29b0304c956c27a6ccb510e71.tar.gz |
[Zhongjun.yu][BT]: Added host changes related to the BR/EDR/LE gamepad wake-up.
<Change Type>: FR(Feature Request) <<< Test Notes >>> <Test-Proposal>: 1)BT function(power on/restart/connect/disconnect/iop) 2)BT BR/EDR gamepad wakeup function 3)BT BLE gamepad wakeup function <Stress-Test>: Y
-rw-r--r-- | drivers/bluetooth/hci_qca.c | 3 | ||||
-rw-r--r-- | net/bluetooth/hci_sync.c | 8 |
2 files changed, 7 insertions, 4 deletions
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index a345cb5318ba..e7361dfe858a 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -1770,7 +1770,8 @@ retry: qca_debugfs_init(hdev); hu->hdev->hw_error = qca_hw_error; hu->hdev->cmd_timeout = qca_cmd_timeout; - hu->hdev->wakeup = qca_wakeup; + if (device_can_wakeup(hu->serdev->ctrl->dev.parent)) + hu->hdev->wakeup = qca_wakeup; } else if (ret == -ENOENT) { /* No patch/nvm-config found, run with original fw/config */ set_bit(QCA_ROM_FW, &qca->flags); diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index 2ae038dfc39f..ad1fd9ee4d88 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -3785,12 +3785,14 @@ static int hci_set_event_mask_sync(struct hci_dev *hdev) if (lmp_bredr_capable(hdev)) { events[4] |= 0x01; /* Flow Specification Complete */ - /* Don't set Disconnect Complete when suspended as that - * would wakeup the host when disconnecting due to + /* Don't set Disconnect Complete and mode change when suspended + * as that would wakeup the host when disconnecting due to * suspend. */ - if (hdev->suspended) + if (hdev->suspended){ events[0] &= 0xef; + events[2] &= 0xf7; + } } else { /* Use a different default for LE-only devices */ memset(events, 0, sizeof(events)); |