On Wed, 2013-11-06 at 18:39 +1100, Alistair Popple wrote: > diff --git a/arch/powerpc/boot/dts/sequoia.dts > b/arch/powerpc/boot/dts/sequoia.dts > index b1d3292..e28371e 100644 > --- a/arch/powerpc/boot/dts/sequoia.dts > +++ b/arch/powerpc/boot/dts/sequoia.dts > @@ -153,7 +153,7 @@ > }; > > USB0: ehci@e0000300 { > - compatible = "ibm,usb-ehci-440epx", "usb-ehci"; > + compatible = "ibm,usb-ehci-440epx"; Compatible properties are string lists so it *should* be ok to have all of them in the list. However I do remember Russell mentioning a problem with the current matching code so adding him on CC for comments. > +/* > + * 440EPx Errata USBH_3 > + * Fix: Enable Break Memory Transfer (BMT) in INSNREG3 > + */ > +#define PPC440EPX_EHCI0_INSREG_BMT (0x1 << 0) > +static int > +ppc44x_enable_bmt(struct device_node *dn) > +{ > + __iomem u32 *insreg_virt; > + > + insreg_virt = of_iomap(dn, 1); > + if (!insreg_virt) > + return -EINVAL; > + > + out_be32(insreg_virt + 3, PPC440EPX_EHCI0_INSREG_BMT); > + > + iounmap(insreg_virt); > + return 0; > +} > + I would go even further and add the 44x workarounds to the normal platform device, with a compatible check in there. That isn't the first time we add quirks to an existing driver. > + /* Initialise platform data from device tree if available. */ > + if (!dn) { That was supposed to be if (dn) no ? > + if (of_get_property(dn, "big-endian", NULL)) { > + pdata->big_endian_mmio = 1; > + pdata->big_endian_desc = 1; > + } > + if (of_get_property(dn, "big-endian-regs", NULL)) > + pdata->big_endian_mmio = 1; > + if (of_get_property(dn, "big-endian-desc", NULL)) > + pdata->big_endian_desc = 1; > + } > + > irq = platform_get_irq(dev, 0); > if (irq < 0) { > dev_err(&dev->dev, "no irq provided"); > @@ -203,9 +216,10 @@ static int ehci_platform_resume(struct device *dev) > #define ehci_platform_resume NULL > #endif /* CONFIG_PM */ > > -static const struct of_device_id vt8500_ehci_ids[] = { > +static const struct of_device_id ehci_platform_ids[] = { > { .compatible = "via,vt8500-ehci", }, > { .compatible = "wm,prizm-ehci", }, > + { .compatible = "usb-ehci", }, > {} > }; Cheers, Ben. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html