From: Sandeep Maheswaram <sanm@codeaurora.org>
To: Andy Gross <agross@kernel.org>,
Bjorn Andersson <bjorn.andersson@linaro.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Felipe Balbi <balbi@kernel.org>,
Stephen Boyd <swboyd@chromium.org>,
Doug Anderson <dianders@chromium.org>,
Matthias Kaehlcke <mka@chromium.org>
Cc: linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
Manu Gautam <mgautam@codeaurora.org>,
Sandeep Maheswaram <sanm@codeaurora.org>
Subject: [PATCH v3 2/5] usb: dwc3: host: Add suspend_quirk for dwc3 host
Date: Tue, 29 Sep 2020 16:17:29 +0530 [thread overview]
Message-ID: <1601376452-31839-3-git-send-email-sanm@codeaurora.org> (raw)
In-Reply-To: <1601376452-31839-1-git-send-email-sanm@codeaurora.org>
Adding suspend quirk function for dwc3 host which will be called
during xhci suspend.
Setting hs_phy_flags, ss_phy_flags and phy mode during host suspend.
Signed-off-by: Sandeep Maheswaram <sanm@codeaurora.org>
---
drivers/usb/dwc3/host.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
index e195176..7f316fa 100644
--- a/drivers/usb/dwc3/host.c
+++ b/drivers/usb/dwc3/host.c
@@ -11,6 +11,13 @@
#include <linux/platform_device.h>
#include "core.h"
+#include "../host/xhci.h"
+#include "../host/xhci-plat.h"
+int xhci_dwc3_suspend_quirk(struct usb_hcd *hcd);
+
+static const struct xhci_plat_priv xhci_plat_dwc3_xhci = {
+ .suspend_quirk = xhci_dwc3_suspend_quirk,
+};
static int dwc3_host_get_irq(struct dwc3 *dwc)
{
@@ -115,6 +122,13 @@ int dwc3_host_init(struct dwc3 *dwc)
}
}
+ ret = platform_device_add_data(xhci, &xhci_plat_dwc3_xhci,
+ sizeof(struct xhci_plat_priv));
+ if (ret) {
+ dev_err(dwc->dev, "failed to add data to xHCI\n");
+ goto err;
+ }
+
ret = platform_device_add(xhci);
if (ret) {
dev_err(dwc->dev, "failed to register xHCI device\n");
@@ -127,6 +141,41 @@ int dwc3_host_init(struct dwc3 *dwc)
return ret;
}
+static void dwc3_set_phy_speed_flags(struct usb_hcd *hcd)
+{
+
+ int i, num_ports;
+ u32 reg;
+ struct device *dev = hcd->self.controller;
+ struct dwc3 *dwc = dev_get_drvdata(dev->parent);
+ struct xhci_hcd *xhci_hcd = hcd_to_xhci(hcd);
+
+ dwc->hs_phy_flags = 0;
+
+ reg = readl(&xhci_hcd->cap_regs->hcs_params1);
+
+ num_ports = HCS_MAX_PORTS(reg);
+ for (i = 0; i < num_ports; i++) {
+ reg = readl(&xhci_hcd->op_regs->port_status_base + i * 0x04);
+ if (reg & PORT_PE) {
+ if (DEV_HIGHSPEED(reg) || DEV_FULLSPEED(reg))
+ dwc->hs_phy_flags |= PHY_MODE_USB_HOST_HS;
+ else if (DEV_LOWSPEED(reg))
+ dwc->hs_phy_flags |= PHY_MODE_USB_HOST_LS;
+ if (DEV_SUPERSPEED(reg))
+ dwc->ss_phy_flags |= PHY_MODE_USB_HOST_SS;
+ }
+ }
+ phy_set_mode(dwc->usb2_generic_phy, dwc->hs_phy_flags);
+ phy_set_mode(dwc->usb3_generic_phy, dwc->ss_phy_flags);
+}
+
+int xhci_dwc3_suspend_quirk(struct usb_hcd *hcd)
+{
+ dwc3_set_phy_speed_flags(hcd);
+ return 0;
+}
+
void dwc3_host_exit(struct dwc3 *dwc)
{
platform_device_unregister(dwc->xhci);
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
next prev parent reply other threads:[~2020-09-29 10:48 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-29 10:47 [PATCH v3 0/5] USB DWC3 host wake up support from system suspend Sandeep Maheswaram
2020-09-29 10:47 ` [PATCH v3 1/5] usb: dwc3: core: Host " Sandeep Maheswaram
2020-09-29 11:42 ` Sergei Shtylyov
2020-09-29 18:17 ` Matthias Kaehlcke
2020-09-29 10:47 ` Sandeep Maheswaram [this message]
2020-09-29 18:50 ` [PATCH v3 2/5] usb: dwc3: host: Add suspend_quirk for dwc3 host Matthias Kaehlcke
2020-09-29 10:47 ` [PATCH v3 3/5] usb: dwc3: qcom: Configure wakeup interrupts and set genpd active wakeup flag Sandeep Maheswaram
2020-09-29 19:01 ` Matthias Kaehlcke
2020-09-29 10:47 ` [PATCH v3 4/5] arm64: dts: qcom: sc7180: Use pdc interrupts for USB instead of GIC interrupts Sandeep Maheswaram
2020-09-29 11:41 ` Sergei Shtylyov
2020-10-01 1:05 ` Stephen Boyd
2020-10-01 8:14 ` Sergei Shtylyov
2020-09-29 10:47 ` [PATCH v3 5/5] arm64: dts: qcom: sc7180: Add wakeup-source property for USB controller node Sandeep Maheswaram
2020-09-29 19:09 ` Matthias Kaehlcke
2020-10-01 1:06 ` Stephen Boyd
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1601376452-31839-3-git-send-email-sanm@codeaurora.org \
--to=sanm@codeaurora.org \
--cc=agross@kernel.org \
--cc=balbi@kernel.org \
--cc=bjorn.andersson@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mgautam@codeaurora.org \
--cc=mka@chromium.org \
--cc=robh+dt@kernel.org \
--cc=swboyd@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.