* [PATCH v1] net: bcmgenet: Use devm_clk_get_optional() to get the clocks
@ 2020-04-20 18:30 Andy Shevchenko
2020-04-20 18:33 ` Florian Fainelli
0 siblings, 1 reply; 3+ messages in thread
From: Andy Shevchenko @ 2020-04-20 18:30 UTC (permalink / raw)
To: Doug Berger, Florian Fainelli, bcm-kernel-feedback-list,
David S. Miller, netdev
Cc: Andy Shevchenko
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");
+ 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
--
2.26.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH v1] net: bcmgenet: Use devm_clk_get_optional() to get the clocks
2020-04-20 18:30 [PATCH v1] net: bcmgenet: Use devm_clk_get_optional() to get the clocks Andy Shevchenko
@ 2020-04-20 18:33 ` Florian Fainelli
2020-04-20 19:17 ` Andy Shevchenko
0 siblings, 1 reply; 3+ messages in thread
From: Florian Fainelli @ 2020-04-20 18:33 UTC (permalink / raw)
To: Andy Shevchenko, Doug Berger, Florian Fainelli,
bcm-kernel-feedback-list, David S. Miller, netdev
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>
--
Florian
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH v1] net: bcmgenet: Use devm_clk_get_optional() to get the clocks
2020-04-20 18:33 ` Florian Fainelli
@ 2020-04-20 19:17 ` Andy Shevchenko
0 siblings, 0 replies; 3+ messages in thread
From: Andy Shevchenko @ 2020-04-20 19:17 UTC (permalink / raw)
To: Florian Fainelli
Cc: Doug Berger, bcm-kernel-feedback-list, David S. Miller, netdev
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(...);
?
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-04-20 19:17 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-20 18:30 [PATCH v1] net: bcmgenet: Use devm_clk_get_optional() to get the clocks Andy Shevchenko
2020-04-20 18:33 ` Florian Fainelli
2020-04-20 19:17 ` Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).