All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] clk: si5351: Apply PLL soft reset before enabling the outputs
@ 2017-07-25 19:17 Sergej Sawazki
  2017-07-26  1:11 ` Stephen Boyd
  0 siblings, 1 reply; 10+ messages in thread
From: Sergej Sawazki @ 2017-07-25 19:17 UTC (permalink / raw)
  To: sboyd, mturquette
  Cc: linux-clk, ce3a, Sergej Sawazki, Sebastian Hesselbarth, Rabeeh Khoury

The "Si5351A/B/C Data Sheet" states to apply a PLLA and PLLB soft reset
before enabling the outputs [1]. This is required to get a deterministic
phase relationship between the output clocks.

Without the PLL reset, the phase offset beween the clocks is unpredictable.

References:
[1] https://www.silabs.com/Support%20Documents/TechnicalDocs/Si5351-B.pdf
    Figure 12 ("I2C Programming Procedure")

Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Cc: Rabeeh Khoury <rabeeh@solid-run.com>
Signed-off-by: Sergej Sawazki <sergej@taudac.com>
---
 drivers/clk/clk-si5351.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/clk/clk-si5351.c b/drivers/clk/clk-si5351.c
index 255d0fe..6cca425 100644
--- a/drivers/clk/clk-si5351.c
+++ b/drivers/clk/clk-si5351.c
@@ -905,6 +905,15 @@ static int si5351_clkout_prepare(struct clk_hw *hw)
 
 	si5351_set_bits(hwdata->drvdata, SI5351_CLK0_CTRL + hwdata->num,
 			SI5351_CLK_POWERDOWN, 0);
+
+	/*
+	 * Reset the PLLs before enabling the outputs to get a deterministic
+	 * phase relationship between the output clocks. Otherwise, the phase
+	 * offset beween the clocks is unpredictable.
+	 */
+	si5351_reg_write(hwdata->drvdata, SI5351_PLL_RESET,
+			 SI5351_PLL_RESET_A | SI5351_PLL_RESET_B);
+
 	si5351_set_bits(hwdata->drvdata, SI5351_OUTPUT_ENABLE_CTRL,
 			(1 << hwdata->num), 0);
 	return 0;
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-08-08 20:59 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-25 19:17 [PATCH] clk: si5351: Apply PLL soft reset before enabling the outputs Sergej Sawazki
2017-07-26  1:11 ` Stephen Boyd
2017-07-26  4:43   ` Sebastian Hesselbarth
2017-07-26 23:10     ` Sergej Sawazki
2017-07-27  9:11       ` Russell King - ARM Linux
2017-07-28  7:33         ` Sebastian Hesselbarth
2017-08-08 20:59           ` Sergej Sawazki
2017-07-26 23:29     ` Sergej Sawazki
2017-07-26  8:18   ` Russell King - ARM Linux
2017-07-28  7:30     ` Sebastian Hesselbarth

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.