[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1642398248-21753-2-git-send-email-quic_c_sanm@quicinc.com>
Date: Mon, 17 Jan 2022 11:14:03 +0530
From: Sandeep Maheswaram <quic_c_sanm@...cinc.com>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Felipe Balbi <balbi@...nel.org>,
Stephen Boyd <swboyd@...omium.org>,
Doug Anderson <dianders@...omium.org>,
Matthias Kaehlcke <mka@...omium.org>,
Mathias Nyman <mathias.nyman@...el.com>
CC: <linux-arm-msm@...r.kernel.org>, <linux-usb@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <quic_pkondeti@...cinc.com>,
<quic_ppratap@...cinc.com>,
Sandeep Maheswaram <quic_c_sanm@...cinc.com>
Subject: [PATCH v10 1/6] usb: host: xhci: plat: Add suspend quirk for dwc3 controller
During suspend check if any wakeup capable devices are connected to the
controller (directly or through hubs), and set the wakeup enable property
for xhci plat device.
Signed-off-by: Sandeep Maheswaram <quic_c_sanm@...cinc.com>
Signed-off-by: Matthias Kaehlcke <mka@...omium.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@...aro.org>
---
Change device_set_wakeup_capable to device_set_wakeup_enable as
wakeup capable false was deleting the sysfs property.
drivers/usb/host/xhci-plat.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index c1edcc9..1c8fadb 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -431,6 +431,14 @@ static int xhci_plat_remove(struct platform_device *dev)
return 0;
}
+static void xhci_dwc3_suspend_quirk(struct usb_hcd *hcd, struct device *dev)
+{
+ if (usb_wakeup_enabled_descendants(hcd->self.root_hub))
+ device_set_wakeup_enable(dev, true);
+ else
+ device_set_wakeup_enable(dev, false);
+}
+
static int __maybe_unused xhci_plat_suspend(struct device *dev)
{
struct usb_hcd *hcd = dev_get_drvdata(dev);
@@ -440,6 +448,10 @@ static int __maybe_unused xhci_plat_suspend(struct device *dev)
ret = xhci_priv_suspend_quirk(hcd);
if (ret)
return ret;
+
+ if (of_device_is_compatible(dev->parent->of_node, "snps,dwc3"))
+ xhci_dwc3_suspend_quirk(hcd, dev);
+
/*
* xhci_suspend() needs `do_wakeup` to know whether host is allowed
* to do wakeup during suspend.
--
2.7.4
Powered by blists - more mailing lists