From: Stephen Boyd <sboyd@codeaurora.org>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>,
Tomeu Vizoso <tomeu.vizoso@collabora.com>,
Paul Walmsley <paul@pwsan.com>, Tony Lindgren <tony@atomide.com>,
linux-kernel@vger.kernel.org,
Mike Turquette <mturquette@linaro.org>,
linux-omap@vger.kernel.org,
Javier Martinez Canillas <javier.martinez@collabora.co.uk>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v13 3/6] clk: Make clk API return per-user struct clk instances
Date: Thu, 05 Feb 2015 17:35:28 -0800 [thread overview]
Message-ID: <54D41A60.8040702@codeaurora.org> (raw)
In-Reply-To: <20150206004210.GB8670@n2100.arm.linux.org.uk>
On 02/05/15 16:42, Russell King - ARM Linux wrote:
> On Thu, Feb 05, 2015 at 02:14:01PM -0800, Stephen Boyd wrote:
>> Actually we can bury the __clk_create_clk() inside
>> __of_clk_get_from_provider(). We should also move __clk_get() into there
>> because right now we have a hole where whoever calls
>> of_clk_get_from_provider() never calls __clk_get() on the clk, leading
>> to possible badness. v2 coming soon.
> There's some other issues here too...
>
> sound/soc/kirkwood/kirkwood-i2s.c:
>
> priv->clk = devm_clk_get(&pdev->dev, np ? "internal" : NULL);
> ...
> priv->extclk = devm_clk_get(&pdev->dev, "extclk");
> if (IS_ERR(priv->extclk)) {
> ...
> } else {
> if (priv->extclk == priv->clk) {
> devm_clk_put(&pdev->dev, priv->extclk);
> priv->extclk = ERR_PTR(-EINVAL);
> } else {
> dev_info(&pdev->dev, "found external clock\n");
> clk_prepare_enable(priv->extclk);
> soc_dai = kirkwood_i2s_dai_extclk;
> }
>
> It should be fine provided your "trick" is only done for DT clocks,
> but not for legacy - with legacy, a NULL in the clkdev tables will
> match both these requests, hence the need to compare the clk_get()
> return value to tell whether we get the same clock.
>
Are we still talking about of_clk_get_from_provider()? Or are we talking
about comparing struct clk pointers? From what I can tell this code is
now broken because we made all clk getting functions (there's quite a
few...) return unique pointers every time they're called. It seems that
the driver wants to know if extclk and clk are the same so it can do
something differently in kirkwood_set_rate(). Do we need some sort of
clk_equal(struct clk *a, struct clk *b) function for drivers like this?
Also, even on DT this could fail if the DT author made internal and
extclk map to the same clock provider and cell.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
WARNING: multiple messages have this Message-ID (diff)
From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v13 3/6] clk: Make clk API return per-user struct clk instances
Date: Thu, 05 Feb 2015 17:35:28 -0800 [thread overview]
Message-ID: <54D41A60.8040702@codeaurora.org> (raw)
In-Reply-To: <20150206004210.GB8670@n2100.arm.linux.org.uk>
On 02/05/15 16:42, Russell King - ARM Linux wrote:
> On Thu, Feb 05, 2015 at 02:14:01PM -0800, Stephen Boyd wrote:
>> Actually we can bury the __clk_create_clk() inside
>> __of_clk_get_from_provider(). We should also move __clk_get() into there
>> because right now we have a hole where whoever calls
>> of_clk_get_from_provider() never calls __clk_get() on the clk, leading
>> to possible badness. v2 coming soon.
> There's some other issues here too...
>
> sound/soc/kirkwood/kirkwood-i2s.c:
>
> priv->clk = devm_clk_get(&pdev->dev, np ? "internal" : NULL);
> ...
> priv->extclk = devm_clk_get(&pdev->dev, "extclk");
> if (IS_ERR(priv->extclk)) {
> ...
> } else {
> if (priv->extclk == priv->clk) {
> devm_clk_put(&pdev->dev, priv->extclk);
> priv->extclk = ERR_PTR(-EINVAL);
> } else {
> dev_info(&pdev->dev, "found external clock\n");
> clk_prepare_enable(priv->extclk);
> soc_dai = kirkwood_i2s_dai_extclk;
> }
>
> It should be fine provided your "trick" is only done for DT clocks,
> but not for legacy - with legacy, a NULL in the clkdev tables will
> match both these requests, hence the need to compare the clk_get()
> return value to tell whether we get the same clock.
>
Are we still talking about of_clk_get_from_provider()? Or are we talking
about comparing struct clk pointers? From what I can tell this code is
now broken because we made all clk getting functions (there's quite a
few...) return unique pointers every time they're called. It seems that
the driver wants to know if extclk and clk are the same so it can do
something differently in kirkwood_set_rate(). Do we need some sort of
clk_equal(struct clk *a, struct clk *b) function for drivers like this?
Also, even on DT this could fail if the DT author made internal and
extclk map to the same clock provider and cell.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2015-02-06 1:35 UTC|newest]
Thread overview: 177+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-23 11:03 [PATCH v13 0/6] Per-user clock constraints Tomeu Vizoso
2015-01-23 11:03 ` [PATCH v13 1/6] clk: Remove unneeded NULL checks Tomeu Vizoso
2015-01-23 11:03 ` [PATCH v13 2/6] clk: Remove __clk_register Tomeu Vizoso
2015-01-23 11:03 ` [PATCH v13 3/6] clk: Make clk API return per-user struct clk instances Tomeu Vizoso
2015-01-23 11:03 ` Tomeu Vizoso
2015-02-01 21:24 ` Mike Turquette
2015-02-01 21:24 ` Mike Turquette
2015-02-01 21:24 ` Mike Turquette
2015-02-02 17:04 ` Tony Lindgren
2015-02-02 17:04 ` Tony Lindgren
2015-02-02 17:32 ` Mike Turquette
2015-02-02 17:32 ` Mike Turquette
2015-02-02 19:32 ` Tero Kristo
2015-02-02 19:32 ` Tero Kristo
2015-02-02 19:32 ` Tero Kristo
2015-02-02 20:44 ` Tony Lindgren
2015-02-02 20:44 ` Tony Lindgren
2015-02-02 22:48 ` Mike Turquette
2015-02-02 22:48 ` Mike Turquette
2015-02-02 23:11 ` Tony Lindgren
2015-02-02 23:11 ` Tony Lindgren
2015-02-02 22:41 ` Mike Turquette
2015-02-02 22:41 ` Mike Turquette
2015-02-02 22:52 ` Stephen Boyd
2015-02-02 22:52 ` Stephen Boyd
2015-02-03 7:03 ` Tomeu Vizoso
2015-02-03 7:03 ` Tomeu Vizoso
2015-02-03 8:46 ` Tero Kristo
2015-02-03 8:46 ` Tero Kristo
2015-02-03 8:46 ` Tero Kristo
2015-02-03 15:22 ` Tony Lindgren
2015-02-03 15:22 ` Tony Lindgren
2015-02-02 20:45 ` [Cocci] " Stephen Boyd
2015-02-02 20:45 ` Stephen Boyd
2015-02-02 20:45 ` Stephen Boyd
2015-02-02 21:31 ` [Cocci] " Julia Lawall
2015-02-02 21:31 ` Julia Lawall
2015-02-02 21:31 ` Julia Lawall
2015-02-02 22:35 ` [Cocci] " Stephen Boyd
2015-02-02 22:35 ` Stephen Boyd
2015-02-02 22:35 ` Stephen Boyd
2015-02-02 22:50 ` [Cocci] " Mike Turquette
2015-02-02 22:50 ` Mike Turquette
2015-02-02 22:50 ` Mike Turquette
2015-02-03 16:04 ` [Cocci] " Quentin Lambert
2015-02-03 16:04 ` Quentin Lambert
2015-02-03 16:04 ` Quentin Lambert
2015-02-04 23:26 ` Stephen Boyd
2015-02-04 23:26 ` Stephen Boyd
2015-02-04 23:26 ` Stephen Boyd
2015-02-05 15:45 ` Quentin Lambert
2015-02-05 15:45 ` Quentin Lambert
2015-02-05 15:45 ` Quentin Lambert
2015-02-05 16:02 ` Quentin Lambert
2015-02-05 16:02 ` Quentin Lambert
2015-02-05 16:02 ` Quentin Lambert
2015-02-06 1:49 ` Stephen Boyd
2015-02-06 1:49 ` Stephen Boyd
2015-02-06 1:49 ` Stephen Boyd
2015-02-06 2:15 ` Stephen Boyd
2015-02-06 2:15 ` Stephen Boyd
2015-02-06 2:15 ` Stephen Boyd
2015-02-06 9:01 ` Quentin Lambert
2015-02-06 9:01 ` Quentin Lambert
2015-02-06 9:01 ` Quentin Lambert
2015-02-06 9:12 ` Julia Lawall
2015-02-06 9:12 ` Julia Lawall
2015-02-06 9:12 ` Julia Lawall
2015-02-06 17:15 ` Stephen Boyd
2015-02-06 17:15 ` Stephen Boyd
2015-02-06 17:15 ` Stephen Boyd
2015-02-17 22:01 ` Stephen Boyd
2015-02-17 22:01 ` Stephen Boyd
2015-02-17 22:01 ` Stephen Boyd
2015-03-12 17:20 ` Sebastian Andrzej Siewior
2015-03-12 17:20 ` Sebastian Andrzej Siewior
2015-03-12 17:20 ` Sebastian Andrzej Siewior
2015-03-12 19:43 ` Stephen Boyd
2015-03-12 19:43 ` Stephen Boyd
2015-03-12 19:43 ` Stephen Boyd
2015-03-13 3:29 ` Shawn Guo
2015-03-13 3:29 ` Shawn Guo
2015-03-13 3:29 ` Shawn Guo
2015-03-13 8:20 ` Sebastian Andrzej Siewior
2015-03-13 8:20 ` Sebastian Andrzej Siewior
2015-03-13 8:20 ` Sebastian Andrzej Siewior
2015-03-13 13:42 ` Shawn Guo
2015-03-13 13:42 ` Shawn Guo
2015-03-13 13:42 ` Shawn Guo
2015-03-13 17:42 ` Stephen Boyd
2015-03-13 17:42 ` Stephen Boyd
2015-03-13 17:42 ` Stephen Boyd
2015-02-05 19:44 ` Sylwester Nawrocki
2015-02-05 19:44 ` Sylwester Nawrocki
2015-02-05 20:06 ` Sylwester Nawrocki
2015-02-05 20:06 ` Sylwester Nawrocki
2015-02-05 20:07 ` Stephen Boyd
2015-02-05 20:07 ` Stephen Boyd
2015-02-05 22:14 ` Stephen Boyd
2015-02-05 22:14 ` Stephen Boyd
2015-02-06 0:42 ` Russell King - ARM Linux
2015-02-06 0:42 ` Russell King - ARM Linux
2015-02-06 1:35 ` Stephen Boyd [this message]
2015-02-06 1:35 ` Stephen Boyd
2015-02-06 13:39 ` Russell King - ARM Linux
2015-02-06 13:39 ` Russell King - ARM Linux
2015-02-06 19:30 ` Stephen Boyd
2015-02-06 19:30 ` Stephen Boyd
2015-02-06 19:37 ` Russell King - ARM Linux
2015-02-06 19:37 ` Russell King - ARM Linux
2015-02-06 19:41 ` Stephen Boyd
2015-02-06 19:41 ` Stephen Boyd
2015-02-19 21:32 ` Mike Turquette
2015-02-19 21:32 ` Mike Turquette
2015-02-24 14:08 ` Russell King - ARM Linux
2015-02-24 14:08 ` Russell King - ARM Linux
2015-02-25 2:18 ` Mike Turquette
2015-02-25 2:18 ` Mike Turquette
2015-01-23 11:03 ` [PATCH v13 4/6] clk: Add rate constraints to clocks Tomeu Vizoso
2015-01-23 11:03 ` Tomeu Vizoso
2015-01-23 11:03 ` Tomeu Vizoso
2015-01-29 13:31 ` Geert Uytterhoeven
2015-01-29 13:31 ` Geert Uytterhoeven
2015-01-29 13:31 ` Geert Uytterhoeven
2015-01-29 13:31 ` Geert Uytterhoeven
2015-01-29 19:13 ` Stephen Boyd
2015-01-29 19:13 ` Stephen Boyd
2015-01-29 19:13 ` Stephen Boyd
2015-01-29 19:13 ` Stephen Boyd
2015-01-31 1:31 ` Stephen Boyd
2015-01-31 1:31 ` Stephen Boyd
2015-01-31 1:31 ` Stephen Boyd
2015-01-31 1:31 ` Stephen Boyd
2015-01-31 18:36 ` Tomeu Vizoso
2015-01-31 18:36 ` Tomeu Vizoso
2015-01-31 18:36 ` Tomeu Vizoso
2015-01-31 18:36 ` Tomeu Vizoso
2015-02-01 22:18 ` Mike Turquette
2015-02-01 22:18 ` Mike Turquette
2015-02-01 22:18 ` Mike Turquette
2015-02-01 22:18 ` Mike Turquette
2015-02-02 7:59 ` Geert Uytterhoeven
2015-02-02 7:59 ` Geert Uytterhoeven
2015-02-02 7:59 ` Geert Uytterhoeven
2015-02-02 7:59 ` Geert Uytterhoeven
2015-02-02 16:12 ` Tony Lindgren
2015-02-02 16:12 ` Tony Lindgren
2015-02-02 16:12 ` Tony Lindgren
2015-02-02 16:12 ` Tony Lindgren
2015-02-02 17:46 ` Mike Turquette
2015-02-02 17:46 ` Mike Turquette
2015-02-02 17:46 ` Mike Turquette
2015-02-02 17:46 ` Mike Turquette
2015-02-02 17:49 ` Russell King - ARM Linux
2015-02-02 17:49 ` Russell King - ARM Linux
2015-02-02 17:49 ` Russell King - ARM Linux
2015-02-02 17:49 ` Russell King - ARM Linux
2015-02-02 19:21 ` Tony Lindgren
2015-02-02 19:21 ` Tony Lindgren
2015-02-02 19:21 ` Tony Lindgren
2015-02-02 19:21 ` Tony Lindgren
2015-02-02 20:47 ` Tony Lindgren
2015-02-02 20:47 ` Tony Lindgren
2015-02-02 20:47 ` Tony Lindgren
2015-02-02 20:47 ` Tony Lindgren
2015-01-23 11:03 ` [PATCH v13 5/6] clkdev: Export clk_register_clkdev Tomeu Vizoso
2015-01-23 11:03 ` Tomeu Vizoso
2015-02-03 17:35 ` Andy Shevchenko
2015-02-03 17:35 ` Andy Shevchenko
2015-02-03 17:43 ` Andy Shevchenko
2015-02-03 17:43 ` Andy Shevchenko
2015-01-23 11:03 ` [PATCH v13 6/6] clk: Add module for unit tests Tomeu Vizoso
2015-01-27 0:55 ` [PATCH v13 0/6] Per-user clock constraints Stephen Boyd
2015-01-27 6:29 ` Tomeu Vizoso
2015-01-28 6:59 ` Tomeu Vizoso
[not found] ` <20150129022633.22722.78592@quantum>
2015-01-29 6:41 ` Tomeu Vizoso
2015-01-29 14:29 ` Mike Turquette
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54D41A60.8040702@codeaurora.org \
--to=sboyd@codeaurora.org \
--cc=javier.martinez@collabora.co.uk \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=mturquette@linaro.org \
--cc=paul@pwsan.com \
--cc=s.nawrocki@samsung.com \
--cc=tomeu.vizoso@collabora.com \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.