Skip to content

Commit 02f1e17

Browse files
rockosovjbrun3t
authored andcommitted
clk: meson: make pll rst bit as optional
Compared with the previous SoCs, self-adaption current module is newly added for A1, and there is no reset parameter except the fixed pll. Since we use clk-pll generic driver for A1 pll implementation, rst bit should be optional to support new behavior. Signed-off-by: Jian Hu <[email protected]> Acked-by: Martin Blumenstingl <[email protected]> Signed-off-by: Dmitry Rokosov <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jerome Brunet <[email protected]>
1 parent 98872da commit 02f1e17

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

drivers/clk/meson/clk-pll.c

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -295,10 +295,14 @@ static int meson_clk_pll_init(struct clk_hw *hw)
295295
struct meson_clk_pll_data *pll = meson_clk_pll_data(clk);
296296

297297
if (pll->init_count) {
298-
meson_parm_write(clk->map, &pll->rst, 1);
298+
if (MESON_PARM_APPLICABLE(&pll->rst))
299+
meson_parm_write(clk->map, &pll->rst, 1);
300+
299301
regmap_multi_reg_write(clk->map, pll->init_regs,
300302
pll->init_count);
301-
meson_parm_write(clk->map, &pll->rst, 0);
303+
304+
if (MESON_PARM_APPLICABLE(&pll->rst))
305+
meson_parm_write(clk->map, &pll->rst, 0);
302306
}
303307

304308
return 0;
@@ -309,8 +313,11 @@ static int meson_clk_pll_is_enabled(struct clk_hw *hw)
309313
struct clk_regmap *clk = to_clk_regmap(hw);
310314
struct meson_clk_pll_data *pll = meson_clk_pll_data(clk);
311315

312-
if (meson_parm_read(clk->map, &pll->rst) ||
313-
!meson_parm_read(clk->map, &pll->en) ||
316+
if (MESON_PARM_APPLICABLE(&pll->rst) &&
317+
meson_parm_read(clk->map, &pll->rst))
318+
return 0;
319+
320+
if (!meson_parm_read(clk->map, &pll->en) ||
314321
!meson_parm_read(clk->map, &pll->l))
315322
return 0;
316323

@@ -341,13 +348,15 @@ static int meson_clk_pll_enable(struct clk_hw *hw)
341348
return 0;
342349

343350
/* Make sure the pll is in reset */
344-
meson_parm_write(clk->map, &pll->rst, 1);
351+
if (MESON_PARM_APPLICABLE(&pll->rst))
352+
meson_parm_write(clk->map, &pll->rst, 1);
345353

346354
/* Enable the pll */
347355
meson_parm_write(clk->map, &pll->en, 1);
348356

349357
/* Take the pll out reset */
350-
meson_parm_write(clk->map, &pll->rst, 0);
358+
if (MESON_PARM_APPLICABLE(&pll->rst))
359+
meson_parm_write(clk->map, &pll->rst, 0);
351360

352361
if (meson_clk_pll_wait_lock(hw))
353362
return -EIO;
@@ -361,7 +370,8 @@ static void meson_clk_pll_disable(struct clk_hw *hw)
361370
struct meson_clk_pll_data *pll = meson_clk_pll_data(clk);
362371

363372
/* Put the pll is in reset */
364-
meson_parm_write(clk->map, &pll->rst, 1);
373+
if (MESON_PARM_APPLICABLE(&pll->rst))
374+
meson_parm_write(clk->map, &pll->rst, 1);
365375

366376
/* Disable the pll */
367377
meson_parm_write(clk->map, &pll->en, 0);

0 commit comments

Comments
 (0)