Re: [PATCH v13 06/12] usb: xhci: use bus->sysdev for DMA configuration
From: Roger Quadros <hidden>
Date: 2017-02-15 10:12:12
Also in:
linux-arm-kernel, linux-pm, lkml
+Felipe, On 15/02/17 10:51, Peter Chen wrote:
On Wed, Feb 15, 2017 at 10:18:03AM +0200, Roger Quadros wrote:quoted
Peter, On 15/02/17 03:35, Peter Chen wrote:quoted
On Tue, Feb 14, 2017 at 01:58:40PM +0100, Arnd Bergmann wrote:quoted
On Tue, Feb 14, 2017 at 1:26 PM, Roger Quadros [off-list ref] wrote:quoted
On 14/02/17 13:44, Arnd Bergmann wrote:quoted
On Tue, Feb 14, 2017 at 11:36 AM, Roger Quadros [off-list ref] wrote:quoted
quoted
quoted
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.cquoted
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.Why dwc3 needs another "snps,usb3_lpm_capable"? Why not using "usb3-lpm-capable" at firmware directly?dwc3 is not setting "snps,usb3_lpm_capable" but "usb3-lpm-capable" for the xhci platform device. What did you mean by firmware? Did you mean something like BIOS? At least TI platforms don't use any firmware like BIOS. So dwc3 driver needs to create a platform device for xhci on the fly and set the DT properties.By readying code, the dwc3 calls dwc3_get_properties to set dwc->usb3_lpm_capable, and at dwc3/host.c, it sets property "usb3-lpm-capable" according to this flag, why not let common code xhci-plat.c to get this property from sysdev which is DT nodes for dwc3?
Felipe, any comments? -- cheers, -roger