Hi,

On 02/11/2014 05:26 PM, Alan Stern wrote:
> The ohci-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 ohci_platform_reset() routine into ohci_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 <st...@rowland.harvard.edu>
> Reported-by: Jonas Gorski <j...@openwrt.org>
> CC: Hans de Goede <hdego...@redhat.com>

Thanks for doing this, looks good:

Acked-by: Hans de Goede <hdego...@redhat.com>

Regards,

Hans

> 
> ---
> 
> 
> [as1738]
> 
> 
>  drivers/usb/host/ohci-platform.c |   42 
> ++++++++++++++++++++-------------------
>  1 file changed, 22 insertions(+), 20 deletions(-)
> 
> Index: usb-3.14/drivers/usb/host/ohci-platform.c
> ===================================================================
> --- usb-3.14.orig/drivers/usb/host/ohci-platform.c
> +++ usb-3.14/drivers/usb/host/ohci-platform.c
> @@ -47,10 +47,6 @@ static int ohci_platform_reset(struct us
>       struct usb_ohci_pdata *pdata = dev_get_platdata(&pdev->dev);
>       struct ohci_hcd *ohci = hcd_to_ohci(hcd);
>  
> -     if (pdata->big_endian_desc)
> -             ohci->flags |= OHCI_QUIRK_BE_DESC;
> -     if (pdata->big_endian_mmio)
> -             ohci->flags |= OHCI_QUIRK_BE_MMIO;
>       if (pdata->no_big_frame_no)
>               ohci->flags |= OHCI_QUIRK_FRAME_NO;
>       if (pdata->num_ports)
> @@ -177,22 +173,6 @@ static int ohci_platform_probe(struct pl
>               if (of_property_read_bool(dev->dev.of_node, "big-endian"))
>                       ohci->flags |= OHCI_QUIRK_BE_MMIO | OHCI_QUIRK_BE_DESC;
>  
> -#ifndef CONFIG_USB_OHCI_BIG_ENDIAN_MMIO
> -             if (ohci->flags & OHCI_QUIRK_BE_MMIO) {
> -                     dev_err(&dev->dev,
> -                             "Error big-endian-regs not compiled in\n");
> -                     err = -EINVAL;
> -                     goto err_put_hcd;
> -             }
> -#endif
> -#ifndef CONFIG_USB_OHCI_BIG_ENDIAN_DESC
> -             if (ohci->flags & OHCI_QUIRK_BE_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);
> @@ -213,6 +193,28 @@ static int ohci_platform_probe(struct pl
>               }
>       }
>  
> +     if (pdata->big_endian_desc)
> +             ohci->flags |= OHCI_QUIRK_BE_DESC;
> +     if (pdata->big_endian_mmio)
> +             ohci->flags |= OHCI_QUIRK_BE_MMIO;
> +
> +#ifndef CONFIG_USB_OHCI_BIG_ENDIAN_MMIO
> +     if (ohci->flags & OHCI_QUIRK_BE_MMIO) {
> +             dev_err(&dev->dev,
> +                     "Error: CONFIG_USB_OHCI_BIG_ENDIAN_MMIO not set\n");
> +             err = -EINVAL;
> +             goto err_put_clks;
> +     }
> +#endif
> +#ifndef CONFIG_USB_OHCI_BIG_ENDIAN_DESC
> +     if (ohci->flags & OHCI_QUIRK_BE_DESC) {
> +             dev_err(&dev->dev,
> +                     "Error: CONFIG_USB_OHCI_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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to