From: Jongsung Kim <neidhard.kim@lge.com>
To: Maxime Ripard <maxime.ripard@free-electrons.com>,
Mike Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@codeaurora.org>
Cc: Chen-Yu Tsai <wens@csie.org>,
linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH 1/2] clk: fixed-factor: Allow for a few clocks to change the parent rate
Date: Fri, 24 Jun 2016 13:43:52 +0900 [thread overview]
Message-ID: <576CBA88.2060502@lge.com> (raw)
In-Reply-To: <20160622091555.18415-1-maxime.ripard@free-electrons.com>
Hi Maxime,
We need a path to set CLK_SET_RATE_PARENT any other needed flags when a fixed-factor-clock is initialized by DT. It seems your way will work also for my case. However, I suggested some more generic approach:
https://lkml.org/lkml/2016/6/24/3
Please leave any comments.
On 2016년 06월 22일 18:15, Maxime Ripard wrote:
> The only way for a fixed factor clock to change its rate would be to change
> its parent rate.
>
> Since passing blindly CLK_SET_RATE_PARENT might break a lot of platforms
> that were relying on the fact that the parent rate wouldn't change,
> introduce a compatible-based whitelist that will allow clocks to opt-in
> that flag.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> .../devicetree/bindings/clock/fixed-factor-clock.txt | 4 ++++
> drivers/clk/clk-fixed-factor.c | 11 ++++++++++-
> 2 files changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt b/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt
> index 1bae8527eb9b..189467a7188a 100644
> --- a/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt
> +++ b/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt
> @@ -14,6 +14,10 @@ Required properties:
> Optional properties:
> - clock-output-names : From common clock binding.
>
> +Some clocks that require special treatments are also handled by that
> +driver, with the compatibles:
> + - allwinner,sun4i-a10-pll3-2x-clk
> +
> Example:
> clock {
> compatible = "fixed-factor-clock";
> diff --git a/drivers/clk/clk-fixed-factor.c b/drivers/clk/clk-fixed-factor.c
> index 75cd6c792cb8..4db3be214077 100644
> --- a/drivers/clk/clk-fixed-factor.c
> +++ b/drivers/clk/clk-fixed-factor.c
> @@ -142,6 +142,11 @@ void clk_hw_unregister_fixed_factor(struct clk_hw *hw)
> EXPORT_SYMBOL_GPL(clk_hw_unregister_fixed_factor);
>
> #ifdef CONFIG_OF
> +static const struct of_device_id set_rate_parent_matches[] = {
> + { .compatible = "allwinner,sun4i-a10-pll3-2x-clk" },
> + { /* Sentinel */ },
> +};
> +
> /**
> * of_fixed_factor_clk_setup() - Setup function for simple fixed factor clock
> */
> @@ -150,6 +155,7 @@ void __init of_fixed_factor_clk_setup(struct device_node *node)
> struct clk *clk;
> const char *clk_name = node->name;
> const char *parent_name;
> + unsigned long flags = 0;
> u32 div, mult;
>
> if (of_property_read_u32(node, "clock-div", &div)) {
> @@ -167,7 +173,10 @@ void __init of_fixed_factor_clk_setup(struct device_node *node)
> of_property_read_string(node, "clock-output-names", &clk_name);
> parent_name = of_clk_get_parent_name(node, 0);
>
> - clk = clk_register_fixed_factor(NULL, clk_name, parent_name, 0,
> + if (of_match_node(set_rate_parent_matches, node))
> + flags |= CLK_SET_RATE_PARENT;
> +
> + clk = clk_register_fixed_factor(NULL, clk_name, parent_name, flags,
> mult, div);
> if (!IS_ERR(clk))
> of_clk_add_provider(node, of_clk_src_simple_get, clk);
WARNING: multiple messages have this Message-ID (diff)
From: neidhard.kim@lge.com (Jongsung Kim)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/2] clk: fixed-factor: Allow for a few clocks to change the parent rate
Date: Fri, 24 Jun 2016 13:43:52 +0900 [thread overview]
Message-ID: <576CBA88.2060502@lge.com> (raw)
In-Reply-To: <20160622091555.18415-1-maxime.ripard@free-electrons.com>
Hi Maxime,
We need a path to set CLK_SET_RATE_PARENT any other needed flags when a fixed-factor-clock is initialized by DT. It seems your way will work also for my case. However, I suggested some more generic approach:
https://lkml.org/lkml/2016/6/24/3
Please leave any comments.
On 2016? 06? 22? 18:15, Maxime Ripard wrote:
> The only way for a fixed factor clock to change its rate would be to change
> its parent rate.
>
> Since passing blindly CLK_SET_RATE_PARENT might break a lot of platforms
> that were relying on the fact that the parent rate wouldn't change,
> introduce a compatible-based whitelist that will allow clocks to opt-in
> that flag.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> .../devicetree/bindings/clock/fixed-factor-clock.txt | 4 ++++
> drivers/clk/clk-fixed-factor.c | 11 ++++++++++-
> 2 files changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt b/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt
> index 1bae8527eb9b..189467a7188a 100644
> --- a/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt
> +++ b/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt
> @@ -14,6 +14,10 @@ Required properties:
> Optional properties:
> - clock-output-names : From common clock binding.
>
> +Some clocks that require special treatments are also handled by that
> +driver, with the compatibles:
> + - allwinner,sun4i-a10-pll3-2x-clk
> +
> Example:
> clock {
> compatible = "fixed-factor-clock";
> diff --git a/drivers/clk/clk-fixed-factor.c b/drivers/clk/clk-fixed-factor.c
> index 75cd6c792cb8..4db3be214077 100644
> --- a/drivers/clk/clk-fixed-factor.c
> +++ b/drivers/clk/clk-fixed-factor.c
> @@ -142,6 +142,11 @@ void clk_hw_unregister_fixed_factor(struct clk_hw *hw)
> EXPORT_SYMBOL_GPL(clk_hw_unregister_fixed_factor);
>
> #ifdef CONFIG_OF
> +static const struct of_device_id set_rate_parent_matches[] = {
> + { .compatible = "allwinner,sun4i-a10-pll3-2x-clk" },
> + { /* Sentinel */ },
> +};
> +
> /**
> * of_fixed_factor_clk_setup() - Setup function for simple fixed factor clock
> */
> @@ -150,6 +155,7 @@ void __init of_fixed_factor_clk_setup(struct device_node *node)
> struct clk *clk;
> const char *clk_name = node->name;
> const char *parent_name;
> + unsigned long flags = 0;
> u32 div, mult;
>
> if (of_property_read_u32(node, "clock-div", &div)) {
> @@ -167,7 +173,10 @@ void __init of_fixed_factor_clk_setup(struct device_node *node)
> of_property_read_string(node, "clock-output-names", &clk_name);
> parent_name = of_clk_get_parent_name(node, 0);
>
> - clk = clk_register_fixed_factor(NULL, clk_name, parent_name, 0,
> + if (of_match_node(set_rate_parent_matches, node))
> + flags |= CLK_SET_RATE_PARENT;
> +
> + clk = clk_register_fixed_factor(NULL, clk_name, parent_name, flags,
> mult, div);
> if (!IS_ERR(clk))
> of_clk_add_provider(node, of_clk_src_simple_get, clk);
next prev parent reply other threads:[~2016-06-24 4:43 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-22 9:15 [PATCH 1/2] clk: fixed-factor: Allow for a few clocks to change the parent rate Maxime Ripard
2016-06-22 9:15 ` Maxime Ripard
2016-06-22 9:15 ` Maxime Ripard
2016-06-22 9:15 ` [PATCH 2/2] ARM: sun5i: Allow PLL3 2x fixed factor clock to change PLL3 rate Maxime Ripard
2016-06-22 9:15 ` Maxime Ripard
2016-06-22 9:15 ` Maxime Ripard
2016-06-24 4:43 ` Jongsung Kim [this message]
2016-06-24 4:43 ` [PATCH 1/2] clk: fixed-factor: Allow for a few clocks to change the parent rate Jongsung Kim
2016-06-24 15:52 ` Rob Herring
2016-06-24 15:52 ` Rob Herring
2016-07-02 0:17 ` Stephen Boyd
2016-07-02 0:17 ` Stephen Boyd
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=576CBA88.2060502@lge.com \
--to=neidhard.kim@lge.com \
--cc=devicetree@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=maxime.ripard@free-electrons.com \
--cc=mturquette@baylibre.com \
--cc=sboyd@codeaurora.org \
--cc=wens@csie.org \
/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.