[PATCH v13 06/12] usb: xhci: use bus->sysdev for DMA configuration
From: Roger Quadros <hidden>
Date: 2017-02-14 12:28:50
Also in:
linux-devicetree, linux-pm, lkml
On 14/02/17 13:44, Arnd Bergmann wrote:
On Tue, Feb 14, 2017 at 11:36 AM, Roger Quadros [off-list ref] wrote:quoted
On 11/02/17 03:27, Peter Chen wrote:quoted
From: Arnd Bergmann <arnd@arndb.de> For xhci-hcd platform device, all the DMA parameters are not configured properly, notably dma ops for dwc3 devices. So, set the dma for xhci from sysdev. sysdev is pointing to device that is known to the system firmware or hardware. Cc: Baolin Wang <redacted> Cc: Vivek Gautam <redacted> Cc: Alexander Sverdlin <redacted> Cc: Mathias Nyman <redacted> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Sriram Dash <redacted> --- Hi, Baolin, Vivek and Alexander, I removed your tested-by tag due to add one change that adding sysdev for shared hcd too, if your test shows this change works for you or has no effect for you, please consider adding tested-by tag again, thanks.quoted
quoted
@@ -222,20 +241,20 @@ static int xhci_plat_probe(struct platform_device *pdev) xhci->clk = clk; xhci->main_hcd = hcd; - xhci->shared_hcd = usb_create_shared_hcd(driver, &pdev->dev, + xhci->shared_hcd = __usb_create_hcd(driver, sysdev, &pdev->dev, dev_name(&pdev->dev), hcd); if (!xhci->shared_hcd) { ret = -ENOMEM; goto disable_clk; } - if (device_property_read_bool(&pdev->dev, "usb3-lpm-capable")) + if (device_property_read_bool(sysdev, "usb3-lpm-capable"))Why are we using sysdev to read DT property? We should be using the XHCI device (&pdev->dev) here, no?If I remember correctly, this is one of the cases where pdev does not have a device node attached to it because it was created by the driver of the parent device on the fly in case of dwc3. When you have a pure xhci device in DT, the two pointers are the same.
From drivers/usb/dwc3/host.c
if (dwc->usb3_lpm_capable) {
props[0].name = "usb3-lpm-capable";
ret = platform_device_add_properties(xhci, props);
if (ret) {
dev_err(dwc->dev, "failed to add properties to xHCI\n");
goto err1;
}
}So it is setting the usb3-lpm-capable property into the xhci platform device and we should be reading the property from there. -- cheers, -roger