Subject: Re: [PATCH 3/6] net: davinci_emac: Free clock after checking the frequency

From: Tony Lindgren <[email-masked]>
Date: Tue, 13 Jan 2015 11:54:16 -0800

* Tom Lendacky <[email-masked]> [150113 11:51]:
> On 01/13/2015 01:29 PM, Tony Lindgren wrote:
> >We only use clk_get() to get the frequency, the rest is done by
> >the runtime PM calls. Let's free the clock too.
> >
> >Cc: Brian Hutchinson <[email-masked]>
> >Cc: Felipe Balbi <[email-masked]>
> >Signed-off-by: Tony Lindgren <[email-masked]>
> >---
> >  drivers/net/ethernet/ti/davinci_emac.c | 1 +
> >  1 file changed, 1 insertion(+)
> >
> >diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c
> >index deb43b3..e9efc74 100644
> >--- a/drivers/net/ethernet/ti/davinci_emac.c
> >+++ b/drivers/net/ethernet/ti/davinci_emac.c
> >@@ -1881,6 +1881,7 @@ static int davinci_emac_probe(struct platform_device *pdev)
> >  		return -EBUSY;
> >  	}
> >  	emac_bus_frequency = clk_get_rate(emac_clk);
> >+	clk_put(emac_clk);
> 
> The devm_clk_get call is used to get the clock so either a devm_clk_put
> needs to be used here or just let the devm_ call do its thing and
> automatically do the put when the module is unloaded.

Thanks good catch, updated patch below.

Runtime PM is really managing the clocks here and the driver
just checks the rate so let's devm_clk_put() it here.

Regards,

Tony.

8< ---------------------
From: Tony Lindgren <[email-masked]>
Date: Mon, 22 Dec 2014 08:19:06 -0800
Subject: [PATCH] net: davinci_emac: Free clock after checking the frequency

We only use clk_get() to get the frequency, the rest is done by
the runtime PM calls. Let's free the clock too.

Cc: Brian Hutchinson <[email-masked]>
Cc: Felipe Balbi <[email-masked]>
Signed-off-by: Tony Lindgren <[email-masked]>

--- a/drivers/net/ethernet/ti/davinci_emac.c
+++ b/drivers/net/ethernet/ti/davinci_emac.c
@@ -1881,6 +1881,7 @@ static int davinci_emac_probe(struct platform_device *pdev)
 		return -EBUSY;
 	}
 	emac_bus_frequency = clk_get_rate(emac_clk);
+	devm_clk_put(&pdev->dev, emac_clk);
 
 	/* TODO: Probe PHY here if possible */