Hi John,
> > @@ -114,16 +117,14 @@ static int dwc3_pci_quirks(struct pci_dev *pdev)
> > (pdev->device == PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3 ||
> > pdev->device == PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3_AXI ||
> > pdev->device == PCI_DEVICE_ID_SYNOPSYS_HAPSUSB31)) {
> > -
> > - struct dwc3_platform_data pdata;
> > -
> > - memset(&pdata, 0, sizeof(pdata));
> > - pdata.usb3_lpm_capable = true;
> > - pdata.has_lpm_erratum = true;
> > - pdata.dis_enblslpm_quirk = true;
> > -
> > - return platform_device_add_data(pci_get_drvdata(pdev), &pdata,
> > - sizeof(pdata));
> > + struct property_entry pentry[] = {
> > + PROPERTY_ENTRY_BOOL("snps,usb3_lpm_capable"),
> > + PROPERTY_ENTRY_BOOL("snps,has-lpm-erratum"),
> > + PROPERTY_ENTRY_BOOL("snps,dis_enblslpm_quirk"),
>
> I tried testing in Synopsys HAPS platform.
>
> The properties are being set here successfully but when queried in
> core.c they all report 0.
>
> Any ideas?
How are you testing that? I just tested those properties with
linux-next and:
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 4a0dc81..c10c8ba 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -927,6 +927,10 @@ static int dwc3_probe(struct platform_device *pdev)
device_property_read_u32(dev, "snps,quirk-frame-length-adjustment",
&fladj);
+ dev_info(dev, "usb3_lpm_capable %d\n", dwc->usb3_lpm_capable);
+ dev_info(dev, "has_lpm_erratum %d\n", dwc->has_lpm_erratum);
+ dev_info(dev, "dis_enblslpm_quirk %d\n", dwc->dis_enblslpm_quirk);
+
/* default to superspeed if no maximum_speed passed */
if (dwc->maximum_speed == USB_SPEED_UNKNOWN)
dwc->maximum_speed = USB_SPEED_SUPER;
diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c
index d064ba8..22cd49b 100644
--- a/drivers/usb/dwc3/dwc3-pci.c
+++ b/drivers/usb/dwc3/dwc3-pci.c
@@ -47,6 +47,14 @@ static const struct acpi_gpio_mapping acpi_dwc3_byt_gpios[]
= {
static int dwc3_pci_quirks(struct pci_dev *pdev, struct platform_device *dwc3)
{
+ struct property_entry pentry[] = {
+ PROPERTY_ENTRY_BOOL("snps,usb3_lpm_capable"),
+ PROPERTY_ENTRY_BOOL("snps,has-lpm-erratum"),
+ PROPERTY_ENTRY_BOOL("snps,dis_enblslpm_quirk"),
+ { },
+ };
+ return platform_device_add_properties(dwc3, pentry);
+
if (pdev->vendor == PCI_VENDOR_ID_AMD &&
pdev->device == PCI_DEVICE_ID_AMD_NL_USB) {
struct property_entry pentry[] = {
And I can always see
..
[ 17.903179] dwc3 dwc3.0.auto: usb3_lpm_capable 1
[ 17.908357] dwc3 dwc3.0.auto: has_lpm_erratum 1
[ 17.913419] dwc3 dwc3.0.auto: dis_enblslpm_quirk 1
..
in my syslog.
Thanks,
--
heikki
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html