Skip to content

Commit dbeb1a8

Browse files
committed
Merge tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
Pull clk fixes from Stephen Boyd: - build fix to export the clk_bulk_prepare() symbol - suspend fix for Samsung Exynos SoCs where we need to keep clks on across suspend - two critical clk markings for clks that shouldn't ever turn off on Rockchip SoCs - a fix for a copy-paste mistake on Rockchip rk3128 causing some clks to touch the same bit and trample over one another * tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: clk: samsung: exynos4: Enable VPLL and EPLL clocks for suspend/resume cycle clk: Export clk_bulk_prepare() clk: rockchip: add sclk_timer5 as critical clock on rk3128 clk: rockchip: fix up rk3128 pvtm and mipi_24m gate regs error clk: rockchip: add pclk_pmu as critical clock on rk3128
2 parents ed0f72f + 5dcbeca commit dbeb1a8

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

drivers/clk/clk-bulk.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ int __must_check clk_bulk_prepare(int num_clks,
105105

106106
return ret;
107107
}
108+
EXPORT_SYMBOL_GPL(clk_bulk_prepare);
108109

109110
#endif /* CONFIG_HAVE_CLK_PREPARE */
110111

drivers/clk/rockchip/clk-rk3128.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -315,13 +315,13 @@ static struct rockchip_clk_branch common_clk_branches[] __initdata = {
315315
RK2928_CLKGATE_CON(10), 8, GFLAGS),
316316

317317
GATE(SCLK_PVTM_CORE, "clk_pvtm_core", "xin24m", 0,
318-
RK2928_CLKGATE_CON(10), 8, GFLAGS),
318+
RK2928_CLKGATE_CON(10), 0, GFLAGS),
319319
GATE(SCLK_PVTM_GPU, "clk_pvtm_gpu", "xin24m", 0,
320-
RK2928_CLKGATE_CON(10), 8, GFLAGS),
320+
RK2928_CLKGATE_CON(10), 1, GFLAGS),
321321
GATE(SCLK_PVTM_FUNC, "clk_pvtm_func", "xin24m", 0,
322-
RK2928_CLKGATE_CON(10), 8, GFLAGS),
322+
RK2928_CLKGATE_CON(10), 2, GFLAGS),
323323
GATE(SCLK_MIPI_24M, "clk_mipi_24m", "xin24m", CLK_IGNORE_UNUSED,
324-
RK2928_CLKGATE_CON(10), 8, GFLAGS),
324+
RK2928_CLKGATE_CON(2), 15, GFLAGS),
325325

326326
COMPOSITE(SCLK_SDMMC, "sclk_sdmmc0", mux_mmc_src_p, 0,
327327
RK2928_CLKSEL_CON(11), 6, 2, MFLAGS, 0, 6, DFLAGS,
@@ -541,7 +541,7 @@ static struct rockchip_clk_branch common_clk_branches[] __initdata = {
541541
GATE(0, "pclk_grf", "pclk_cpu", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(5), 4, GFLAGS),
542542
GATE(0, "pclk_mipiphy", "pclk_cpu", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(5), 0, GFLAGS),
543543

544-
GATE(0, "pclk_pmu", "pclk_pmu_pre", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(9), 2, GFLAGS),
544+
GATE(0, "pclk_pmu", "pclk_pmu_pre", 0, RK2928_CLKGATE_CON(9), 2, GFLAGS),
545545
GATE(0, "pclk_pmu_niu", "pclk_pmu_pre", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(9), 3, GFLAGS),
546546

547547
/* PD_MMC */
@@ -577,6 +577,8 @@ static const char *const rk3128_critical_clocks[] __initconst = {
577577
"aclk_peri",
578578
"hclk_peri",
579579
"pclk_peri",
580+
"pclk_pmu",
581+
"sclk_timer5",
580582
};
581583

582584
static struct rockchip_clk_provider *__init rk3128_common_clk_init(struct device_node *np)

drivers/clk/samsung/clk-exynos4.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,18 @@ static const struct samsung_clk_reg_dump src_mask_suspend_e4210[] = {
294294
#define PLL_ENABLED (1 << 31)
295295
#define PLL_LOCKED (1 << 29)
296296

297+
static void exynos4_clk_enable_pll(u32 reg)
298+
{
299+
u32 pll_con = readl(reg_base + reg);
300+
pll_con |= PLL_ENABLED;
301+
writel(pll_con, reg_base + reg);
302+
303+
while (!(pll_con & PLL_LOCKED)) {
304+
cpu_relax();
305+
pll_con = readl(reg_base + reg);
306+
}
307+
}
308+
297309
static void exynos4_clk_wait_for_pll(u32 reg)
298310
{
299311
u32 pll_con;
@@ -315,6 +327,9 @@ static int exynos4_clk_suspend(void)
315327
samsung_clk_save(reg_base, exynos4_save_pll,
316328
ARRAY_SIZE(exynos4_clk_pll_regs));
317329

330+
exynos4_clk_enable_pll(EPLL_CON0);
331+
exynos4_clk_enable_pll(VPLL_CON0);
332+
318333
if (exynos4_soc == EXYNOS4210) {
319334
samsung_clk_save(reg_base, exynos4_save_soc,
320335
ARRAY_SIZE(exynos4210_clk_save));

0 commit comments

Comments
 (0)