All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tero Kristo <t-kristo@ti.com>
To: linux-omap@vger.kernel.org, paul@pwsan.com, tony@atomide.com,
	nm@ti.com, rnayak@ti.com, bcousson@baylibre.com,
	mturquette@linaro.org
Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org
Subject: [PATCHv8 04/36] CLK: ti: add support for ti divider-clock
Date: Wed, 9 Oct 2013 18:30:35 +0300	[thread overview]
Message-ID: <1381332668-962-5-git-send-email-t-kristo@ti.com> (raw)
In-Reply-To: <1381332668-962-1-git-send-email-t-kristo@ti.com>

This patch adds support for TI divider clock binding, which simply uses
the basic clock divider to provide the features needed.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Tested-by: Nishanth Menon <nm@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
---
 .../devicetree/bindings/clock/ti/divider.txt       |   87 +++++++++++
 drivers/clk/ti/Makefile                            |    2 +-
 drivers/clk/ti/divider.c                           |  164 ++++++++++++++++++++
 include/linux/clk/ti.h                             |    2 +
 4 files changed, 254 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/clock/ti/divider.txt
 create mode 100644 drivers/clk/ti/divider.c

diff --git a/Documentation/devicetree/bindings/clock/ti/divider.txt b/Documentation/devicetree/bindings/clock/ti/divider.txt
new file mode 100644
index 0000000..a4e96a2
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/ti/divider.txt
@@ -0,0 +1,87 @@
+Binding for TI divider clock
+
+Binding status: Unstable - ABI compatibility may be broken in the future
+
+This binding uses the common clock binding[1].  It assumes a
+register-mapped adjustable clock rate divider that does not gate and has
+only one input clock or parent.  By default the value programmed into
+the register is one less than the actual divisor value.  E.g:
+
+register value		actual divisor value
+0			1
+1			2
+2			3
+
+This assumption may be modified by the following optional properties:
+
+ti,index-starts-at-one - valid divisor values start at 1, not the default
+of 0.  E.g:
+register value		actual divisor value
+1			1
+2			2
+3			3
+
+ti,index-power-of-two - valid divisor values are powers of two.  E.g:
+register value		actual divisor value
+0			1
+1			2
+2			4
+
+Additionally an array of valid dividers may be supplied like so:
+
+	dividers = <4>, <8>, <0>, <16>;
+
+Which will map the resulting values to a divisor table by their index:
+register value		actual divisor value
+0			4
+1			8
+2			<invalid divisor, skipped>
+3			16
+
+Any zero value in this array means the corresponding bit-value is invalid
+and must not be used.
+
+The binding must also provide the register to control the divider and
+unless the divider array is provided, min and max dividers. Optionally
+the number of bits to shift that mask, if necessary. If the shift value
+is missing it is the same as supplying a zero shift.
+
+Required properties:
+- compatible : shall be "divider-clock".
+- #clock-cells : from common clock binding; shall be set to 0.
+- clocks : link to phandle of parent clock
+- reg : base address for register controlling adjustable divider
+- ti,bit-mask : arbitrary bitmask for programming the adjustable divider
+
+Optional properties:
+- clock-output-names : from common clock binding.
+- ti,dividers : array of integers defining divisors
+- ti,bit-shift : number of bits to shift the divider value, defaults to 0
+- ti,min-div : min divisor for dividing the input clock rate, only
+  needed if the first divisor is offset from the default value (1)
+- ti,max-div : max divisor for dividing the input clock rate, only needed
+  if ti,dividers is not defined.
+- ti,index-starts-at-one : valid divisor programming starts at 1, not zero
+- ti,index-power-of-two : valid divisor programming must be a power of two
+- ti,autoidle-shift : bit shift of the autoidle enable bit for the clock
+- ti,autoidle-low : autoidle is enabled by setting the bit to 0
+- ti,set-rate-parent : clk_set_rate is propagated to parent
+
+Examples:
+dpll_usb_m2_ck: dpll_usb_m2_ck@4a008190 {
+	#clock-cells = <0>;
+	compatible = "ti,divider-clock";
+	clocks = <&dpll_usb_ck>;
+	ti,max-div = <127>;
+	reg = <0x4a008190 0x4>;
+	ti,index-starts-at-one;
+};
+
+aess_fclk: aess_fclk@4a004528 {
+	#clock-cells = <0>;
+	compatible = "ti,divider-clock";
+	clocks = <&abe_clk>;
+	ti,bit-shift = <24>;
+	reg = <0x4a004528 0x4>;
+	ti,max-div = <2>;
+};
diff --git a/drivers/clk/ti/Makefile b/drivers/clk/ti/Makefile
index 533efb4..72a410b 100644
--- a/drivers/clk/ti/Makefile
+++ b/drivers/clk/ti/Makefile
@@ -1,3 +1,3 @@
 ifneq ($(CONFIG_OF),)
-obj-y					+= clk.o dpll.o autoidle.o
+obj-y					+= clk.o dpll.o autoidle.o divider.o
 endif
diff --git a/drivers/clk/ti/divider.c b/drivers/clk/ti/divider.c
new file mode 100644
index 0000000..a97a5d6
--- /dev/null
+++ b/drivers/clk/ti/divider.c
@@ -0,0 +1,164 @@
+/*
+ * TI Divider Clock
+ *
+ * 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/err.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/clk/ti.h>
+
+struct clk_div_table __init *ti_clk_get_div_table(struct device_node *node)
+{
+	struct clk_div_table *table;
+	const __be32 *divspec;
+	u32 val;
+	u32 num_div;
+	u32 valid_div;
+	int i;
+
+	divspec = of_get_property(node, "ti,dividers", &num_div);
+
+	if (!divspec)
+		return NULL;
+
+	valid_div = 0;
+
+	/* Determine required size for divider table */
+	for (i = 0; i < num_div; i++) {
+		of_property_read_u32_index(node, "ti,dividers", i, &val);
+		if (val)
+			valid_div++;
+	}
+
+	if (!valid_div) {
+		pr_err("%s: no valid dividers for %s table\n", __func__,
+		       node->name);
+		return ERR_PTR(-EINVAL);
+	}
+
+	table = kzalloc(sizeof(*table) * (valid_div + 1), GFP_KERNEL);
+
+	if (!table) {
+		pr_err("%s: unable to allocate memory for %s table\n", __func__,
+		       node->name);
+		return ERR_PTR(-ENOMEM);
+	}
+
+	valid_div = 0;
+
+	for (i = 0; i < num_div; i++) {
+		of_property_read_u32_index(node, "dividers", i, &val);
+		if (val) {
+			table[valid_div].div = val;
+			table[valid_div].val = i;
+			valid_div++;
+		}
+	}
+
+	return table;
+}
+
+/**
+ * of_ti_divider_clk_setup() - Setup function for simple div rate clock
+ */
+static void __init of_ti_divider_clk_setup(struct device_node *node)
+{
+	struct clk *clk;
+	const char *clk_name = node->name;
+	void __iomem *reg;
+	const char *parent_name;
+	u8 clk_divider_flags = 0;
+	u32 width = 0;
+	u32 shift = 0;
+	struct clk_div_table *table;
+	int min_div, max_div, div;
+	u32 val = 0;
+	u32 flags = 0;
+
+	parent_name = of_clk_get_parent_name(node, 0);
+
+	reg = of_iomap(node, 0);
+	if (!reg) {
+		pr_err("%s: no memory mapped for property reg\n", __func__);
+		return;
+	}
+
+	of_property_read_u32(node, "ti,bit-shift", &shift);
+
+	if (of_property_read_bool(node, "ti,index-starts-at-one"))
+		clk_divider_flags |= CLK_DIVIDER_ONE_BASED;
+
+	if (of_property_read_bool(node, "ti,index-power-of-two"))
+		clk_divider_flags |= CLK_DIVIDER_POWER_OF_TWO;
+
+	if (of_property_read_bool(node, "ti,set-rate-parent"))
+		flags |= CLK_SET_RATE_PARENT;
+
+	table = ti_clk_get_div_table(node);
+
+	if (IS_ERR(table))
+		return;
+
+	if (!table) {
+		/* Clk divider table not provided, determine min/max divs */
+		if (of_property_read_u32(node, "ti,min-div", &min_div)) {
+			pr_debug("%s: ti,min-div not declared for %s, defaulting to 1\n", __func__,
+				 node->name);
+			min_div = 1;
+		}
+
+		if (of_property_read_u32(node, "ti,max-div", &max_div)) {
+			pr_err("%s: ti,max-div not declared for %s\n", __func__,
+			       node->name);
+			return;
+		}
+
+		/* Determine bit width for the field */
+		if (clk_divider_flags & CLK_DIVIDER_ONE_BASED)
+			val = 1;
+
+		div = min_div;
+
+		while (div < max_div) {
+			if (clk_divider_flags & CLK_DIVIDER_POWER_OF_TWO)
+				div <<= 1;
+			else
+				div++;
+			val++;
+		}
+	} else {
+		div = 0;
+
+		while (table[div].val) {
+			val = table[div].val;
+			div++;
+		}
+	}
+
+	width = fls(val);
+
+	clk = clk_register_divider_table(NULL, clk_name, parent_name, flags,
+					 reg, shift, width, clk_divider_flags,
+					 table, NULL);
+
+	if (!IS_ERR(clk)) {
+		of_clk_add_provider(node, of_clk_src_simple_get, clk);
+		of_ti_autoidle_setup(node);
+	}
+}
+CLK_OF_DECLARE(divider_clk, "ti,divider-clock", of_ti_divider_clk_setup);
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
index 6d552c1..7f58f11 100644
--- a/include/linux/clk/ti.h
+++ b/include/linux/clk/ti.h
@@ -182,6 +182,8 @@ int omap3_dpll4_set_rate(struct clk_hw *clk, unsigned long rate,
 void ti_dt_clocks_register(struct ti_dt_clk *oclks);
 void of_ti_autoidle_setup(struct device_node *node);
 
+struct clk_div_table *ti_clk_get_div_table(struct device_node *node);
+
 #ifdef CONFIG_OF
 void of_ti_clk_allow_autoidle_all(void);
 void of_ti_clk_deny_autoidle_all(void);
-- 
1.7.9.5


WARNING: multiple messages have this Message-ID (diff)
From: t-kristo@ti.com (Tero Kristo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv8 04/36] CLK: ti: add support for ti divider-clock
Date: Wed, 9 Oct 2013 18:30:35 +0300	[thread overview]
Message-ID: <1381332668-962-5-git-send-email-t-kristo@ti.com> (raw)
In-Reply-To: <1381332668-962-1-git-send-email-t-kristo@ti.com>

This patch adds support for TI divider clock binding, which simply uses
the basic clock divider to provide the features needed.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Tested-by: Nishanth Menon <nm@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
---
 .../devicetree/bindings/clock/ti/divider.txt       |   87 +++++++++++
 drivers/clk/ti/Makefile                            |    2 +-
 drivers/clk/ti/divider.c                           |  164 ++++++++++++++++++++
 include/linux/clk/ti.h                             |    2 +
 4 files changed, 254 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/clock/ti/divider.txt
 create mode 100644 drivers/clk/ti/divider.c

diff --git a/Documentation/devicetree/bindings/clock/ti/divider.txt b/Documentation/devicetree/bindings/clock/ti/divider.txt
new file mode 100644
index 0000000..a4e96a2
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/ti/divider.txt
@@ -0,0 +1,87 @@
+Binding for TI divider clock
+
+Binding status: Unstable - ABI compatibility may be broken in the future
+
+This binding uses the common clock binding[1].  It assumes a
+register-mapped adjustable clock rate divider that does not gate and has
+only one input clock or parent.  By default the value programmed into
+the register is one less than the actual divisor value.  E.g:
+
+register value		actual divisor value
+0			1
+1			2
+2			3
+
+This assumption may be modified by the following optional properties:
+
+ti,index-starts-at-one - valid divisor values start at 1, not the default
+of 0.  E.g:
+register value		actual divisor value
+1			1
+2			2
+3			3
+
+ti,index-power-of-two - valid divisor values are powers of two.  E.g:
+register value		actual divisor value
+0			1
+1			2
+2			4
+
+Additionally an array of valid dividers may be supplied like so:
+
+	dividers = <4>, <8>, <0>, <16>;
+
+Which will map the resulting values to a divisor table by their index:
+register value		actual divisor value
+0			4
+1			8
+2			<invalid divisor, skipped>
+3			16
+
+Any zero value in this array means the corresponding bit-value is invalid
+and must not be used.
+
+The binding must also provide the register to control the divider and
+unless the divider array is provided, min and max dividers. Optionally
+the number of bits to shift that mask, if necessary. If the shift value
+is missing it is the same as supplying a zero shift.
+
+Required properties:
+- compatible : shall be "divider-clock".
+- #clock-cells : from common clock binding; shall be set to 0.
+- clocks : link to phandle of parent clock
+- reg : base address for register controlling adjustable divider
+- ti,bit-mask : arbitrary bitmask for programming the adjustable divider
+
+Optional properties:
+- clock-output-names : from common clock binding.
+- ti,dividers : array of integers defining divisors
+- ti,bit-shift : number of bits to shift the divider value, defaults to 0
+- ti,min-div : min divisor for dividing the input clock rate, only
+  needed if the first divisor is offset from the default value (1)
+- ti,max-div : max divisor for dividing the input clock rate, only needed
+  if ti,dividers is not defined.
+- ti,index-starts-at-one : valid divisor programming starts at 1, not zero
+- ti,index-power-of-two : valid divisor programming must be a power of two
+- ti,autoidle-shift : bit shift of the autoidle enable bit for the clock
+- ti,autoidle-low : autoidle is enabled by setting the bit to 0
+- ti,set-rate-parent : clk_set_rate is propagated to parent
+
+Examples:
+dpll_usb_m2_ck: dpll_usb_m2_ck at 4a008190 {
+	#clock-cells = <0>;
+	compatible = "ti,divider-clock";
+	clocks = <&dpll_usb_ck>;
+	ti,max-div = <127>;
+	reg = <0x4a008190 0x4>;
+	ti,index-starts-at-one;
+};
+
+aess_fclk: aess_fclk at 4a004528 {
+	#clock-cells = <0>;
+	compatible = "ti,divider-clock";
+	clocks = <&abe_clk>;
+	ti,bit-shift = <24>;
+	reg = <0x4a004528 0x4>;
+	ti,max-div = <2>;
+};
diff --git a/drivers/clk/ti/Makefile b/drivers/clk/ti/Makefile
index 533efb4..72a410b 100644
--- a/drivers/clk/ti/Makefile
+++ b/drivers/clk/ti/Makefile
@@ -1,3 +1,3 @@
 ifneq ($(CONFIG_OF),)
-obj-y					+= clk.o dpll.o autoidle.o
+obj-y					+= clk.o dpll.o autoidle.o divider.o
 endif
diff --git a/drivers/clk/ti/divider.c b/drivers/clk/ti/divider.c
new file mode 100644
index 0000000..a97a5d6
--- /dev/null
+++ b/drivers/clk/ti/divider.c
@@ -0,0 +1,164 @@
+/*
+ * TI Divider Clock
+ *
+ * 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/err.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/clk/ti.h>
+
+struct clk_div_table __init *ti_clk_get_div_table(struct device_node *node)
+{
+	struct clk_div_table *table;
+	const __be32 *divspec;
+	u32 val;
+	u32 num_div;
+	u32 valid_div;
+	int i;
+
+	divspec = of_get_property(node, "ti,dividers", &num_div);
+
+	if (!divspec)
+		return NULL;
+
+	valid_div = 0;
+
+	/* Determine required size for divider table */
+	for (i = 0; i < num_div; i++) {
+		of_property_read_u32_index(node, "ti,dividers", i, &val);
+		if (val)
+			valid_div++;
+	}
+
+	if (!valid_div) {
+		pr_err("%s: no valid dividers for %s table\n", __func__,
+		       node->name);
+		return ERR_PTR(-EINVAL);
+	}
+
+	table = kzalloc(sizeof(*table) * (valid_div + 1), GFP_KERNEL);
+
+	if (!table) {
+		pr_err("%s: unable to allocate memory for %s table\n", __func__,
+		       node->name);
+		return ERR_PTR(-ENOMEM);
+	}
+
+	valid_div = 0;
+
+	for (i = 0; i < num_div; i++) {
+		of_property_read_u32_index(node, "dividers", i, &val);
+		if (val) {
+			table[valid_div].div = val;
+			table[valid_div].val = i;
+			valid_div++;
+		}
+	}
+
+	return table;
+}
+
+/**
+ * of_ti_divider_clk_setup() - Setup function for simple div rate clock
+ */
+static void __init of_ti_divider_clk_setup(struct device_node *node)
+{
+	struct clk *clk;
+	const char *clk_name = node->name;
+	void __iomem *reg;
+	const char *parent_name;
+	u8 clk_divider_flags = 0;
+	u32 width = 0;
+	u32 shift = 0;
+	struct clk_div_table *table;
+	int min_div, max_div, div;
+	u32 val = 0;
+	u32 flags = 0;
+
+	parent_name = of_clk_get_parent_name(node, 0);
+
+	reg = of_iomap(node, 0);
+	if (!reg) {
+		pr_err("%s: no memory mapped for property reg\n", __func__);
+		return;
+	}
+
+	of_property_read_u32(node, "ti,bit-shift", &shift);
+
+	if (of_property_read_bool(node, "ti,index-starts-at-one"))
+		clk_divider_flags |= CLK_DIVIDER_ONE_BASED;
+
+	if (of_property_read_bool(node, "ti,index-power-of-two"))
+		clk_divider_flags |= CLK_DIVIDER_POWER_OF_TWO;
+
+	if (of_property_read_bool(node, "ti,set-rate-parent"))
+		flags |= CLK_SET_RATE_PARENT;
+
+	table = ti_clk_get_div_table(node);
+
+	if (IS_ERR(table))
+		return;
+
+	if (!table) {
+		/* Clk divider table not provided, determine min/max divs */
+		if (of_property_read_u32(node, "ti,min-div", &min_div)) {
+			pr_debug("%s: ti,min-div not declared for %s, defaulting to 1\n", __func__,
+				 node->name);
+			min_div = 1;
+		}
+
+		if (of_property_read_u32(node, "ti,max-div", &max_div)) {
+			pr_err("%s: ti,max-div not declared for %s\n", __func__,
+			       node->name);
+			return;
+		}
+
+		/* Determine bit width for the field */
+		if (clk_divider_flags & CLK_DIVIDER_ONE_BASED)
+			val = 1;
+
+		div = min_div;
+
+		while (div < max_div) {
+			if (clk_divider_flags & CLK_DIVIDER_POWER_OF_TWO)
+				div <<= 1;
+			else
+				div++;
+			val++;
+		}
+	} else {
+		div = 0;
+
+		while (table[div].val) {
+			val = table[div].val;
+			div++;
+		}
+	}
+
+	width = fls(val);
+
+	clk = clk_register_divider_table(NULL, clk_name, parent_name, flags,
+					 reg, shift, width, clk_divider_flags,
+					 table, NULL);
+
+	if (!IS_ERR(clk)) {
+		of_clk_add_provider(node, of_clk_src_simple_get, clk);
+		of_ti_autoidle_setup(node);
+	}
+}
+CLK_OF_DECLARE(divider_clk, "ti,divider-clock", of_ti_divider_clk_setup);
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
index 6d552c1..7f58f11 100644
--- a/include/linux/clk/ti.h
+++ b/include/linux/clk/ti.h
@@ -182,6 +182,8 @@ int omap3_dpll4_set_rate(struct clk_hw *clk, unsigned long rate,
 void ti_dt_clocks_register(struct ti_dt_clk *oclks);
 void of_ti_autoidle_setup(struct device_node *node);
 
+struct clk_div_table *ti_clk_get_div_table(struct device_node *node);
+
 #ifdef CONFIG_OF
 void of_ti_clk_allow_autoidle_all(void);
 void of_ti_clk_deny_autoidle_all(void);
-- 
1.7.9.5

  parent reply	other threads:[~2013-10-09 15:30 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-09 15:30 [PATCHv8 00/36] ARM: OMAP: DT clock conversion Tero Kristo
2013-10-09 15:30 ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 01/36] CLK: TI: Add DPLL clock support Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-13 23:47   ` Paul Walmsley
2013-10-13 23:47     ` Paul Walmsley
2013-10-09 15:30 ` [PATCHv8 02/36] CLK: TI: add DT alias clock registration mechanism Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 03/36] CLK: TI: add autoidle support Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` Tero Kristo [this message]
2013-10-09 15:30   ` [PATCHv8 04/36] CLK: ti: add support for ti divider-clock Tero Kristo
2013-10-09 15:30 ` [PATCHv8 05/36] clk: ti: add support for TI fixed factor clock Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 06/36] CLK: TI: add support for OMAP gate clock Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 07/36] CLK: TI: add support for clockdomain binding Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 08/36] ARM: dts: omap4 clock data Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 09/36] clk: ti: add mux-gate clock support Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 10/36] clk: ti: add support for basic mux clock Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 11/36] CLK: TI: add omap4 clock init file Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 12/36] ARM: OMAP4: remove old clock data and link in new clock init code Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 13/36] ARM: dts: omap5 clock data Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 14/36] CLK: TI: add omap5 clock init file Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 15/36] CLK: TI: omap5: Initialize USB_DPLL at boot Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 16/36] ARM: dts: dra7 clock data Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 17/36] ARM: dts: clk: Add apll related clocks Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 18/36] ARM: dts: DRA7: Change apll_pcie_m2_ck to fixed factor clock Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 19/36] ARM: dts: DRA7: Add PCIe related clock nodes Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 20/36] CLK: TI: DRA7: Add APLL support Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 21/36] CLK: TI: add dra7 clock init file Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 22/36] ARM: OMAP: DRA7: Enable clock init Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 23/36] ARM: dts: DRA7: link in clock DT data Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 24/36] ARM: dts: am33xx clock data Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 25/36] CLK: TI: add am33xx clock init file Tero Kristo
2013-10-09 15:30   ` Tero Kristo
2013-10-09 15:30 ` [PATCHv8 26/36] ARM: AM33xx: remove old clock data and link in new clock init code Tero Kristo
2013-10-09 15:30   ` Tero Kristo
     [not found] ` <1381332668-962-1-git-send-email-t-kristo-l0cyMroinI0@public.gmane.org>
2013-10-09 15:30   ` [PATCHv8 27/36] CLK: TI: add interface clock support for OMAP3 Tero Kristo
2013-10-09 15:30     ` Tero Kristo
2013-10-09 15:30   ` [PATCHv8 28/36] ARM: OMAP: hwmod: fix an incorrect clk type cast with _get_clkdm Tero Kristo
2013-10-09 15:30     ` Tero Kristo
2013-10-09 15:31 ` [PATCHv8 29/36] ARM: OMAP3: hwmod: initialize clkdm from clkdm_name Tero Kristo
2013-10-09 15:31   ` Tero Kristo
2013-10-09 15:31 ` [PATCHv8 30/36] ARM: dts: omap3 clock data Tero Kristo
2013-10-09 15:31   ` Tero Kristo
2013-10-09 15:31 ` [PATCHv8 31/36] CLK: TI: add omap3 clock init file Tero Kristo
2013-10-09 15:31   ` Tero Kristo
2013-10-09 15:31 ` [PATCHv8 32/36] ARM: dts: AM35xx: use DT clock data Tero Kristo
2013-10-09 15:31   ` Tero Kristo
2013-10-09 15:31 ` [PATCHv8 33/36] ARM: OMAP3: use DT clock init if DT data is available Tero Kristo
2013-10-09 15:31   ` Tero Kristo
2013-10-09 15:31 ` [PATCHv8 34/36] ARM: dts: am43xx clock data Tero Kristo
2013-10-09 15:31   ` Tero Kristo
2013-10-09 15:31 ` [PATCHv8 35/36] ARM: dts: AM43xx: link in clock DT data Tero Kristo
2013-10-09 15:31   ` Tero Kristo
2013-10-09 15:31 ` [PATCHv8 36/36] CLK: TI: add am43xx clock init file Tero Kristo
2013-10-09 15:31   ` Tero Kristo
2013-10-09 15:48 ` [PATCHv8 00/36] ARM: OMAP: DT clock conversion Tony Lindgren
2013-10-09 15:48   ` Tony Lindgren

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=1381332668-962-5-git-send-email-t-kristo@ti.com \
    --to=t-kristo@ti.com \
    --cc=bcousson@baylibre.com \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=mturquette@linaro.org \
    --cc=nm@ti.com \
    --cc=paul@pwsan.com \
    --cc=rnayak@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 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.