From: Mark Rutland <mark.rutland@arm.com>
To: Tero Kristo <t-kristo@ti.com>
Cc: "mturquette@linaro.org" <mturquette@linaro.org>,
"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
"sassmann@kpanic.de" <sassmann@kpanic.de>,
"peter.ujfalusi@ti.com" <peter.ujfalusi@ti.com>,
"jsarha@ti.com" <jsarha@ti.com>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 1/1] clk: ti: add support for external clock provider
Date: Tue, 19 Aug 2014 14:22:33 +0100 [thread overview]
Message-ID: <20140819132232.GM3302@leverpostej> (raw)
In-Reply-To: <1406898948-26113-2-git-send-email-t-kristo@ti.com>
Hi Tero,
On Fri, Aug 01, 2014 at 02:15:48PM +0100, Tero Kristo wrote:
> External clock provider can now be used to register external clocks under
> it. This is needed as the TI clock driver only registers clocks
> hierarchically under clock providers, and external clocks do not belong
> under any of the current ones.
I must admit that I don't understand the justification for this binding.
Why can't these clocks be descrbied elsewhere and wired up as usual? Why
must they be under the TI clock provide node?
>From the limited description above it sounds like the only reason this
exists is to work around a deficiency in the TI clock driver. That does
not sound like a very good reason for having this.
Thanks,
Mark.
>
> Signed-off-by: Tero Kristo <t-kristo@ti.com>
> ---
> .../devicetree/bindings/arm/omap/ext-clocks.txt | 32 ++++++++++++++++++++
> arch/arm/mach-omap2/io.c | 12 ++++++--
> drivers/clk/ti/clk.c | 23 ++++++++++++++
> include/linux/clk/ti.h | 2 ++
> 4 files changed, 67 insertions(+), 2 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/arm/omap/ext-clocks.txt
>
> diff --git a/Documentation/devicetree/bindings/arm/omap/ext-clocks.txt b/Documentation/devicetree/bindings/arm/omap/ext-clocks.txt
> new file mode 100644
> index 0000000..8e784bb
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/arm/omap/ext-clocks.txt
> @@ -0,0 +1,32 @@
> +TI external clock provider properties
> +
> +External clock provider is used to group SoC external board specific
> +clock nodes. A separate provider node is required as the TI clock
> +driver registers clocks hierarchically.
> +
> +Required properties:
> +- compatible: Shall be: "ti,external-clocks"
> +- clocks: Contains the external clocks for the board
> +- clockdomains: Contains the external clockdomains for the board
> +
> +Example:
> +
> +ext_clocks {
> + compatible = "ti,external-clocks";
> +
> + ext_clocks: clocks {
> + };
> +
> + ext_clockdomains: clockdomains {
> + };
> +};
> +
> +...
> +
> +&ext_clocks {
> + gpio_test_clock {
> + compatible = "gpio-clock";
> + #clock-cells = <0>;
> + enable-gpios = <&gpio5 25 GPIO_ACTIVE_HIGH>;
> + };
> +};
> diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
> index 8f55945..77be18b 100644
> --- a/arch/arm/mach-omap2/io.c
> +++ b/arch/arm/mach-omap2/io.c
> @@ -21,6 +21,8 @@
> #include <linux/init.h>
> #include <linux/io.h>
> #include <linux/clk.h>
> +#include <linux/clk-provider.h>
> +#include <linux/clk/ti.h>
>
> #include <asm/tlb.h>
> #include <asm/mach/map.h>
> @@ -729,8 +731,14 @@ int __init omap_clk_init(void)
> return 0;
>
> ret = of_prcm_init();
> - if (!ret)
> - ret = omap_clk_soc_init();
> + if (ret)
> + return ret;
> +
> + ret = ti_dt_clk_ext_init();
> + if (ret)
> + return ret;
> +
> + ret = omap_clk_soc_init();
>
> return ret;
> }
> diff --git a/drivers/clk/ti/clk.c b/drivers/clk/ti/clk.c
> index b1a6f71..c84ce4d 100644
> --- a/drivers/clk/ti/clk.c
> +++ b/drivers/clk/ti/clk.c
> @@ -165,3 +165,26 @@ void ti_dt_clk_init_provider(struct device_node *parent, int index)
> kfree(retry);
> }
> }
> +
> +static struct of_device_id ti_ext_clk_match_table[] = {
> + { .compatible = "ti,external-clocks" },
> + { }
> +};
> +
> +/**
> + * ti_dt_clk_ext_init - initialize external clocks from DT
> + *
> + * Some clocks are provided from external chips outside the main SoC.
> + * The details for these are given under a special DT node, which will
> + * be parsed by this function.
> + */
> +int ti_dt_clk_ext_init(void)
> +{
> + struct device_node *np;
> +
> + for_each_matching_node(np, ti_ext_clk_match_table) {
> + ti_dt_clk_init_provider(np, -1);
> + }
> +
> + return 0;
> +}
> diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
> index e8d8a35..188270c 100644
> --- a/include/linux/clk/ti.h
> +++ b/include/linux/clk/ti.h
> @@ -310,6 +310,8 @@ int am43xx_dt_clk_init(void);
> int omap2420_dt_clk_init(void);
> int omap2430_dt_clk_init(void);
>
> +int ti_dt_clk_ext_init(void);
> +
> #ifdef CONFIG_OF
> void of_ti_clk_allow_autoidle_all(void);
> void of_ti_clk_deny_autoidle_all(void);
> --
> 1.7.9.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe devicetree" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2014-08-19 13:22 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-01 13:15 [PATCH 0/1] ARM: OMAP: add external clock provider support Tero Kristo
2014-08-01 13:15 ` [PATCH 1/1] clk: ti: add support for external clock provider Tero Kristo
2014-08-04 10:50 ` Jyri Sarha
2014-08-19 13:22 ` Mark Rutland [this message]
2014-08-20 7:39 ` Tero Kristo
2014-08-21 13:42 ` Tero Kristo
2014-08-04 11:37 ` [PATCH 0/1] ARM: OMAP: add external clock provider support Peter Ujfalusi
2014-08-04 12:36 ` Tero Kristo
2014-09-03 19:28 ` Mike Turquette
2014-09-04 6:48 ` Tero Kristo
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=20140819132232.GM3302@leverpostej \
--to=mark.rutland@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=jsarha@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=mturquette@linaro.org \
--cc=peter.ujfalusi@ti.com \
--cc=sassmann@kpanic.de \
--cc=t-kristo@ti.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox