[PATCH v12 6/9] usb: xhci: use bus->sysdev for DMA configuration
From: Vivek Gautam <hidden>
Date: 2017-02-09 12:15:18
Also in:
linux-devicetree, linux-pm, lkml
On Thu, Feb 9, 2017 at 5:24 PM, Roger Quadros [off-list ref] wrote:
On 09/02/17 13:53, Roger Quadros wrote:quoted
On 08/02/17 22:43, Jack Pham wrote:quoted
Hi Peter, Sriram, Arnd, On Mon, Feb 06, 2017 at 05:13:38PM +0800, 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. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Sriram Dash <redacted> Tested-by: Baolin Wang <redacted> Tested-by: Vivek Gautam <redacted> Tested-by: Alexander Sverdlin <redacted> Signed-off-by: Mathias Nyman <redacted> ---diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index 6d33b42..7a9c860 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.cquoted
- hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev)); + hcd = __usb_create_hcd(driver, sysdev, &pdev->dev, + dev_name(&pdev->dev), NULL);As mentioned already in [1], usb_create_shared_hcd() is called to create the second bus, however it also needs to be converted. Not exactly as Roger's suggestion but this worked for me: - 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);But we're creating a shared_hcd and there is an API for that so why not use it instead of calling __usb_create_hcd()?Just realized after I pressed send that there is no sysdev parameter for create_shared_hcd().
That's right. The create_shared_hcd() makes use of only pdev->dev, and we need to configure dma for shared_hcd as well though sysdev. Sorry my mail client didn't show this mail in time. Please ignore my earlier comment.
quoted
quoted
if (!xhci->shared_hcd) { ret = -ENOMEM; Without this, SuperSpeed devices fail to enumerate: usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd usb 2-1: device descriptor read/8, error -11 usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd usb 2-1: device descriptor read/8, error -11 usb 2-1: new SuperSpeed USB device number 3 using xhci-hcd usb 2-1: device descriptor read/8, error -11 usb 2-1: new SuperSpeed USB device number 3 using xhci-hcd usb 2-1: device descriptor read/8, error -11 <and continues...> Thanks, Jack [1] https://lkml.org/lkml/2016/12/9/240-- cheers, -roger -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
-- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project