Skip to content

Commit

Permalink
TI DaVinci EMAC: Handle emac module clock correctly.
Browse files Browse the repository at this point in the history
In the driver probe function the emac module clock needs to
be enabled before calling register_netdev(). As soon as the
device is registered the driver get_stats function can be invoked
by the core - the module clock must be switched on to be able to
read from stats registers. Also explicitly call matching clk_disable
for failure conditions in probe function.

Signed-off-by: Sriramakrishnan <srk@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Sriram authored and David S. Miller committed Jan 8, 2010
1 parent 4d90706 commit 1ca518b
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion drivers/net/davinci_emac.c
Original file line number Diff line number Diff line change
Expand Up @@ -2711,6 +2711,8 @@ static int __devinit davinci_emac_probe(struct platform_device *pdev)
SET_ETHTOOL_OPS(ndev, &ethtool_ops);
netif_napi_add(ndev, &priv->napi, emac_poll, EMAC_POLL_WEIGHT);

clk_enable(emac_clk);

/* register the network device */
SET_NETDEV_DEV(ndev, &pdev->dev);
rc = register_netdev(ndev);
Expand All @@ -2720,7 +2722,6 @@ static int __devinit davinci_emac_probe(struct platform_device *pdev)
goto netdev_reg_err;
}

clk_enable(emac_clk);

/* MII/Phy intialisation, mdio bus registration */
emac_mii = mdiobus_alloc();
Expand Down Expand Up @@ -2760,6 +2761,7 @@ static int __devinit davinci_emac_probe(struct platform_device *pdev)

netdev_reg_err:
mdio_alloc_err:
clk_disable(emac_clk);
no_irq_res:
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
release_mem_region(res->start, res->end - res->start + 1);
Expand Down

0 comments on commit 1ca518b

Please sign in to comment.