Message ID | 20200420183058.67457-1-andriy.shevchenko@linux.intel.com |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | [v1] net: bcmgenet: Use devm_clk_get_optional() to get the clocks | expand |
On 4/20/2020 11:30 AM, Andy Shevchenko wrote: > 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 replace dev_dbg() by > dev_err() and bail out in error case. > > While here, check potential error when enable main clock. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- > .../net/ethernet/broadcom/genet/bcmgenet.c | 25 +++++++++++-------- > 1 file changed, 15 insertions(+), 10 deletions(-) > > diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c > index ef275db018f73..045f7b7f0b5d3 100644 > --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c > +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c > @@ -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; > + dev_err(&priv->pdev->dev, "failed to get enet clock\n"); Please maintain the dev_dbg() here and likewise for the rest of your changes. With that: Acked-by: Florian Fainelli <f.fainelli@gmail.com>
On Mon, Apr 20, 2020 at 11:33:07AM -0700, Florian Fainelli wrote: > On 4/20/2020 11:30 AM, Andy Shevchenko wrote: > > 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 replace dev_dbg() by > > dev_err() and bail out in error case. > > > > While here, check potential error when enable main clock. > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > --- > > .../net/ethernet/broadcom/genet/bcmgenet.c | 25 +++++++++++-------- > > 1 file changed, 15 insertions(+), 10 deletions(-) > > > > diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c > > index ef275db018f73..045f7b7f0b5d3 100644 > > --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c > > +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c > > @@ -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; > > + dev_err(&priv->pdev->dev, "failed to get enet clock\n"); > > Please maintain the dev_dbg() here and likewise for the rest of your > changes. With that: > > Acked-by: Florian Fainelli <f.fainelli@gmail.com> Ah, I see, actually dev_err() will make too much noise in case of deferred probe. Perhaps if (err != -EPROBE_DEFER) dev_err(...); ?
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index ef275db018f73..045f7b7f0b5d3 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -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; + dev_err(&priv->pdev->dev, "failed to get enet clock\n"); + 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); @@ -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; + dev_err(&priv->pdev->dev, "failed to get enet-wol clock\n"); + 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; + dev_err(&priv->pdev->dev, "failed to get enet-eee clock\n"); + err = PTR_ERR(priv->clk_eee); + goto err; } /* If this is an internal GPHY, power it on now, before UniMAC is
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 replace dev_dbg() by dev_err() and bail out in error case. While here, check potential error when enable main clock. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- .../net/ethernet/broadcom/genet/bcmgenet.c | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-)