net: bcmgenet: Use devm_clk_get_optional() to get the clocks
Conversion to devm_clk_get_optional() makes it explicit that clocks are optional. This change allows to handle deferred probe in case clocks are defined, but not yet probed. Due to above changes bail out in error case. While here, check potential error when enable main clock. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Acked-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9a965942a9
commit
c80d36ff63
1 changed files with 12 additions and 7 deletions
|
@ -3487,13 +3487,16 @@ static int bcmgenet_probe(struct platform_device *pdev)
|
||||||
priv->dma_max_burst_length = DMA_MAX_BURST_LENGTH;
|
priv->dma_max_burst_length = DMA_MAX_BURST_LENGTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
priv->clk = devm_clk_get(&priv->pdev->dev, "enet");
|
priv->clk = devm_clk_get_optional(&priv->pdev->dev, "enet");
|
||||||
if (IS_ERR(priv->clk)) {
|
if (IS_ERR(priv->clk)) {
|
||||||
dev_dbg(&priv->pdev->dev, "failed to get enet clock\n");
|
dev_dbg(&priv->pdev->dev, "failed to get enet clock\n");
|
||||||
priv->clk = NULL;
|
err = PTR_ERR(priv->clk);
|
||||||
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
clk_prepare_enable(priv->clk);
|
err = clk_prepare_enable(priv->clk);
|
||||||
|
if (err)
|
||||||
|
goto err;
|
||||||
|
|
||||||
bcmgenet_set_hw_params(priv);
|
bcmgenet_set_hw_params(priv);
|
||||||
|
|
||||||
|
@ -3511,16 +3514,18 @@ static int bcmgenet_probe(struct platform_device *pdev)
|
||||||
priv->rx_buf_len = RX_BUF_LENGTH;
|
priv->rx_buf_len = RX_BUF_LENGTH;
|
||||||
INIT_WORK(&priv->bcmgenet_irq_work, bcmgenet_irq_task);
|
INIT_WORK(&priv->bcmgenet_irq_work, bcmgenet_irq_task);
|
||||||
|
|
||||||
priv->clk_wol = devm_clk_get(&priv->pdev->dev, "enet-wol");
|
priv->clk_wol = devm_clk_get_optional(&priv->pdev->dev, "enet-wol");
|
||||||
if (IS_ERR(priv->clk_wol)) {
|
if (IS_ERR(priv->clk_wol)) {
|
||||||
dev_dbg(&priv->pdev->dev, "failed to get enet-wol clock\n");
|
dev_dbg(&priv->pdev->dev, "failed to get enet-wol clock\n");
|
||||||
priv->clk_wol = NULL;
|
err = PTR_ERR(priv->clk_wol);
|
||||||
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
priv->clk_eee = devm_clk_get(&priv->pdev->dev, "enet-eee");
|
priv->clk_eee = devm_clk_get_optional(&priv->pdev->dev, "enet-eee");
|
||||||
if (IS_ERR(priv->clk_eee)) {
|
if (IS_ERR(priv->clk_eee)) {
|
||||||
dev_dbg(&priv->pdev->dev, "failed to get enet-eee clock\n");
|
dev_dbg(&priv->pdev->dev, "failed to get enet-eee clock\n");
|
||||||
priv->clk_eee = NULL;
|
err = PTR_ERR(priv->clk_eee);
|
||||||
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If this is an internal GPHY, power it on now, before UniMAC is
|
/* If this is an internal GPHY, power it on now, before UniMAC is
|
||||||
|
|
Loading…
Add table
Reference in a new issue