mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
net: davinci_emac: Fix ioremap for devices with MDIO within the EMAC address space
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 <[email protected]> Cc: Felipe Balbi <[email protected]> Signed-off-by: Tony Lindgren <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
1d82ffa6ba
commit
a1594321a9
1 changed files with 12 additions and 3 deletions
|
|
@ -1890,7 +1890,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;
|
||||
|
|
@ -1949,11 +1949,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) {
|
||||
priv->ctrl_base =
|
||||
devm_ioremap_resource(&pdev->dev, res_ctrl);
|
||||
if (IS_ERR(priv->ctrl_base))
|
||||
goto no_pdata;
|
||||
} else {
|
||||
priv->ctrl_base = priv->remap_addr + pdata->ctrl_mod_reg_offset;
|
||||
}
|
||||
|
||||
priv->emac_base = priv->remap_addr + pdata->ctrl_reg_offset;
|
||||
ndev->base_addr = (unsigned long)priv->remap_addr;
|
||||
|
||||
priv->ctrl_base = priv->remap_addr + pdata->ctrl_mod_reg_offset;
|
||||
|
||||
hw_ram_addr = pdata->hw_ram_addr;
|
||||
if (!hw_ram_addr)
|
||||
hw_ram_addr = (u32 __force)res->start + pdata->ctrl_ram_offset;
|
||||
|
|
|
|||
Loading…
Reference in a new issue