123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- From 133a9b75e2b0c48cd1d8f93b0ee61089821c32d9 Mon Sep 17 00:00:00 2001
- From: Chen-Yu Tsai <[email protected]>
- Date: Sat, 7 Dec 2013 01:29:34 +0800
- Subject: [PATCH] net: stmmac: Enable stmmac main clock when probing hardware
- Signed-off-by: Chen-Yu Tsai <[email protected]>
- ---
- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 24 +++++++++++++----------
- 1 file changed, 14 insertions(+), 10 deletions(-)
- --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
- +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
- @@ -2680,10 +2680,17 @@ struct stmmac_priv *stmmac_dvr_probe(str
- if ((phyaddr >= 0) && (phyaddr <= 31))
- priv->plat->phy_addr = phyaddr;
-
- + priv->stmmac_clk = clk_get(priv->device, STMMAC_RESOURCE_NAME);
- + if (IS_ERR(priv->stmmac_clk)) {
- + pr_warn("%s: warning: cannot get CSR clock\n", __func__);
- + goto error_clk_get;
- + }
- + clk_prepare_enable(priv->stmmac_clk);
- +
- /* Init MAC and get the capabilities */
- ret = stmmac_hw_init(priv);
- if (ret)
- - goto error_free_netdev;
- + goto error_hw_init;
-
- ndev->netdev_ops = &stmmac_netdev_ops;
-
- @@ -2721,12 +2728,6 @@ struct stmmac_priv *stmmac_dvr_probe(str
- goto error_netdev_register;
- }
-
- - priv->stmmac_clk = clk_get(priv->device, STMMAC_RESOURCE_NAME);
- - if (IS_ERR(priv->stmmac_clk)) {
- - pr_warn("%s: warning: cannot get CSR clock\n", __func__);
- - goto error_clk_get;
- - }
- -
- /* If a specific clk_csr value is passed from the platform
- * this means that the CSR Clock Range selection cannot be
- * changed at run-time and it is fixed. Viceversa the driver'll try to
- @@ -2751,15 +2752,18 @@ struct stmmac_priv *stmmac_dvr_probe(str
- }
- }
-
- + clk_disable_unprepare(priv->stmmac_clk);
- +
- return priv;
-
- error_mdio_register:
- - clk_put(priv->stmmac_clk);
- -error_clk_get:
- unregister_netdev(ndev);
- error_netdev_register:
- netif_napi_del(&priv->napi);
- -error_free_netdev:
- +error_hw_init:
- + clk_disable_unprepare(priv->stmmac_clk);
- + clk_put(priv->stmmac_clk);
- +error_clk_get:
- free_netdev(ndev);
-
- return NULL;
|