On Tue, Jan 13, 2015 at 11:29:27AM -0800, Tony Lindgren wrote: > Some devices like dm816x have the MDIO registers within the first EMAC > instance address space. Let's fix the issue by allowing to pass an > optional second IO range for the EMAC control register area. > > Cc: Brian Hutchinson <b.hutchman@xxxxxxxxx> > Cc: Felipe Balbi <balbi@xxxxxx> > Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx> > --- > drivers/net/ethernet/ti/davinci_emac.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c > index 4c8d82c..0342273 100644 > --- a/drivers/net/ethernet/ti/davinci_emac.c > +++ b/drivers/net/ethernet/ti/davinci_emac.c > @@ -1877,7 +1877,7 @@ davinci_emac_of_get_pdata(struct platform_device *pdev, struct emac_priv *priv) > static int davinci_emac_probe(struct platform_device *pdev) > { > int rc = 0; > - struct resource *res; > + struct resource *res, *res_ctrl; > struct net_device *ndev; > struct emac_priv *priv; > unsigned long hw_ram_addr; > @@ -1936,11 +1936,20 @@ static int davinci_emac_probe(struct platform_device *pdev) > rc = PTR_ERR(priv->remap_addr); > goto no_pdata; > } > + > + res_ctrl = platform_get_resource(pdev, IORESOURCE_MEM, 1); > + if (res_ctrl) { devm_ioremap_resource() will check for res_ctrl being a valid pointer, perhaps below would be slightly better ? res_ctrl = platform_get_resource(pdev, IORESOURCE_MEM, 1); priv->ctrl_base = devm_ioremap_resource(&pdev->dev, res_ctrl); if (IS_ERR(priv->ctrl_base)) priv->ctrl_base = priv->remap_addr + pdata->ctrl_mod_reg_offset; -- balbi
Attachment:
signature.asc
Description: Digital signature