Re: [PATCH v6 2/5] clk: meson: add support for A1 PLL clock ops
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date: 2020-01-18 21:57:16
Also in:
linux-amlogic, linux-arm-kernel, linux-clk, lkml
Hi Jian, thank you for the update! On Thu, Jan 16, 2020 at 9:04 AM Jian Hu [off-list ref] wrote:
Compared with the previous SoCs, self-adaption current module is newly added for A1, and there is no reset parm except the fixed pll. In A1 PLL, the PLL enable sequence is different, using the new power-on sequence to enable the PLL. Signed-off-by: Jian Hu <redacted>
Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> [...]
quoted hunk ↗ jump to hunk
@@ -323,13 +330,34 @@ static int meson_clk_pll_enable(struct clk_hw *hw) return 0; /* Make sure the pll is in reset */ - meson_parm_write(clk->map, &pll->rst, 1); + if (MESON_PARM_APPLICABLE(&pll->rst)) + meson_parm_write(clk->map, &pll->rst, 1); /* Enable the pll */ meson_parm_write(clk->map, &pll->en, 1); /* Take the pll out reset */ - meson_parm_write(clk->map, &pll->rst, 0); + if (MESON_PARM_APPLICABLE(&pll->rst)) + meson_parm_write(clk->map, &pll->rst, 0); + + /* + * Compared with the previous SoCs, self-adaption current module + * is newly added for A1, keep the new power-on sequence to enable the + * PLL. The sequence is: + * 1. enable the pll, delay for 10us + * 2. enable the pll self-adaption current module, delay for 40us + * 3. enable the lock detect module + */ + if (MESON_PARM_APPLICABLE(&pll->current_en)) { + udelay(10); + meson_parm_write(clk->map, &pll->current_en, 1); + udelay(40);
note to myself: first I thought that these have to be converted to ulseep_range BUT: clk_enable can be called from atomic context, so the atomic versions (udelay instead of usleep/usleep_range) are perfectly fine in Jian's patch Martin