Message ID | 848d3d5baf23eb78411a9672b8973ae3c593db98.1656285304.git.objelf@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] Bluetooth: btmtksdio: Add in-band wakeup support | expand |
Il 27/06/22 01:27, sean.wang@mediatek.com ha scritto: > From: Sean Wang <sean.wang@mediatek.com> > > Commit ce64b3e94919 ("Bluetooth: mt7921s: Support wake on bluetooth") > adds the wake on bluethooth via a dedicated GPIO. > > Extend the wake-on-bluetooth to use the SDIO DAT1 pin (in-band wakeup), > when supported by the SDIO host driver. > > Co-developed-by: Yake Yang <yake.yang@mediatek.com> > Signed-off-by: Yake Yang <yake.yang@mediatek.com> > Signed-off-by: Sean Wang <sean.wang@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Hello: This patch was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>: On Mon, 27 Jun 2022 07:27:36 +0800 you wrote: > From: Sean Wang <sean.wang@mediatek.com> > > Commit ce64b3e94919 ("Bluetooth: mt7921s: Support wake on bluetooth") > adds the wake on bluethooth via a dedicated GPIO. > > Extend the wake-on-bluetooth to use the SDIO DAT1 pin (in-band wakeup), > when supported by the SDIO host driver. > > [...] Here is the summary with links: - [v3] Bluetooth: btmtksdio: Add in-band wakeup support https://git.kernel.org/bluetooth/bluetooth-next/c/681ec6abcd7f You are awesome, thank you!
diff --git a/drivers/bluetooth/btmtksdio.c b/drivers/bluetooth/btmtksdio.c index d6700efcfe8c..f9a3444753c2 100644 --- a/drivers/bluetooth/btmtksdio.c +++ b/drivers/bluetooth/btmtksdio.c @@ -1282,6 +1282,13 @@ static void btmtksdio_cmd_timeout(struct hci_dev *hdev) hci_reset_dev(hdev); } +static bool btmtksdio_sdio_inband_wakeup(struct hci_dev *hdev) +{ + struct btmtksdio_dev *bdev = hci_get_drvdata(hdev); + + return device_may_wakeup(bdev->dev); +} + static bool btmtksdio_sdio_wakeup(struct hci_dev *hdev) { struct btmtksdio_dev *bdev = hci_get_drvdata(hdev); @@ -1349,6 +1356,14 @@ static int btmtksdio_probe(struct sdio_func *func, hdev->shutdown = btmtksdio_shutdown; hdev->send = btmtksdio_send_frame; hdev->wakeup = btmtksdio_sdio_wakeup; + /* + * If SDIO controller supports wake on Bluetooth, sending a wakeon + * command is not necessary. + */ + if (device_can_wakeup(func->card->host->parent)) + hdev->wakeup = btmtksdio_sdio_inband_wakeup; + else + hdev->wakeup = btmtksdio_sdio_wakeup; hdev->set_bdaddr = btmtk_set_bdaddr; SET_HCIDEV_DEV(hdev, &func->dev);