mirror of https://lore.kernel.org/linux-amlogic/
 help / color / mirror / Atom feed
* [PATCH 0/2] clk: meson: probe clean-ups
@ 2018-01-18 12:08 Jerome Brunet
  2018-01-18 12:08 ` [PATCH 1/2] clk: meson: use dev pointer where possible Jerome Brunet
  2018-01-18 12:08 ` [PATCH 2/2] clk: meson: use devm_of_clk_add_hw_provider Jerome Brunet
  0 siblings, 2 replies; 5+ messages in thread
From: Jerome Brunet @ 2018-01-18 12:08 UTC (permalink / raw)
  To: linus-amlogic

This changeset feature a couple of clean-ups in the probe
function of meson's clock controllers. It is the beginning
of a refactoring of meson's clock controllers

Jerome Brunet (2):
  clk: meson: use dev pointer where possible
  clk: meson: use devm_of_clk_add_hw_provider

 drivers/clk/meson/axg.c     | 12 ++++++------
 drivers/clk/meson/gxbb.c    |  7 ++++---
 drivers/clk/meson/meson8b.c |  4 ++--
 3 files changed, 12 insertions(+), 11 deletions(-)

-- 
2.14.3

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] clk: meson: use dev pointer where possible
  2018-01-18 12:08 [PATCH 0/2] clk: meson: probe clean-ups Jerome Brunet
@ 2018-01-18 12:08 ` Jerome Brunet
  2018-01-18 15:25   ` Neil Armstrong
  2018-01-18 12:08 ` [PATCH 2/2] clk: meson: use devm_of_clk_add_hw_provider Jerome Brunet
  1 sibling, 1 reply; 5+ messages in thread
From: Jerome Brunet @ 2018-01-18 12:08 UTC (permalink / raw)
  To: linus-amlogic

The 'dev' pointer is directly available in gxbb and axg clock
controller, so consistently use it instead of going the through the
'pdev' pointer once in while

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
 drivers/clk/meson/axg.c  | 8 ++++----
 drivers/clk/meson/gxbb.c | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/clk/meson/axg.c b/drivers/clk/meson/axg.c
index 1294f3ad7cd5..87aba8e871a0 100644
--- a/drivers/clk/meson/axg.c
+++ b/drivers/clk/meson/axg.c
@@ -873,7 +873,7 @@ static int axg_clkc_probe(struct platform_device *pdev)
 	void __iomem *clk_base;
 	int ret, clkid, i;
 
-	clkc_data = of_device_get_match_data(&pdev->dev);
+	clkc_data = of_device_get_match_data(dev);
 	if (!clkc_data)
 		return -EINVAL;
 
@@ -881,9 +881,9 @@ static int axg_clkc_probe(struct platform_device *pdev)
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!res)
 		return -EINVAL;
-	clk_base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
+	clk_base = devm_ioremap(dev, res->start, resource_size(res));
 	if (!clk_base) {
-		dev_err(&pdev->dev, "Unable to map clk base\n");
+		dev_err(dev, "Unable to map clk base\n");
 		return -ENXIO;
 	}
 
@@ -918,7 +918,7 @@ static int axg_clkc_probe(struct platform_device *pdev)
 		ret = devm_clk_hw_register(dev,
 					clkc_data->hw_onecell_data->hws[clkid]);
 		if (ret) {
-			dev_err(&pdev->dev, "Clock registration failed\n");
+			dev_err(dev, "Clock registration failed\n");
 			return ret;
 		}
 	}
diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
index af24455af5b4..ba1023983d79 100644
--- a/drivers/clk/meson/gxbb.c
+++ b/drivers/clk/meson/gxbb.c
@@ -1976,7 +1976,7 @@ static int gxbb_clkc_probe(struct platform_device *pdev)
 	int ret, clkid, i;
 	struct device *dev = &pdev->dev;
 
-	clkc_data = of_device_get_match_data(&pdev->dev);
+	clkc_data = of_device_get_match_data(dev);
 	if (!clkc_data)
 		return -EINVAL;
 
-- 
2.14.3

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/2] clk: meson: use devm_of_clk_add_hw_provider
  2018-01-18 12:08 [PATCH 0/2] clk: meson: probe clean-ups Jerome Brunet
  2018-01-18 12:08 ` [PATCH 1/2] clk: meson: use dev pointer where possible Jerome Brunet
@ 2018-01-18 12:08 ` Jerome Brunet
  2018-01-18 15:25   ` Neil Armstrong
  1 sibling, 1 reply; 5+ messages in thread
From: Jerome Brunet @ 2018-01-18 12:08 UTC (permalink / raw)
  To: linus-amlogic

There is no remove callbacks in meson's clock controllers and
of_clk_del_provider is never called if of_clk_add_hw_provider has been
executed, introducing a potential memory leak.
Fixing this by the using the devm variant.

In reality, the leak would never happen since these controllers are
never unloaded once in use ... still, this is worth cleaning.

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
 drivers/clk/meson/axg.c     | 4 ++--
 drivers/clk/meson/gxbb.c    | 5 +++--
 drivers/clk/meson/meson8b.c | 4 ++--
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/clk/meson/axg.c b/drivers/clk/meson/axg.c
index 87aba8e871a0..02f4401d7bc3 100644
--- a/drivers/clk/meson/axg.c
+++ b/drivers/clk/meson/axg.c
@@ -923,8 +923,8 @@ static int axg_clkc_probe(struct platform_device *pdev)
 		}
 	}
 
-	return of_clk_add_hw_provider(dev->of_node, of_clk_hw_onecell_get,
-			clkc_data->hw_onecell_data);
+	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
+					   clkc_data->hw_onecell_data);
 }
 
 static struct platform_driver axg_driver = {
diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
index ba1023983d79..472a3cfbfbc5 100644
--- a/drivers/clk/meson/gxbb.c
+++ b/drivers/clk/meson/gxbb.c
@@ -2028,8 +2028,9 @@ static int gxbb_clkc_probe(struct platform_device *pdev)
 			goto iounmap;
 	}
 
-	return of_clk_add_hw_provider(dev->of_node, of_clk_hw_onecell_get,
-			clkc_data->hw_onecell_data);
+
+	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
+					   clkc_data->hw_onecell_data);
 
 iounmap:
 	iounmap(clk_base);
diff --git a/drivers/clk/meson/meson8b.c b/drivers/clk/meson/meson8b.c
index 3ffea80c1308..abac079ff77f 100644
--- a/drivers/clk/meson/meson8b.c
+++ b/drivers/clk/meson/meson8b.c
@@ -878,8 +878,8 @@ static int meson8b_clkc_probe(struct platform_device *pdev)
 		return ret;
 	}
 
-	return of_clk_add_hw_provider(dev->of_node, of_clk_hw_onecell_get,
-			&meson8b_hw_onecell_data);
+	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
+					   &meson8b_hw_onecell_data);
 }
 
 static const struct of_device_id meson8b_clkc_match_table[] = {
-- 
2.14.3

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/2] clk: meson: use devm_of_clk_add_hw_provider
  2018-01-18 12:08 ` [PATCH 2/2] clk: meson: use devm_of_clk_add_hw_provider Jerome Brunet
@ 2018-01-18 15:25   ` Neil Armstrong
  0 siblings, 0 replies; 5+ messages in thread
From: Neil Armstrong @ 2018-01-18 15:25 UTC (permalink / raw)
  To: linus-amlogic

On 18/01/2018 13:08, Jerome Brunet wrote:
> There is no remove callbacks in meson's clock controllers and
> of_clk_del_provider is never called if of_clk_add_hw_provider has been
> executed, introducing a potential memory leak.
> Fixing this by the using the devm variant.
> 
> In reality, the leak would never happen since these controllers are
> never unloaded once in use ... still, this is worth cleaning.
> 
> Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
> ---
>  drivers/clk/meson/axg.c     | 4 ++--
>  drivers/clk/meson/gxbb.c    | 5 +++--
>  drivers/clk/meson/meson8b.c | 4 ++--
>  3 files changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/clk/meson/axg.c b/drivers/clk/meson/axg.c
> index 87aba8e871a0..02f4401d7bc3 100644
> --- a/drivers/clk/meson/axg.c
> +++ b/drivers/clk/meson/axg.c
> @@ -923,8 +923,8 @@ static int axg_clkc_probe(struct platform_device *pdev)
>  		}
>  	}
>  
> -	return of_clk_add_hw_provider(dev->of_node, of_clk_hw_onecell_get,
> -			clkc_data->hw_onecell_data);
> +	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
> +					   clkc_data->hw_onecell_data);
>  }
>  
>  static struct platform_driver axg_driver = {
> diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
> index ba1023983d79..472a3cfbfbc5 100644
> --- a/drivers/clk/meson/gxbb.c
> +++ b/drivers/clk/meson/gxbb.c
> @@ -2028,8 +2028,9 @@ static int gxbb_clkc_probe(struct platform_device *pdev)
>  			goto iounmap;
>  	}
>  
> -	return of_clk_add_hw_provider(dev->of_node, of_clk_hw_onecell_get,
> -			clkc_data->hw_onecell_data);
> +
> +	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
> +					   clkc_data->hw_onecell_data);
>  
>  iounmap:
>  	iounmap(clk_base);
> diff --git a/drivers/clk/meson/meson8b.c b/drivers/clk/meson/meson8b.c
> index 3ffea80c1308..abac079ff77f 100644
> --- a/drivers/clk/meson/meson8b.c
> +++ b/drivers/clk/meson/meson8b.c
> @@ -878,8 +878,8 @@ static int meson8b_clkc_probe(struct platform_device *pdev)
>  		return ret;
>  	}
>  
> -	return of_clk_add_hw_provider(dev->of_node, of_clk_hw_onecell_get,
> -			&meson8b_hw_onecell_data);
> +	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
> +					   &meson8b_hw_onecell_data);
>  }
>  
>  static const struct of_device_id meson8b_clkc_match_table[] = {
> 

Well devm is allocating a devm structure to unregister the clocks when removed, which will never happen
so this allocation is useless.

Anyway it's cleaner if we do some other stuff after this call in the future.

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] clk: meson: use dev pointer where possible
  2018-01-18 12:08 ` [PATCH 1/2] clk: meson: use dev pointer where possible Jerome Brunet
@ 2018-01-18 15:25   ` Neil Armstrong
  0 siblings, 0 replies; 5+ messages in thread
From: Neil Armstrong @ 2018-01-18 15:25 UTC (permalink / raw)
  To: linus-amlogic

On 18/01/2018 13:08, Jerome Brunet wrote:
> The 'dev' pointer is directly available in gxbb and axg clock
> controller, so consistently use it instead of going the through the
> 'pdev' pointer once in while
> 
> Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
> ---
>  drivers/clk/meson/axg.c  | 8 ++++----
>  drivers/clk/meson/gxbb.c | 2 +-
>  2 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/clk/meson/axg.c b/drivers/clk/meson/axg.c
> index 1294f3ad7cd5..87aba8e871a0 100644
> --- a/drivers/clk/meson/axg.c
> +++ b/drivers/clk/meson/axg.c
> @@ -873,7 +873,7 @@ static int axg_clkc_probe(struct platform_device *pdev)
>  	void __iomem *clk_base;
>  	int ret, clkid, i;
>  
> -	clkc_data = of_device_get_match_data(&pdev->dev);
> +	clkc_data = of_device_get_match_data(dev);
>  	if (!clkc_data)
>  		return -EINVAL;
>  
> @@ -881,9 +881,9 @@ static int axg_clkc_probe(struct platform_device *pdev)
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	if (!res)
>  		return -EINVAL;
> -	clk_base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
> +	clk_base = devm_ioremap(dev, res->start, resource_size(res));
>  	if (!clk_base) {
> -		dev_err(&pdev->dev, "Unable to map clk base\n");
> +		dev_err(dev, "Unable to map clk base\n");
>  		return -ENXIO;
>  	}
>  
> @@ -918,7 +918,7 @@ static int axg_clkc_probe(struct platform_device *pdev)
>  		ret = devm_clk_hw_register(dev,
>  					clkc_data->hw_onecell_data->hws[clkid]);
>  		if (ret) {
> -			dev_err(&pdev->dev, "Clock registration failed\n");
> +			dev_err(dev, "Clock registration failed\n");
>  			return ret;
>  		}
>  	}
> diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
> index af24455af5b4..ba1023983d79 100644
> --- a/drivers/clk/meson/gxbb.c
> +++ b/drivers/clk/meson/gxbb.c
> @@ -1976,7 +1976,7 @@ static int gxbb_clkc_probe(struct platform_device *pdev)
>  	int ret, clkid, i;
>  	struct device *dev = &pdev->dev;
>  
> -	clkc_data = of_device_get_match_data(&pdev->dev);
> +	clkc_data = of_device_get_match_data(dev);
>  	if (!clkc_data)
>  		return -EINVAL;
>  
> 

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-01-18 15:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-18 12:08 [PATCH 0/2] clk: meson: probe clean-ups Jerome Brunet
2018-01-18 12:08 ` [PATCH 1/2] clk: meson: use dev pointer where possible Jerome Brunet
2018-01-18 15:25   ` Neil Armstrong
2018-01-18 12:08 ` [PATCH 2/2] clk: meson: use devm_of_clk_add_hw_provider Jerome Brunet
2018-01-18 15:25   ` Neil Armstrong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®