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: [PATCHv11 17/49] CLK: TI: add support for gate clock
Date: Thu, 19 Dec 2013 13:23:48 +0200 [thread overview]
Message-ID: <1387452260-23276-18-git-send-email-t-kristo@ti.com> (raw)
In-Reply-To: <1387452260-23276-1-git-send-email-t-kristo@ti.com>
This patch adds support for TI specific gate clocks. These behave as basic
gate-clock, but have different ops / hw-ops for controlling the actual
gate, for example waiting until the clock is ready. Several sub-types
are supported:
- ti,gate-clock: basic gate clock with default ops/hwops
- ti,clkdm-gate-clock: clockdomain level gate control
- ti,dss-gate-clock: gate clock with DSS specific hardware handling
- ti,am35xx-gate-clock: gate clock with AM35xx specific hardware handling
- ti,hsdiv-gate-clock: gate clock with OMAP36xx hardware errata handling
Signed-off-by: Tero Kristo <t-kristo@ti.com>
---
.../devicetree/bindings/clock/ti/gate.txt | 85 +++++++
drivers/clk/ti/Makefile | 2 +-
drivers/clk/ti/gate.c | 245 ++++++++++++++++++++
include/linux/clk/ti.h | 6 +
4 files changed, 337 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/clock/ti/gate.txt
create mode 100644 drivers/clk/ti/gate.c
diff --git a/Documentation/devicetree/bindings/clock/ti/gate.txt b/Documentation/devicetree/bindings/clock/ti/gate.txt
new file mode 100644
index 0000000..125281a
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/ti/gate.txt
@@ -0,0 +1,85 @@
+Binding for Texas Instruments gate clock.
+
+Binding status: Unstable - ABI compatibility may be broken in the future
+
+This binding uses the common clock binding[1]. This clock is
+quite much similar to the basic gate-clock [2], however,
+it supports a number of additional features. If no register
+is provided for this clock, the code assumes that a clockdomain
+will be controlled instead and the corresponding hw-ops for
+that is used.
+
+[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
+[2] Documentation/devicetree/bindings/clock/gate-clock.txt
+[3] Documentation/devicetree/bindings/clock/ti/clockdomain.txt
+
+Required properties:
+- compatible : shall be one of:
+ "ti,gate-clock" - basic gate clock
+ "ti,wait-gate-clock" - gate clock which waits until clock is active before
+ returning from clk_enable()
+ "ti,dss-gate-clock" - gate clock with DSS specific hardware handling
+ "ti,am35xx-gate-clock" - gate clock with AM35xx specific hardware handling
+ "ti,clkdm-gate-clock" - clockdomain gate clock, which derives its functional
+ clock directly from a clockdomain, see [3] how
+ to map clockdomains properly
+ "ti,hsdiv-gate-clock" - gate clock with OMAP36xx specific hardware handling,
+ required for a hardware errata
+- #clock-cells : from common clock binding; shall be set to 0
+- clocks : link to phandle of parent clock
+- reg : offset for register controlling adjustable gate, not needed for
+ ti,clkdm-gate-clock type
+
+Optional properties:
+- ti,bit-shift : bit shift for programming the clock gate, invalid for
+ ti,clkdm-gate-clock type
+- ti,set-bit-to-disable : inverts default gate programming. Setting the bit
+ gates the clock and clearing the bit ungates the clock.
+
+Examples:
+ mmchs2_fck: mmchs2_fck@48004a00 {
+ #clock-cells = <0>;
+ compatible = "ti,gate-clock";
+ clocks = <&core_96m_fck>;
+ reg = <0x48004a00 0x4>;
+ ti,bit-shift = <25>;
+ };
+
+ uart4_fck_am35xx: uart4_fck_am35xx {
+ #clock-cells = <0>;
+ compatible = "ti,wait-gate-clock";
+ clocks = <&core_48m_fck>;
+ reg = <0x0a00>;
+ ti,bit-shift = <23>;
+ };
+
+ dss1_alwon_fck_3430es2: dss1_alwon_fck_3430es2@48004e00 {
+ #clock-cells = <0>;
+ compatible = "ti,dss-gate-clock";
+ clocks = <&dpll4_m4x2_ck>;
+ reg = <0x48004e00 0x4>;
+ ti,bit-shift = <0>;
+ };
+
+ emac_ick: emac_ick@4800259c {
+ #clock-cells = <0>;
+ compatible = "ti,am35xx-gate-clock";
+ clocks = <&ipss_ick>;
+ reg = <0x4800259c 0x4>;
+ ti,bit-shift = <1>;
+ };
+
+ emu_src_ck: emu_src_ck {
+ #clock-cells = <0>;
+ compatible = "ti,clkdm-gate-clock";
+ clocks = <&emu_src_mux_ck>;
+ };
+
+ dpll4_m2x2_ck: dpll4_m2x2_ck@48004d00 {
+ #clock-cells = <0>;
+ compatible = "ti,hsdiv-gate-clock";
+ clocks = <&dpll4_m2x2_mul_ck>;
+ ti,bit-shift = <0x1b>;
+ reg = <0x48004d00 0x4>;
+ ti,set-bit-to-disable;
+ };
diff --git a/drivers/clk/ti/Makefile b/drivers/clk/ti/Makefile
index f57fc4b..7cba389 100644
--- a/drivers/clk/ti/Makefile
+++ b/drivers/clk/ti/Makefile
@@ -1,4 +1,4 @@
ifneq ($(CONFIG_OF),)
obj-y += clk.o dpll.o autoidle.o divider.o \
- fixed-factor.o composite.o
+ fixed-factor.o gate.o composite.o
endif
diff --git a/drivers/clk/ti/gate.c b/drivers/clk/ti/gate.c
new file mode 100644
index 0000000..3f74911
--- /dev/null
+++ b/drivers/clk/ti/gate.c
@@ -0,0 +1,245 @@
+/*
+ * OMAP gate clock 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/io.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/clk/ti.h>
+
+#define to_clk_divider(_hw) container_of(_hw, struct clk_divider, hw)
+
+#undef pr_fmt
+#define pr_fmt(fmt) "%s: " fmt, __func__
+
+static int omap36xx_gate_clk_enable_with_hsdiv_restore(struct clk_hw *clk);
+
+static const struct clk_ops omap_gate_clkdm_clk_ops = {
+ .init = &omap2_init_clk_clkdm,
+ .enable = &omap2_clkops_enable_clkdm,
+ .disable = &omap2_clkops_disable_clkdm,
+};
+
+static const struct clk_ops omap_gate_clk_ops = {
+ .init = &omap2_init_clk_clkdm,
+ .enable = &omap2_dflt_clk_enable,
+ .disable = &omap2_dflt_clk_disable,
+ .is_enabled = &omap2_dflt_clk_is_enabled,
+};
+
+static const struct clk_ops omap_gate_clk_hsdiv_restore_ops = {
+ .init = &omap2_init_clk_clkdm,
+ .enable = &omap36xx_gate_clk_enable_with_hsdiv_restore,
+ .disable = &omap2_dflt_clk_disable,
+ .is_enabled = &omap2_dflt_clk_is_enabled,
+};
+
+/**
+ * omap36xx_gate_clk_enable_with_hsdiv_restore - enable clocks suffering
+ * from HSDivider PWRDN problem Implements Errata ID: i556.
+ * @clk: DPLL output struct clk
+ *
+ * 3630 only: dpll3_m3_ck, dpll4_m2_ck, dpll4_m3_ck, dpll4_m4_ck,
+ * dpll4_m5_ck & dpll4_m6_ck dividers gets loaded with reset
+ * valueafter their respective PWRDN bits are set. Any dummy write
+ * (Any other value different from the Read value) to the
+ * corresponding CM_CLKSEL register will refresh the dividers.
+ */
+static int omap36xx_gate_clk_enable_with_hsdiv_restore(struct clk_hw *clk)
+{
+ struct clk_divider *parent;
+ struct clk_hw *parent_hw;
+ u32 dummy_v, orig_v;
+ int ret;
+
+ /* Clear PWRDN bit of HSDIVIDER */
+ ret = omap2_dflt_clk_enable(clk);
+
+ /* Parent is the x2 node, get parent of parent for the m2 div */
+ parent_hw = __clk_get_hw(__clk_get_parent(__clk_get_parent(clk->clk)));
+ parent = to_clk_divider(parent_hw);
+
+ /* Restore the dividers */
+ if (!ret) {
+ orig_v = ti_clk_ll_ops->clk_readl(parent->reg);
+ dummy_v = orig_v;
+
+ /* Write any other value different from the Read value */
+ dummy_v ^= (1 << parent->shift);
+ ti_clk_ll_ops->clk_writel(dummy_v, parent->reg);
+
+ /* Write the original divider */
+ ti_clk_ll_ops->clk_writel(orig_v, parent->reg);
+ }
+
+ return ret;
+}
+
+static void __init _of_ti_gate_clk_setup(struct device_node *node,
+ const struct clk_ops *ops,
+ const struct clk_hw_omap_ops *hw_ops)
+{
+ struct clk *clk;
+ struct clk_init_data init = { NULL };
+ struct clk_hw_omap *clk_hw;
+ const char *clk_name = node->name;
+ const char *parent_name;
+ u32 val;
+
+ clk_hw = kzalloc(sizeof(*clk_hw), GFP_KERNEL);
+ if (!clk_hw)
+ return;
+
+ clk_hw->hw.init = &init;
+
+ init.name = clk_name;
+ init.ops = ops;
+
+ if (ops != &omap_gate_clkdm_clk_ops) {
+ clk_hw->enable_reg = ti_clk_get_reg_addr(node, 0);
+ if (!clk_hw->enable_reg)
+ return;
+
+ if (!of_property_read_u32(node, "ti,bit-shift", &val))
+ clk_hw->enable_bit = val;
+ }
+
+ clk_hw->ops = hw_ops;
+
+ clk_hw->flags = MEMMAP_ADDRESSING;
+
+ if (of_clk_get_parent_count(node) != 1) {
+ pr_err("%s must have 1 parent\n", clk_name);
+ return;
+ }
+
+ parent_name = of_clk_get_parent_name(node, 0);
+ init.parent_names = &parent_name;
+ init.num_parents = 1;
+
+ if (of_property_read_bool(node, "ti,set-rate-parent"))
+ init.flags |= CLK_SET_RATE_PARENT;
+
+ if (of_property_read_bool(node, "ti,set-bit-to-disable"))
+ clk_hw->flags |= INVERT_ENABLE;
+
+ clk = clk_register(NULL, &clk_hw->hw);
+
+ if (!IS_ERR(clk)) {
+ of_clk_add_provider(node, of_clk_src_simple_get, clk);
+ return;
+ }
+
+ kfree(clk_hw);
+}
+
+static void __init
+_of_ti_composite_gate_clk_setup(struct device_node *node,
+ const struct clk_hw_omap_ops *hw_ops)
+{
+ struct clk_hw_omap *gate;
+ u32 val = 0;
+
+ gate = kzalloc(sizeof(*gate), GFP_KERNEL);
+ if (!gate)
+ return;
+
+ gate->enable_reg = ti_clk_get_reg_addr(node, 0);
+ if (!gate->enable_reg)
+ return;
+
+ of_property_read_u32(node, "ti,bit-shift", &val);
+
+ gate->enable_bit = val;
+ gate->ops = hw_ops;
+ gate->flags = MEMMAP_ADDRESSING;
+
+ if (!ti_clk_add_component(node, &gate->hw, CLK_COMPONENT_TYPE_GATE))
+ return;
+
+ kfree(gate);
+}
+
+static void __init
+of_ti_composite_no_wait_gate_clk_setup(struct device_node *node)
+{
+ _of_ti_composite_gate_clk_setup(node, NULL);
+}
+CLK_OF_DECLARE(ti_composite_no_wait_gate_clk, "ti,composite-no-wait-gate-clock",
+ of_ti_composite_no_wait_gate_clk_setup);
+
+static void __init of_ti_composite_interface_clk_setup(struct device_node *node)
+{
+ _of_ti_composite_gate_clk_setup(node, &clkhwops_iclk_wait);
+}
+CLK_OF_DECLARE(ti_composite_interface_clk, "ti,composite-interface-clock",
+ of_ti_composite_interface_clk_setup);
+
+static void __init of_ti_composite_gate_clk_setup(struct device_node *node)
+{
+ _of_ti_composite_gate_clk_setup(node, &clkhwops_wait);
+}
+CLK_OF_DECLARE(ti_composite_gate_clk, "ti,composite-gate-clock",
+ of_ti_composite_gate_clk_setup);
+
+
+static void __init of_ti_clkdm_gate_clk_setup(struct device_node *node)
+{
+ _of_ti_gate_clk_setup(node, &omap_gate_clkdm_clk_ops, NULL);
+}
+CLK_OF_DECLARE(ti_clkdm_gate_clk, "ti,clkdm-gate-clock",
+ of_ti_clkdm_gate_clk_setup);
+
+static void __init of_ti_hsdiv_gate_clk_setup(struct device_node *node)
+{
+ _of_ti_gate_clk_setup(node, &omap_gate_clk_hsdiv_restore_ops,
+ &clkhwops_wait);
+}
+CLK_OF_DECLARE(ti_hsdiv_gate_clk, "ti,hsdiv-gate-clock",
+ of_ti_hsdiv_gate_clk_setup);
+
+static void __init of_ti_gate_clk_setup(struct device_node *node)
+{
+ _of_ti_gate_clk_setup(node, &omap_gate_clk_ops, NULL);
+}
+CLK_OF_DECLARE(ti_gate_clk, "ti,gate-clock", of_ti_gate_clk_setup)
+
+static void __init of_ti_wait_gate_clk_setup(struct device_node *node)
+{
+ _of_ti_gate_clk_setup(node, &omap_gate_clk_ops, &clkhwops_wait);
+}
+CLK_OF_DECLARE(ti_wait_gate_clk, "ti,wait-gate-clock",
+ of_ti_wait_gate_clk_setup);
+
+#ifdef CONFIG_ARCH_OMAP3
+static void __init of_ti_am35xx_gate_clk_setup(struct device_node *node)
+{
+ _of_ti_gate_clk_setup(node, &omap_gate_clk_ops,
+ &clkhwops_am35xx_ipss_module_wait);
+}
+CLK_OF_DECLARE(ti_am35xx_gate_clk, "ti,am35xx-gate-clock",
+ of_ti_am35xx_gate_clk_setup);
+
+static void __init of_ti_dss_gate_clk_setup(struct device_node *node)
+{
+ _of_ti_gate_clk_setup(node, &omap_gate_clk_ops,
+ &clkhwops_omap3430es2_dss_usbhost_wait);
+}
+CLK_OF_DECLARE(ti_dss_gate_clk, "ti,dss-gate-clock",
+ of_ti_dss_gate_clk_setup);
+#endif
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
index e1b504c..a52495d 100644
--- a/include/linux/clk/ti.h
+++ b/include/linux/clk/ti.h
@@ -227,6 +227,8 @@ long omap2_dpll_round_rate(struct clk_hw *hw, unsigned long target_rate,
void omap2_init_clk_clkdm(struct clk_hw *clk);
unsigned long omap3_clkoutx2_recalc(struct clk_hw *hw,
unsigned long parent_rate);
+int omap2_clkops_enable_clkdm(struct clk_hw *hw);
+void omap2_clkops_disable_clkdm(struct clk_hw *hw);
int omap3_dpll4_set_rate(struct clk_hw *clk, unsigned long rate,
unsigned long parent_rate);
int omap2_dflt_clk_enable(struct clk_hw *hw);
@@ -251,5 +253,9 @@ static inline void of_ti_clk_deny_autoidle_all(void) { }
extern const struct clk_hw_omap_ops clkhwops_omap3_dpll;
extern const struct clk_hw_omap_ops clkhwops_omap4_dpllmx;
+extern const struct clk_hw_omap_ops clkhwops_wait;
+extern const struct clk_hw_omap_ops clkhwops_omap3430es2_dss_usbhost_wait;
+extern const struct clk_hw_omap_ops clkhwops_am35xx_ipss_module_wait;
+extern const struct clk_hw_omap_ops clkhwops_iclk_wait;
#endif
--
1.7.9.5
next prev parent reply other threads:[~2013-12-19 11:23 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-19 11:23 [PATCHv11 00/49] ARM: TI SoC clock DT conversion Tero Kristo
2013-12-19 11:23 ` [PATCHv11 01/49] clk: add support for registering clocks from description Tero Kristo
2013-12-20 10:53 ` Paul Walmsley
2013-12-20 13:14 ` Tero Kristo
2013-12-19 11:23 ` [PATCHv11 03/49] clk: divider: add support for registering divider clock from descriptor Tero Kristo
2013-12-20 10:54 ` Paul Walmsley
2013-12-19 11:23 ` [PATCHv11 04/49] clk: mux: add support for registering mux " Tero Kristo
2013-12-20 10:55 ` Paul Walmsley
2013-12-19 11:23 ` [PATCHv11 05/49] clk: gate: add support for registering gate " Tero Kristo
2013-12-20 10:56 ` Paul Walmsley
2013-12-19 11:23 ` [PATCHv11 06/49] clk: add support for low level register ops Tero Kristo
2013-12-20 11:00 ` Paul Walmsley
2013-12-20 11:17 ` Tero Kristo
2013-12-20 16:09 ` Paul Walmsley
2013-12-19 11:23 ` [PATCHv11 07/49] clk: divider: add support for low level ops Tero Kristo
2013-12-19 18:26 ` Tony Lindgren
2013-12-19 19:02 ` Tero Kristo
2013-12-20 10:07 ` Rajendra Nayak
2013-12-20 10:29 ` Tero Kristo
2013-12-20 10:39 ` Rajendra Nayak
2013-12-20 16:16 ` Tony Lindgren
2013-12-20 16:33 ` Tero Kristo
2013-12-19 11:23 ` [PATCHv11 08/49] clk: gate: " Tero Kristo
2013-12-19 11:23 ` [PATCHv11 09/49] clk: mux: " Tero Kristo
2013-12-19 11:23 ` [PATCHv11 10/49] CLK: TI: add DT alias clock registration mechanism Tero Kristo
2013-12-19 11:23 ` [PATCHv11 11/49] CLK: ti: add init support for clock IP blocks Tero Kristo
2013-12-19 11:23 ` [PATCHv11 12/49] CLK: TI: Add DPLL clock support Tero Kristo
2013-12-19 11:23 ` [PATCHv11 13/49] CLK: TI: add autoidle support Tero Kristo
2013-12-19 11:23 ` [PATCHv11 14/49] clk: ti: add composite clock support Tero Kristo
2013-12-19 11:23 ` [PATCHv11 15/49] CLK: ti: add support for ti divider-clock Tero Kristo
2013-12-19 11:23 ` [PATCHv11 16/49] clk: ti: add support for TI fixed factor clock Tero Kristo
2013-12-19 11:23 ` Tero Kristo [this message]
2013-12-19 11:23 ` [PATCHv11 18/49] CLK: TI: add support for clockdomain binding Tero Kristo
2013-12-20 11:46 ` Paul Walmsley
2013-12-19 11:23 ` [PATCHv11 19/49] clk: ti: add support for basic mux clock Tero Kristo
2013-12-19 11:23 ` [PATCHv11 20/49] CLK: TI: add omap4 clock init file Tero Kristo
2013-12-19 11:23 ` [PATCHv11 21/49] CLK: TI: add omap5 " Tero Kristo
2013-12-19 11:23 ` [PATCHv11 22/49] CLK: TI: omap5: Initialize USB_DPLL at boot Tero Kristo
2013-12-19 11:23 ` [PATCHv11 23/49] CLK: TI: DRA7: Add APLL support Tero Kristo
2013-12-19 11:23 ` [PATCHv11 24/49] CLK: TI: add dra7 clock init file Tero Kristo
2013-12-19 11:23 ` [PATCHv11 25/49] CLK: TI: add am33xx " Tero Kristo
2013-12-19 11:23 ` [PATCHv11 27/49] CLK: TI: add omap3 " Tero Kristo
2013-12-19 11:24 ` [PATCHv11 30/49] ARM: dts: omap5 clock data Tero Kristo
2013-12-19 11:24 ` [PATCHv11 31/49] ARM: dts: dra7 " Tero Kristo
2013-12-19 11:24 ` [PATCHv11 32/49] ARM: dts: clk: Add apll related clocks Tero Kristo
2013-12-19 11:24 ` [PATCHv11 33/49] ARM: dts: DRA7: Change apll_pcie_m2_ck to fixed factor clock Tero Kristo
2013-12-19 11:24 ` [PATCHv11 34/49] ARM: dts: DRA7: Add PCIe related clock nodes Tero Kristo
2013-12-19 11:24 ` [PATCHv11 35/49] ARM: dts: am33xx clock data Tero Kristo
2013-12-19 11:24 ` [PATCHv11 36/49] ARM: dts: omap3 " Tero Kristo
2013-12-19 11:24 ` [PATCHv11 37/49] ARM: dts: AM35xx: use DT " Tero Kristo
2013-12-19 11:24 ` [PATCHv11 39/49] ARM: OMAP2+: clock: add support for indexed memmaps Tero Kristo
2013-12-19 11:24 ` [PATCHv11 40/49] ARM: OMAP2+: clock: use driver API instead of direct memory read/write Tero Kristo
[not found] ` <1387452260-23276-1-git-send-email-t-kristo-l0cyMroinI0@public.gmane.org>
2013-12-19 11:23 ` [PATCHv11 02/49] clk: fixed-rate: add support for registering fixed-rate clock from descriptor Tero Kristo
2013-12-19 11:23 ` [PATCHv11 26/49] CLK: TI: add interface clock support for OMAP3 Tero Kristo
2013-12-19 11:23 ` [PATCHv11 28/49] CLK: TI: add am43xx clock init file Tero Kristo
2013-12-19 11:24 ` [PATCHv11 29/49] ARM: dts: omap4 clock data Tero Kristo
2013-12-19 11:24 ` [PATCHv11 38/49] ARM: dts: am43xx " Tero Kristo
2013-12-19 11:24 ` [PATCHv11 41/49] ARM: OMAP: hwmod: fix an incorrect clk type cast with _get_clkdm Tero Kristo
2013-12-19 11:24 ` [PATCHv11 42/49] ARM: OMAP3: hwmod: initialize clkdm from clkdm_name Tero Kristo
2013-12-19 11:24 ` [PATCHv11 43/49] ARM: OMAP2+: PRM: add support for initializing PRCM clock modules from DT Tero Kristo
2013-12-20 11:49 ` Paul Walmsley
2013-12-20 13:12 ` Tero Kristo
2013-12-19 11:24 ` [PATCHv11 44/49] ARM: OMAP2+: io: use new clock init API Tero Kristo
2013-12-19 11:24 ` [PATCHv11 46/49] ARM: OMAP: DRA7: Enable clock init Tero Kristo
2013-12-19 11:24 ` [PATCHv11 47/49] ARM: AM43xx: " Tero Kristo
2013-12-19 11:24 ` [PATCHv11 45/49] ARM: OMAP4: remove old clock data and link in new clock init code Tero Kristo
2013-12-19 11:24 ` [PATCHv11 48/49] ARM: AM33xx: " Tero Kristo
2013-12-19 11:24 ` [PATCHv11 49/49] ARM: OMAP3: use DT clock init if DT data is available Tero Kristo
2013-12-19 15:07 ` [PATCHv11 00/49] ARM: TI SoC clock DT conversion Nishanth Menon
2013-12-19 18:05 ` Tony Lindgren
2013-12-20 6:52 ` Keerthy
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=1387452260-23276-18-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 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).