[PATCH 1/8] net: smc91x: Fix device tree based configuration so it's usable

Tony Lindgren tony at atomide.com
Wed Nov 27 13:36:30 EST 2013


* Tony Lindgren <tony at atomide.com> [131116 07:17]:
>
> Here's what I was thinking with the reg-io-width-mask. Anybody
> have comments on using reg-io-width vs reg-io-width-mask?
...

> --- a/drivers/net/ethernet/smsc/smc91x.c
> +++ b/drivers/net/ethernet/smsc/smc91x.c
> @@ -2222,11 +2234,31 @@ static int smc_drv_probe(struct platform_device *pdev)
>  	 */
>  
>  	lp = netdev_priv(ndev);
> +	lp->cfg.flags = 0;
>  
>  	if (pd) {
>  		memcpy(&lp->cfg, pd, sizeof(lp->cfg));
>  		lp->io_shift = SMC91X_IO_SHIFT(lp->cfg.flags);
> -	} else {
> +	}
> +
> +#if IS_BUILTIN(CONFIG_OF)
> +	match = of_match_device(of_match_ptr(smc91x_match), &pdev->dev);
> +	if (match) {
> +		u32 val;
> +
> +		of_property_read_u32(np, "reg-io-width", &val);
> +		if (val == 0)
> +			lp->cfg.flags |= SMC91X_USE_16BIT;
> +		if (val & 1)
> +			lp->cfg.flags |= SMC91X_USE_8BIT;
> +		if (val & 2)
> +			lp->cfg.flags |= SMC91X_USE_16BIT;
> +		if (val & 4)
> +			lp->cfg.flags |= SMC91X_USE_32BIT;
> +	}
> +#endif
> +
> +	if (!pd && !match) {
>  		lp->cfg.flags |= (SMC_CAN_USE_8BIT)  ? SMC91X_USE_8BIT  : 0;
>  		lp->cfg.flags |= (SMC_CAN_USE_16BIT) ? SMC91X_USE_16BIT : 0;
>  		lp->cfg.flags |= (SMC_CAN_USE_32BIT) ? SMC91X_USE_32BIT : 0;

Looks this patch is missing the check for the return value for
of_property_read_u32(), will repost this patch separately as the
others in this series are out of the way now.

Regards,

Tony



More information about the linux-arm-kernel mailing list