[PATCH v2] clk: add clk_ignore_unused option to keep boot clocks on

Mike Turquette mturquette at linaro.org
Sun Apr 28 02:06:57 EDT 2013


Quoting Olof Johansson (2013-04-27 14:10:18)
> This is primarily useful when there's a driver that doesn't claim clocks
> properly, but the bootloader leaves them on. It's not expected to be used
> in normal cases, but for bringup and debug it's very useful to have the
> option to not gate unclaimed clocks that are still on.
> 
> Signed-off-by: Olof Johansson <olof at lixom.net>

Thanks for the respin.  I had to fix up a trivial merge issue with
Documentation/kernel-parameters.txt, but no big deal.  Patch is merged
into clk-next.

Regards,
Mike

> ---
>  Documentation/clk.txt               | 11 +++++++++++
>  Documentation/kernel-parameters.txt |  8 ++++++++
>  drivers/clk/clk.c                   | 13 +++++++++++++
>  3 files changed, 32 insertions(+)
> 
> diff --git a/Documentation/clk.txt b/Documentation/clk.txt
> index 4274a54..b9911c2 100644
> --- a/Documentation/clk.txt
> +++ b/Documentation/clk.txt
> @@ -231,3 +231,14 @@ To better enforce this policy, always follow this simple rule: any
>  statically initialized clock data MUST be defined in a separate file
>  from the logic that implements its ops.  Basically separate the logic
>  from the data and all is well.
> +
> +       Part 6 - Disabling clock gating of unused clocks
> +
> +Sometimes during development it can be useful to be able to bypass the
> +default disabling of unused clocks. For example, if drivers aren't enabling
> +clocks properly but rely on them being on from the bootloader, bypassing
> +the disabling means that the driver will remain functional while the issues
> +are sorted out.
> +
> +To bypass this disabling, include "clk_ignore_unused" in the bootargs to the
> +kernel.
> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> index c4fa000..c3bfacb 100644
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -44,6 +44,7 @@ parameter is applicable:
>         AVR32   AVR32 architecture is enabled.
>         AX25    Appropriate AX.25 support is enabled.
>         BLACKFIN Blackfin architecture is enabled.
> +       CLK     Common clock infrastructure is enabled.
>         CMA     Contiguous Memory Area support is enabled.
>         DRM     Direct Rendering Management support is enabled.
>         DYNAMIC_DEBUG Build in debug messages and enable them at runtime
> @@ -473,6 +474,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
>  
>         cio_ignore=     [S390]
>                         See Documentation/s390/CommonIO for details.
> +       clk_ignore_unused
> +                       [CLK]
> +                       Keep all clocks already enabled by bootloader on,
> +                       even if no driver has claimed them. This is useful
> +                       for debug and development, but should not be
> +                       needed on a platform with proper driver support.
> +                       For more information, see Documentation/clk.txt.
>  
>         clock=          [BUGS=X86-32, HW] gettimeofday clocksource override.
>                         [Deprecated]
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index 20ce67f..934cfd1 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -499,10 +499,23 @@ out:
>         return;
>  }
>  
> +static bool clk_ignore_unused;
> +static int __init clk_ignore_unused_setup(char *__unused)
> +{
> +       clk_ignore_unused = true;
> +       return 1;
> +}
> +__setup("clk_ignore_unused", clk_ignore_unused_setup);
> +
>  static int clk_disable_unused(void)
>  {
>         struct clk *clk;
>  
> +       if (clk_ignore_unused) {
> +               pr_warn("clk: Not disabling unused clocks\n");
> +               return 0;
> +       }
> +
>         clk_prepare_lock();
>  
>         hlist_for_each_entry(clk, &clk_root_list, child_node)
> -- 
> 1.8.1.192.gc4361b8



More information about the linux-arm-kernel mailing list