From: Mike Turquette <mturquette@linaro.org>
To: Tero Kristo <t-kristo@ti.com>,
linux-omap@vger.kernel.org, paul@pwsan.com, tony@atomide.com,
nm@ti.com, rnayak@ti.com, bcousson@baylibre.com
Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org
Subject: Re: [PATCHv10 10/41] CLK: TI: add support for clockdomain binding
Date: Sat, 14 Dec 2013 20:23:03 -0800 [thread overview]
Message-ID: <20131215042303.23538.19248@quantum> (raw)
In-Reply-To: <1385453182-24421-11-git-send-email-t-kristo@ti.com>
Quoting Tero Kristo (2013-11-26 00:05:51)
> Some OMAP clocks require knowledge about their parent clockdomain for
> book keeping purposes. This patch creates a new DT binding for TI
> clockdomains, which act as a collection of device clocks.
>
> Signed-off-by: Tero Kristo <t-kristo@ti.com>
> ---
> .../devicetree/bindings/clock/ti/clockdomain.txt | 21 ++++++
> arch/arm/mach-omap2/clock.h | 1 -
> drivers/clk/ti/Makefile | 3 +-
> drivers/clk/ti/clockdomain.c | 70 ++++++++++++++++++++
> include/linux/clk/ti.h | 3 +
> 5 files changed, 96 insertions(+), 2 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/clock/ti/clockdomain.txt
> create mode 100644 drivers/clk/ti/clockdomain.c
>
> diff --git a/Documentation/devicetree/bindings/clock/ti/clockdomain.txt b/Documentation/devicetree/bindings/clock/ti/clockdomain.txt
> new file mode 100644
> index 0000000..45e6f7c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/ti/clockdomain.txt
> @@ -0,0 +1,21 @@
> +Binding for Texas Instruments clockdomain.
> +
> +Binding status: Unstable - ABI compatibility may be broken in the future
> +
> +This binding uses the common clock binding[1]. Every clock on
The patch looks fine to me but I think that the binding description
should capture the fact that you are re-using the common clock binding
but that this binding definition does not define any new clocks or clock
controllers in the way that a typical clock binding would.
This code uses the 'clocks' property the same way that any other
consumer binding definition would, such as an MMC controller or UART.
Those bindings do not say that they are based on the common clock
binding AFAIK.
Regards,
Mike
> +TI SoC belongs to one clockdomain, but software only needs this
> +information for specific clocks which require their parent
> +clockdomain to be controlled when the clock is enabled/disabled.
> +
> +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
> +
> +Required properties:
> +- compatible : shall be "ti,clockdomain"
> +- #clock-cells : from common clock binding; shall be set to 0.
> +- clocks : link phandles of clocks within this domain
> +
> +Examples:
> + dss_clkdm: dss_clkdm {
> + compatible = "ti,clockdomain";
> + clocks = <&dss1_alwon_fck_3430es2>, <&dss_ick_3430es2>;
> + };
> diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h
> index bc0f9fc..6bd72b5 100644
> --- a/arch/arm/mach-omap2/clock.h
> +++ b/arch/arm/mach-omap2/clock.h
> @@ -38,7 +38,6 @@ struct omap_clk {
> }
>
> struct clockdomain;
> -#define to_clk_hw_omap(_hw) container_of(_hw, struct clk_hw_omap, hw)
>
> #define DEFINE_STRUCT_CLK(_name, _parent_array_name, _clkops_name) \
> static struct clk _name = { \
> diff --git a/drivers/clk/ti/Makefile b/drivers/clk/ti/Makefile
> index 7cba389..67056fb 100644
> --- a/drivers/clk/ti/Makefile
> +++ b/drivers/clk/ti/Makefile
> @@ -1,4 +1,5 @@
> ifneq ($(CONFIG_OF),)
> obj-y += clk.o dpll.o autoidle.o divider.o \
> - fixed-factor.o gate.o composite.o
> + fixed-factor.o gate.o clockdomain.o \
> + composite.o
> endif
> diff --git a/drivers/clk/ti/clockdomain.c b/drivers/clk/ti/clockdomain.c
> new file mode 100644
> index 0000000..f1e0038
> --- /dev/null
> +++ b/drivers/clk/ti/clockdomain.c
> @@ -0,0 +1,70 @@
> +/*
> + * OMAP clockdomain support
> + *
> + * Copyright (C) 2013 Texas Instruments, Inc.
> + *
> + * Tero Kristo <t-kristo@ti.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + * This program is distributed "as is" WITHOUT ANY WARRANTY of any
> + * kind, whether express or implied; without even the implied warranty
> + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + */
> +
> +#include <linux/clk-provider.h>
> +#include <linux/slab.h>
> +#include <linux/of.h>
> +#include <linux/of_address.h>
> +#include <linux/clk/ti.h>
> +
> +#undef pr_fmt
> +#define pr_fmt(fmt) "%s: " fmt, __func__
> +
> +static void __init of_ti_clockdomain_setup(struct device_node *node)
> +{
> + struct clk *clk;
> + struct clk_hw *clk_hw;
> + const char *clkdm_name = node->name;
> + int i;
> + int num_clks;
> +
> + num_clks = of_count_phandle_with_args(node, "clocks", "#clock-cells");
> +
> + for (i = 0; i < num_clks; i++) {
> + clk = of_clk_get(node, i);
> + if (__clk_get_flags(clk) & CLK_IS_BASIC) {
> + pr_warn("can't setup clkdm for basic clk %s\n",
> + __clk_get_name(clk));
> + continue;
> + }
> + clk_hw = __clk_get_hw(clk);
> + to_clk_hw_omap(clk_hw)->clkdm_name = clkdm_name;
> + omap2_init_clk_clkdm(clk_hw);
> + }
> +}
> +
> +static struct of_device_id ti_clkdm_match_table[] __initdata = {
> + { .compatible = "ti,clockdomain" },
> + { }
> +};
> +
> +/**
> + * ti_dt_clockdomains_setup - setup device tree clockdomains
> + *
> + * Initializes clockdomain nodes for a SoC. This parses through all the
> + * nodes with compatible = "ti,clockdomain", and add the clockdomain
> + * info for all the clocks listed under these. This function shall be
> + * called after rest of the DT clock init has completed and all
> + * clock nodes have been registered.
> + */
> +void __init ti_dt_clockdomains_setup(void)
> +{
> + struct device_node *np;
> + for_each_matching_node(np, ti_clkdm_match_table) {
> + of_ti_clockdomain_setup(np);
> + }
> +}
> diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
> index 872ff2a..231b071 100644
> --- a/include/linux/clk/ti.h
> +++ b/include/linux/clk/ti.h
> @@ -204,6 +204,8 @@ struct clk_omap_reg {
> u16 index;
> };
>
> +#define to_clk_hw_omap(_hw) container_of(_hw, struct clk_hw_omap, hw)
> +
> void omap2_init_clk_hw_omap_clocks(struct clk *clk);
> int omap3_noncore_dpll_enable(struct clk_hw *hw);
> void omap3_noncore_dpll_disable(struct clk_hw *hw);
> @@ -232,6 +234,7 @@ int omap2_dflt_clk_is_enabled(struct clk_hw *hw);
> void __iomem *ti_clk_get_reg_addr(struct device_node *node, int index);
> void ti_dt_clocks_register(struct ti_dt_clk *oclks);
> void ti_dt_clk_init_provider(struct device_node *np, int index);
> +void ti_dt_clockdomains_setup(void);
> int of_ti_clk_autoidle_setup(struct device_node *node);
> int ti_clk_add_component(struct device_node *node, struct clk_hw *hw, int type);
>
> --
> 1.7.9.5
>
next prev parent reply other threads:[~2013-12-15 4:23 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-26 8:05 [PATCHv10 00/41] ARM: TI SoC clock DT conversion Tero Kristo
2013-11-26 8:05 ` [PATCHv10 01/41] clk: add support for platform specific clock I/O wrapper functions Tero Kristo
2013-12-15 0:48 ` Mike Turquette
2013-12-16 8:06 ` Tero Kristo
2013-12-17 12:34 ` Paul Walmsley
2013-12-18 3:33 ` Paul Walmsley
2013-11-26 8:05 ` [PATCHv10 02/41] CLK: TI: add DT alias clock registration mechanism Tero Kristo
2013-11-26 8:05 ` [PATCHv10 03/41] CLK: ti: add init support for clock IP blocks Tero Kristo
2013-12-17 8:14 ` Paul Walmsley
2013-12-17 8:21 ` Tero Kristo
2013-12-17 8:32 ` Paul Walmsley
2013-11-26 8:05 ` [PATCHv10 04/41] CLK: TI: Add DPLL clock support Tero Kristo
2013-12-17 8:37 ` Paul Walmsley
2013-12-17 8:40 ` Paul Walmsley
2013-11-26 8:05 ` [PATCHv10 05/41] CLK: TI: add autoidle support Tero Kristo
2013-11-26 8:05 ` [PATCHv10 06/41] clk: ti: add composite clock support Tero Kristo
2013-11-26 8:05 ` [PATCHv10 07/41] CLK: ti: add support for ti divider-clock Tero Kristo
2013-11-26 8:05 ` [PATCHv10 08/41] clk: ti: add support for TI fixed factor clock Tero Kristo
2013-11-26 8:05 ` [PATCHv10 09/41] CLK: TI: add support for gate clock Tero Kristo
2013-11-26 8:05 ` [PATCHv10 11/41] clk: ti: add support for basic mux clock Tero Kristo
2013-11-26 8:05 ` [PATCHv10 12/41] CLK: TI: add omap4 clock init file Tero Kristo
2013-12-17 9:30 ` Paul Walmsley
2013-11-26 8:05 ` [PATCHv10 14/41] CLK: TI: omap5: Initialize USB_DPLL at boot Tero Kristo
2013-11-26 8:05 ` [PATCHv10 15/41] CLK: TI: DRA7: Add APLL support Tero Kristo
2013-11-26 8:51 ` Alexander Aring
2013-11-29 19:00 ` Tero Kristo
2013-11-29 20:52 ` Alexander Aring
2013-11-26 8:05 ` [PATCHv10 16/41] CLK: TI: add dra7 clock init file Tero Kristo
2013-11-26 8:05 ` [PATCHv10 17/41] CLK: TI: add am33xx " Tero Kristo
2013-11-26 8:06 ` [PATCHv10 19/41] CLK: TI: add omap3 " Tero Kristo
2013-11-26 8:06 ` [PATCHv10 20/41] CLK: TI: add am43xx " Tero Kristo
2013-11-26 8:06 ` [PATCHv10 21/41] ARM: dts: omap4 clock data Tero Kristo
2013-12-17 9:44 ` Paul Walmsley
2013-12-17 9:57 ` Tero Kristo
2013-12-20 11:15 ` Paul Walmsley
2013-11-26 8:06 ` [PATCHv10 23/41] ARM: dts: dra7 " Tero Kristo
2013-12-17 9:46 ` Paul Walmsley
2013-11-26 8:06 ` [PATCHv10 24/41] ARM: dts: clk: Add apll related clocks Tero Kristo
2013-11-26 8:06 ` [PATCHv10 26/41] ARM: dts: DRA7: Add PCIe related clock nodes Tero Kristo
2013-11-26 8:06 ` [PATCHv10 27/41] ARM: dts: am33xx clock data Tero Kristo
2013-12-17 9:48 ` Paul Walmsley
2013-11-26 8:06 ` [PATCHv10 28/41] ARM: dts: omap3 " Tero Kristo
2013-12-17 9:50 ` Paul Walmsley
2013-11-26 8:06 ` [PATCHv10 29/41] ARM: dts: AM35xx: use DT " Tero Kristo
2013-11-26 8:06 ` [PATCHv10 30/41] ARM: dts: am43xx " Tero Kristo
2013-12-17 9:52 ` Paul Walmsley
2013-11-26 8:06 ` [PATCHv10 31/41] ARM: OMAP2+: clock: add support for regmap Tero Kristo
2013-11-26 17:40 ` Tony Lindgren
2013-11-27 9:08 ` Tero Kristo
2013-11-26 8:06 ` [PATCHv10 32/41] ARM: OMAP2+: clock: use driver API instead of direct memory read/write Tero Kristo
2013-11-26 8:06 ` [PATCHv10 33/41] ARM: OMAP: hwmod: fix an incorrect clk type cast with _get_clkdm Tero Kristo
2013-11-26 8:06 ` [PATCHv10 34/41] ARM: OMAP3: hwmod: initialize clkdm from clkdm_name Tero Kristo
2013-11-26 8:06 ` [PATCHv10 35/41] ARM: OMAP2+: PRM: add support for initializing PRCM clock modules from DT Tero Kristo
2013-11-26 8:06 ` [PATCHv10 37/41] ARM: OMAP4: remove old clock data and link in new clock init code Tero Kristo
2013-11-26 8:06 ` [PATCHv10 38/41] ARM: OMAP: DRA7: Enable clock init Tero Kristo
2013-11-26 8:06 ` [PATCHv10 39/41] ARM: AM43xx: " Tero Kristo
2013-11-26 8:06 ` [PATCHv10 40/41] ARM: AM33xx: remove old clock data and link in new clock init code Tero Kristo
2013-11-26 8:06 ` [PATCHv10 41/41] ARM: OMAP3: use DT clock init if DT data is available Tero Kristo
2013-11-26 17:44 ` Tony Lindgren
2013-11-27 9:06 ` Tero Kristo
2013-11-26 17:57 ` [PATCHv10 00/41] ARM: TI SoC clock DT conversion Tony Lindgren
[not found] ` <1385453182-24421-1-git-send-email-t-kristo-l0cyMroinI0@public.gmane.org>
2013-11-26 8:05 ` [PATCHv10 10/41] CLK: TI: add support for clockdomain binding Tero Kristo
2013-12-15 4:23 ` Mike Turquette [this message]
2013-12-16 8:13 ` Tero Kristo
2013-12-18 3:07 ` Mike Turquette
2013-11-26 8:05 ` [PATCHv10 13/41] CLK: TI: add omap5 clock init file Tero Kristo
2013-11-26 8:05 ` [PATCHv10 18/41] CLK: TI: add interface clock support for OMAP3 Tero Kristo
2013-11-26 8:06 ` [PATCHv10 22/41] ARM: dts: omap5 clock data Tero Kristo
2013-12-16 10:51 ` Paul Walmsley
2013-12-16 10:57 ` Tero Kristo
2013-12-17 9:46 ` Paul Walmsley
2013-11-26 8:06 ` [PATCHv10 25/41] ARM: dts: DRA7: Change apll_pcie_m2_ck to fixed factor clock Tero Kristo
2013-11-26 8:06 ` [PATCHv10 36/41] ARM: OMAP2+: io: use new clock init API Tero Kristo
2013-11-28 0:49 ` [PATCHv10 00/41] ARM: TI SoC clock DT conversion Nishanth Menon
[not found] ` <52969313.6090207-l0cyMroinI0@public.gmane.org>
2013-11-28 18:58 ` Paul Walmsley
2013-11-29 17:12 ` Tony Lindgren
2013-11-29 18:59 ` Tero Kristo
2013-12-15 0:51 ` Mike Turquette
2013-12-15 4:35 ` Mike Turquette
2013-12-16 8:12 ` Tero Kristo
2013-12-20 16:10 ` Felipe Balbi
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=20131215042303.23538.19248@quantum \
--to=mturquette@linaro.org \
--cc=bcousson@baylibre.com \
--cc=devicetree@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=nm@ti.com \
--cc=paul@pwsan.com \
--cc=rnayak@ti.com \
--cc=t-kristo@ti.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).