Hi, On 02/11/2014 05:26 PM, Alan Stern wrote: > The ehci-platform driver checks for misconfigurations in cases where > the Device Tree data specifies big-endian registers or descriptors but > the corresponding driver config settings have not been enabled. As > Jonas Gorski suggested, we may as well apply the same check to general > platform data too. > > This requires moving the code that sets the big-endian quirk flags > from the ehci_platform_reset() routine into ehci_platform_probe(), and > moving the checks out of the DT-specific "if" statement clause. > > The patch also changes the text of the error messages in an attempt to > make the nature of the error more clear. > > Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > Reported-by: Jonas Gorski <jogo@xxxxxxxxxxx> > CC: Hans de Goede <hdegoede@xxxxxxxxxx> Thanks for doing this, looks good: Acked-by: Hans de Goede <hdegoede@xxxxxxxxxx> Regards, Hans > > --- > > > [as1739] > > > drivers/usb/host/ehci-platform.c | 42 ++++++++++++++++++++------------------- > 1 file changed, 22 insertions(+), 20 deletions(-) > > Index: usb-3.14/drivers/usb/host/ehci-platform.c > =================================================================== > --- usb-3.14.orig/drivers/usb/host/ehci-platform.c > +++ usb-3.14/drivers/usb/host/ehci-platform.c > @@ -55,10 +55,6 @@ static int ehci_platform_reset(struct us > > hcd->has_tt = pdata->has_tt; > ehci->has_synopsys_hc_bug = pdata->has_synopsys_hc_bug; > - if (pdata->big_endian_desc) > - ehci->big_endian_desc = 1; > - if (pdata->big_endian_mmio) > - ehci->big_endian_mmio = 1; > > if (pdata->pre_setup) { > retval = pdata->pre_setup(hcd); > @@ -192,22 +188,6 @@ static int ehci_platform_probe(struct pl > if (of_property_read_bool(dev->dev.of_node, "big-endian")) > ehci->big_endian_mmio = ehci->big_endian_desc = 1; > > -#ifndef CONFIG_USB_EHCI_BIG_ENDIAN_MMIO > - if (ehci->big_endian_mmio) { > - dev_err(&dev->dev, > - "Error big-endian-regs not compiled in\n"); > - err = -EINVAL; > - goto err_put_hcd; > - } > -#endif > -#ifndef CONFIG_USB_EHCI_BIG_ENDIAN_DESC > - if (ehci->big_endian_desc) { > - dev_err(&dev->dev, > - "Error big-endian-desc not compiled in\n"); > - err = -EINVAL; > - goto err_put_hcd; > - } > -#endif > priv->phy = devm_phy_get(&dev->dev, "usb"); > if (IS_ERR(priv->phy)) { > err = PTR_ERR(priv->phy); > @@ -228,6 +208,28 @@ static int ehci_platform_probe(struct pl > } > } > > + if (pdata->big_endian_desc) > + ehci->big_endian_desc = 1; > + if (pdata->big_endian_mmio) > + ehci->big_endian_mmio = 1; > + > +#ifndef CONFIG_USB_EHCI_BIG_ENDIAN_MMIO > + if (ehci->big_endian_mmio) { > + dev_err(&dev->dev, > + "Error: CONFIG_USB_EHCI_BIG_ENDIAN_MMIO not set\n"); > + err = -EINVAL; > + goto err_put_clks; > + } > +#endif > +#ifndef CONFIG_USB_EHCI_BIG_ENDIAN_DESC > + if (ehci->big_endian_desc) { > + dev_err(&dev->dev, > + "Error: CONFIG_USB_EHCI_BIG_ENDIAN_DESC not set\n"); > + err = -EINVAL; > + goto err_put_clks; > + } > +#endif > + > if (pdata->power_on) { > err = pdata->power_on(dev); > if (err < 0) > > -- 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