Re: [PATCH 1/2] USB: ohci-platform: check for platform data misconfiguration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <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

> 
> ---
> 
> 
> [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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux