[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87im1fzxn0.fsf@kernel.org>
Date: Mon, 12 Jul 2021 12:31:31 +0300
From: Felipe Balbi <balbi@...nel.org>
To: Sandeep Maheswaram <sanm@...eaurora.org>,
Andy Gross <agross@...nel.org>,
Bjorn Andersson <bjorn.andersson@...aro.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.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,
Pratham Pratap <prathampratap@...eaurora.org>,
Sandeep Maheswaram <sanm@...eaurora.org>
Subject: Re: [PATCH v8 2/6] usb: host: xhci: plat: Add suspend quirk for
dwc3 controller
Hi,
Sandeep Maheswaram <sanm@...eaurora.org> writes:
> During suspend read the status of all port and make sure the PHYs
> are in the correct mode based on current speed.
> Phy interrupt masks are set based on this mode. Keep track of the mode
> of the HS PHY to be able to configure wakeup properly.
>
> Also check during suspend if any wakeup capable devices are
> connected to the controller (directly or through hubs), if there
> are none set a flag to indicate that the PHY should be powered
> down during suspend.
>
> Signed-off-by: Sandeep Maheswaram <sanm@...eaurora.org>
> ---
> drivers/usb/host/xhci-plat.c | 38 ++++++++++++++++++++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
> index c1edcc9..ee87923 100644
> --- a/drivers/usb/host/xhci-plat.c
> +++ b/drivers/usb/host/xhci-plat.c
> @@ -24,6 +24,7 @@
> #include "xhci-plat.h"
> #include "xhci-mvebu.h"
> #include "xhci-rcar.h"
> +#include "../dwc3/core.h"
>
> static struct hc_driver __read_mostly xhci_plat_hc_driver;
>
> @@ -430,6 +431,39 @@ static int xhci_plat_remove(struct platform_device *dev)
>
> return 0;
> }
> +static void xhci_dwc3_suspend_quirk(struct usb_hcd *hcd)
> +{
> + int i, num_ports;
> + u32 reg;
> + unsigned int ss_phy_mode = 0;
> + struct dwc3 *dwc = dev_get_drvdata(hcd->self.controller->parent);
> + struct xhci_hcd *xhci_hcd = hcd_to_xhci(hcd);
> +
> + dwc->hs_phy_mode = 0;
you're still bypassing the driver layering. First you had dwc access
xhci, now you want xhci to access dwc. Either way is wrong. You need to
rely on drivers core and device properties for this stuff. Don't access
data you don't own.
--
balbi
Download attachment "signature.asc" of type "application/pgp-signature" (512 bytes)
Powered by blists - more mailing lists