Thread (1 message) 1 message, 1 author, 2021-05-03

Re: [PATCH v7 1/5] usb: dwc3: host: Set PHY mode during suspend

From: Felipe Balbi <balbi@kernel.org>
Date: 2021-05-03 11:16:48
Also in: linux-arm-msm, lkml

Hi,

Sandeep Maheswaram [off-list ref] writes:
quoted
quoted
@@ -11,6 +11,14 @@
  #include <linux/platform_device.h>
  
  #include "core.h"
+#include "../host/xhci.h"
+#include "../host/xhci-plat.h"
+
+static 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,
+};
we're passing data using device_properties, why do you want this here?
Similar implemenation was done in 
drivers/usb/cdns3/host.c<https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/usb/cdns3/host.c?h=next-20210503> 
then it seems we have two places to correct :-)
quoted
quoted
@@ -127,6 +142,50 @@ int dwc3_host_init(struct dwc3 *dwc)
  	return ret;
  }
  
+static void dwc3_set_phy_mode(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;
+
+	reg = readl(&xhci_hcd->cap_regs->hcs_params1);
+	num_ports = HCS_MAX_PORTS(reg);
there's a big assumption here that xhci is still alive. Why isn't this
quirk implemented in xhci-plat itself?
quoted
+int xhci_dwc3_suspend_quirk(struct usb_hcd *hcd)
who calls this?
This will be called from 
xhci_plat_suspend->xhci_priv_suspend_quirk->xhci_dwc3_suspend_quirk
So xhci.ko calls a function from dwc3.ko? That sounds odd, doesn't it?
It really looks like we're just finding ways to bypass the driver
layering, rather than working with it.

-- 
balbi

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help