Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1320156

Re: [PATCH 3/3] clk: Provide OF helper to mark clocks as CRITICAL

Path csiph.com!aioe.org!bofh.it!news.nic.it!robomod
From André Przywara <andre.przywara@arm.com>
Newsgroups linux.kernel
Subject Re: [PATCH 3/3] clk: Provide OF helper to mark clocks as CRITICAL
Date Thu, 28 Jan 2016 01:00:02 +0100
Message-ID <qVIae-2Yj-3@gated-at.bofh.it> (permalink)
References <qSj8l-1Wu-7@gated-at.bofh.it> <qSj8m-1Wu-25@gated-at.bofh.it>
X-Enigmail-Draft-Status N1110
Organization ARM Ltd.
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0
MIME-Version 1.0
Content-Type text/plain; charset=windows-1252
Content-Transfer-Encoding 7bit
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 87
X-Original-Cc kernel@stlinux.com, s.hauer@pengutronix.de, sboyd@codeaurora.org, geert@linux-m68k.org, maxime.ripard@free-electrons.com, mturquette@baylibre.com, maxime.coquelin@st.com
X-Original-Date Wed, 27 Jan 2016 23:51:45 +0000
X-Original-Message-ID <56A95811.8010200@arm.com>
X-Original-References <1453127331-20616-1-git-send-email-lee.jones@linaro.org> <1453127331-20616-4-git-send-email-lee.jones@linaro.org>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1320156

Show key headers only | View raw


Hi,

On 18/01/16 14:28, Lee Jones wrote:
> This call matches clocks which have been marked as critical in DT
> and sets the appropriate flag.  These flags can then be used to
> mark the clock core flags appropriately prior to registration.

I like the idea of having a generic property very much. Also this solves
a problem I have in a very elegant way.

I guess you need to document this in the bindings documentation, I'd
suggest Documentation/devicetree/bindings/clock/clock-bindings.txt.

Also by doing so you should clarify it's exact meaning:
The singular form of "critical-clock" hints as either having a scalar
value only or even being a flag only.
But the code actually reads as it being _a list_ of indices of the
output clocks, so wouldn't "critical-clocks" (plural) be a better name?
This goes along the line of using the plural for the other standard
clock node properties as well.

So is this the intended usage?
some_clk {
	#clock-cells = <1>;
	clock-output-names = "just_led", "cpu";
	critical-clocks = <1>;
	....

to mark the "cpu" clock as critical?
Or matching the clock-indeces property values if that is used?

Also since it is a generic property, isn't there some way of parsing it
and setting the flag automatically for each and every clock provider?
Without driver authors having to explicitly call this function you
provide? The nature of being a generic clock flag makes me think this is
worthwhile.

Cheers,
Andre.

> 
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> ---
>  include/linux/clk-provider.h | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 
> diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
> index ffa0b2e..6f178b7 100644
> --- a/include/linux/clk-provider.h
> +++ b/include/linux/clk-provider.h
> @@ -707,6 +707,23 @@ const char *of_clk_get_parent_name(struct device_node *np, int index);
>  
>  void of_clk_init(const struct of_device_id *matches);
>  
> +static inline int of_clk_mark_if_critical(struct device_node *np,
> +					  int index, unsigned long *flags)
> +{
> +	struct property *prop;
> +	const __be32 *cur;
> +	uint32_t idx;
> +
> +	if (!np || !flags)
> +		return -EINVAL;
> +
> +	of_property_for_each_u32(np, "critical-clock", prop, cur, idx)
> +		if (index == idx)
> +			*flags |= CLK_IS_CRITICAL;
> +
> +	return 0;
> +}
> +
>  #else /* !CONFIG_OF */
>  
>  static inline int of_clk_add_provider(struct device_node *np,
> @@ -742,6 +759,11 @@ static inline const char *of_clk_get_parent_name(struct device_node *np,
>  {
>  	return NULL;
>  }
> +static inline int of_clk_mark_if_critical(struct device_node *np, int index,
> +					  unsigned long *flags)
> +{
> +	return 0;
> +}
>  #define of_clk_init(matches) \
>  	{ while (0); }
>  #endif /* CONFIG_OF */
> 

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 0/3] clk: Add support for critical clocks Lee Jones <lee.jones@linaro.org> - 2016-01-18 15:40 +0100
  [PATCH 2/3] clk: WARN_ON about to disable a critical clock Lee Jones <lee.jones@linaro.org> - 2016-01-18 15:40 +0100
  [PATCH 3/3] clk: Provide OF helper to mark clocks as CRITICAL Lee Jones <lee.jones@linaro.org> - 2016-01-18 15:40 +0100
    Re: [PATCH 3/3] clk: Provide OF helper to mark clocks as CRITICAL André Przywara <andre.przywara@arm.com> - 2016-01-28 01:00 +0100
      Re: [PATCH 3/3] clk: Provide OF helper to mark clocks as CRITICAL Maxime Ripard <maxime.ripard@free-electrons.com> - 2016-02-01 07:40 +0100
        Re: [PATCH 3/3] clk: Provide OF helper to mark clocks as CRITICAL Lee Jones <lee.jones@linaro.org> - 2016-02-01 09:30 +0100
        Re: [PATCH 3/3] clk: Provide OF helper to mark clocks as CRITICAL Andre Przywara <andre.przywara@arm.com> - 2016-02-02 14:50 +0100
          Re: [PATCH 3/3] clk: Provide OF helper to mark clocks as CRITICAL Lee Jones <lee.jones@linaro.org> - 2016-02-02 16:10 +0100
  [PATCH 1/3] clk: Allow clocks to be marked as CRITICAL Lee Jones <lee.jones@linaro.org> - 2016-01-18 15:40 +0100
    Re: [PATCH 1/3] clk: Allow clocks to be marked as CRITICAL Geert Uytterhoeven <geert@linux-m68k.org> - 2016-01-18 18:20 +0100
      Re: [PATCH 1/3] clk: Allow clocks to be marked as CRITICAL Lee Jones <lee.jones@linaro.org> - 2016-01-19 09:00 +0100

csiph-web