* [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 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
* [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
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®