Re: [PATCH 2/2] USB: ehci-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 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




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

  Powered by Linux