Thread (30 messages) 30 messages, 9 authors, 2017-05-17

[PATCH v13 06/12] usb: xhci: use bus->sysdev for DMA configuration

From: balbi@kernel.org (Felipe Balbi)
Date: 2017-02-15 11:52:13
Also in: linux-devicetree, linux-pm, lkml

Hi,

Roger Quadros [off-list ref] writes:
quoted
quoted
quoted
quoted
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.c
quoted
        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?
Won't work. We have quirk flags which are based on DWC3's revision which
is not accessible by xhci-plat. Also, we can't call
device_add_property() because it's not really *adding*. It's *setting*,
meaning that we would loose all other properties.

-- 
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20170215/7d9ebdc2/attachment.sig>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help