Skip to content

Commit

Permalink
net: bcmgenet: Use devm_clk_get_optional() to get the clocks
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Andy Shevchenko authored and David S. Miller committed Apr 20, 2020
1 parent 9a96594 commit c80d36f
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions drivers/net/ethernet/broadcom/genet/bcmgenet.c
Original file line number Diff line number Diff line change
Expand Up @@ -3487,13 +3487,16 @@ static int bcmgenet_probe(struct platform_device *pdev)
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)) {
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);

Expand All @@ -3511,16 +3514,18 @@ static int bcmgenet_probe(struct platform_device *pdev)
priv->rx_buf_len = RX_BUF_LENGTH;
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)) {
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)) {
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
Expand Down

0 comments on commit c80d36f

Please sign in to comment.