Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1634710

[PATCH v2 2/8] clk: Provide option to query hardware for clk phase

From Chen-Yu Tsai <wens@csie.org>
Newsgroups linux.kernel
Subject [PATCH v2 2/8] clk: Provide option to query hardware for clk phase
Date 2017-05-03 05:20 +0200
Message-ID <tCSZz-7mp-13@gated-at.bofh.it> (permalink)
References <tCSZz-7mp-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On some hardware, the clk phase is tied to the parent clk's
rate and some clk delay programmed into the hardware. As the
parent clk rate changes, so does the clk phase.

Add a clk flag specifying not to use the cached clk phase,
but always query the hardware for it.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 drivers/clk/clk.c            | 6 +++++-
 include/linux/clk-provider.h | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 67201f67a14a..05e2481c1340 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -1929,7 +1929,11 @@ static int clk_core_get_phase(struct clk_core *core)
 	int ret;
 
 	clk_prepare_lock();
-	ret = core->phase;
+	if (core && (core->flags & CLK_GET_PHASE_NOCACHE) &&
+	    core->ops->get_phase)
+		ret = core->ops->get_phase(core->hw);
+	else
+		ret = core->phase;
 	clk_prepare_unlock();
 
 	return ret;
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
index a428aec36ace..e2e856b1a81f 100644
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -35,6 +35,7 @@
 #define CLK_IS_CRITICAL		BIT(11) /* do not gate, ever */
 /* parents need enable during gate/ungate, set rate and re-parent */
 #define CLK_OPS_PARENT_ENABLE	BIT(12)
+#define CLK_GET_PHASE_NOCACHE	BIT(13) /* do not use the cached clk phase */
 
 struct clk;
 struct clk_hw;
-- 
2.11.0

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v2 0/8] clk: sunxi-ng: Add support for A83T CCU Chen-Yu Tsai <wens@csie.org> - 2017-05-03 05:20 +0200
  [PATCH v2 8/8] ARM: sun8i: a83t: Switch to CCU device tree binding macros Chen-Yu Tsai <wens@csie.org> - 2017-05-03 05:20 +0200
  [PATCH v2 4/8] clk: sunxi-ng: Support multiple variable pre-dividers Chen-Yu Tsai <wens@csie.org> - 2017-05-03 05:20 +0200
  [PATCH v2 2/8] clk: Provide option to query hardware for clk phase Chen-Yu Tsai <wens@csie.org> - 2017-05-03 05:20 +0200
  [PATCH v2 6/8] ARM: sun8i: a83t: Add CCU device nodes Chen-Yu Tsai <wens@csie.org> - 2017-05-03 05:20 +0200
  [PATCH v2 1/8] dt-bindings: clock: sunxi-ccu: Add compatible string for A83T CCU Chen-Yu Tsai <wens@csie.org> - 2017-05-03 05:20 +0200
    Re: [PATCH v2 1/8] dt-bindings: clock: sunxi-ccu: Add compatible  string for A83T CCU Rob Herring <robh@kernel.org> - 2017-05-08 18:20 +0200
  [PATCH v2 7/8] ARM: sun8i: a83t: Set clock accuracy for 24MHz oscillator Chen-Yu Tsai <wens@csie.org> - 2017-05-03 05:20 +0200
  Re: [linux-sunxi] [PATCH v2 0/8] clk: sunxi-ng: Add support for A83T  CCU Corentin Labbe <clabbe.montjoie@gmail.com> - 2017-05-05 08:50 +0200

csiph-web