Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3ac0b615 authored by Marek Szyprowski's avatar Marek Szyprowski Committed by Sylwester Nawrocki
Browse files

clk: samsung: s5pv210: Use generic helper for handling suspend/resume



Replace common suspend/resume handling code by generic helper.
Almost no functional change, the only difference is in handling
of hypothetical memory allocation failure on boot.

Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Acked-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
Reviewed-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: default avatarSylwester Nawrocki <snawrocki@kernel.org>
parent 3773ee42
Loading
Loading
Loading
Loading
+2 −39
Original line number Diff line number Diff line
@@ -14,7 +14,6 @@
#include <linux/clk-provider.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/syscore_ops.h>

#include "clk.h"
#include "clk-pll.h"
@@ -83,9 +82,6 @@ enum {

static void __iomem *reg_base;

#ifdef CONFIG_PM_SLEEP
static struct samsung_clk_reg_dump *s5pv210_clk_dump;

/* List of registers that need to be preserved across suspend/resume. */
static unsigned long s5pv210_clk_regs[] __initdata = {
	CLK_SRC0,
@@ -132,40 +128,6 @@ static unsigned long s5pv210_clk_regs[] __initdata = {
	CLK_OUT,
};

static int s5pv210_clk_suspend(void)
{
	samsung_clk_save(reg_base, s5pv210_clk_dump,
				ARRAY_SIZE(s5pv210_clk_regs));
	return 0;
}

static void s5pv210_clk_resume(void)
{
	samsung_clk_restore(reg_base, s5pv210_clk_dump,
				ARRAY_SIZE(s5pv210_clk_regs));
}

static struct syscore_ops s5pv210_clk_syscore_ops = {
	.suspend = s5pv210_clk_suspend,
	.resume = s5pv210_clk_resume,
};

static void s5pv210_clk_sleep_init(void)
{
	s5pv210_clk_dump =
		samsung_clk_alloc_reg_dump(s5pv210_clk_regs,
					   ARRAY_SIZE(s5pv210_clk_regs));
	if (!s5pv210_clk_dump) {
		pr_warn("%s: Failed to allocate sleep save data\n", __func__);
		return;
	}

	register_syscore_ops(&s5pv210_clk_syscore_ops);
}
#else
static inline void s5pv210_clk_sleep_init(void) { }
#endif

/* Mux parent lists. */
static const char *const fin_pll_p[] __initconst = {
	"xxti",
@@ -822,7 +784,8 @@ static void __init __s5pv210_clk_init(struct device_node *np,
	samsung_clk_register_alias(ctx, s5pv210_aliases,
						ARRAY_SIZE(s5pv210_aliases));

	s5pv210_clk_sleep_init();
	samsung_clk_sleep_init(reg_base, s5pv210_clk_regs,
			       ARRAY_SIZE(s5pv210_clk_regs));

	samsung_clk_of_add_provider(np, ctx);