Message ID | 1615376496-13577-1-git-send-email-gubbaven@codeaurora.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [RFC,v1] Bluetooth: hci_qca: Add device_may_wakeup support | expand |
On Wed 10 Mar 05:41 CST 2021, Venkata Lakshmi Narayana Gubba wrote: > Added device_may_wakeup() support. This would be an excellent place to describe _why_ this is necessary, instead of just repeating $subject. Something along the lines of the comment in the patch. Regards, Bjorn > > Signed-off-by: Venkata Lakshmi Narayana Gubba <gubbaven@codeaurora.org> > --- > drivers/bluetooth/hci_qca.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c > index de36af6..73af901 100644 > --- a/drivers/bluetooth/hci_qca.c > +++ b/drivers/bluetooth/hci_qca.c > @@ -1571,6 +1571,20 @@ static void qca_cmd_timeout(struct hci_dev *hdev) > mutex_unlock(&qca->hci_memdump_lock); > } > > +static bool qca_prevent_wake(struct hci_dev *hdev) > +{ > + struct hci_uart *hu = hci_get_drvdata(hdev); > + bool wakeup; > + > + /* UART driver handles the interrupt from BT SoC.So we need to use > + * device handle of UART driver to get the status of device may wakeup. > + */ > + wakeup = device_may_wakeup(hu->serdev->ctrl->dev.parent); > + bt_dev_dbg(hu->hdev, "wakeup status : %d", wakeup); > + > + return !wakeup; > +} > + > static int qca_wcn3990_init(struct hci_uart *hu) > { > struct qca_serdev *qcadev; > @@ -1721,6 +1735,7 @@ static int qca_setup(struct hci_uart *hu) > qca_debugfs_init(hdev); > hu->hdev->hw_error = qca_hw_error; > hu->hdev->cmd_timeout = qca_cmd_timeout; > + hu->hdev->prevent_wake = qca_prevent_wake; > } else if (ret == -ENOENT) { > /* No patch/nvm-config found, run with original fw/config */ > set_bit(QCA_ROM_FW, &qca->flags); > -- > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member > of Code Aurora Forum, hosted by The Linux Foundation >
Hi Bjorn, On 2021-03-10 20:32, Bjorn Andersson wrote: > On Wed 10 Mar 05:41 CST 2021, Venkata Lakshmi Narayana Gubba wrote: > >> Added device_may_wakeup() support. > > This would be an excellent place to describe _why_ this is necessary, > instead of just repeating $subject. > > Something along the lines of the comment in the patch. > > Regards, > Bjorn > [Venkata]: Sure.I will update in next patch. >> >> Signed-off-by: Venkata Lakshmi Narayana Gubba >> <gubbaven@codeaurora.org> >> --- >> drivers/bluetooth/hci_qca.c | 15 +++++++++++++++ >> 1 file changed, 15 insertions(+) >> >> diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c >> index de36af6..73af901 100644 >> --- a/drivers/bluetooth/hci_qca.c >> +++ b/drivers/bluetooth/hci_qca.c >> @@ -1571,6 +1571,20 @@ static void qca_cmd_timeout(struct hci_dev >> *hdev) >> mutex_unlock(&qca->hci_memdump_lock); >> } >> >> +static bool qca_prevent_wake(struct hci_dev *hdev) >> +{ >> + struct hci_uart *hu = hci_get_drvdata(hdev); >> + bool wakeup; >> + >> + /* UART driver handles the interrupt from BT SoC.So we need to use >> + * device handle of UART driver to get the status of device may >> wakeup. >> + */ >> + wakeup = device_may_wakeup(hu->serdev->ctrl->dev.parent); >> + bt_dev_dbg(hu->hdev, "wakeup status : %d", wakeup); >> + >> + return !wakeup; >> +} >> + >> static int qca_wcn3990_init(struct hci_uart *hu) >> { >> struct qca_serdev *qcadev; >> @@ -1721,6 +1735,7 @@ static int qca_setup(struct hci_uart *hu) >> qca_debugfs_init(hdev); >> hu->hdev->hw_error = qca_hw_error; >> hu->hdev->cmd_timeout = qca_cmd_timeout; >> + hu->hdev->prevent_wake = qca_prevent_wake; >> } else if (ret == -ENOENT) { >> /* No patch/nvm-config found, run with original fw/config */ >> set_bit(QCA_ROM_FW, &qca->flags); >> -- >> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a >> member >> of Code Aurora Forum, hosted by The Linux Foundation >> Regards, Venkata.
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index de36af6..73af901 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -1571,6 +1571,20 @@ static void qca_cmd_timeout(struct hci_dev *hdev) mutex_unlock(&qca->hci_memdump_lock); } +static bool qca_prevent_wake(struct hci_dev *hdev) +{ + struct hci_uart *hu = hci_get_drvdata(hdev); + bool wakeup; + + /* UART driver handles the interrupt from BT SoC.So we need to use + * device handle of UART driver to get the status of device may wakeup. + */ + wakeup = device_may_wakeup(hu->serdev->ctrl->dev.parent); + bt_dev_dbg(hu->hdev, "wakeup status : %d", wakeup); + + return !wakeup; +} + static int qca_wcn3990_init(struct hci_uart *hu) { struct qca_serdev *qcadev; @@ -1721,6 +1735,7 @@ static int qca_setup(struct hci_uart *hu) qca_debugfs_init(hdev); hu->hdev->hw_error = qca_hw_error; hu->hdev->cmd_timeout = qca_cmd_timeout; + hu->hdev->prevent_wake = qca_prevent_wake; } else if (ret == -ENOENT) { /* No patch/nvm-config found, run with original fw/config */ set_bit(QCA_ROM_FW, &qca->flags);
Added device_may_wakeup() support. Signed-off-by: Venkata Lakshmi Narayana Gubba <gubbaven@codeaurora.org> --- drivers/bluetooth/hci_qca.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)