Commit 423c62bf authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Krzysztof Kozlowski
Browse files

ARM: s5pv210: use private pm save/restore



The pm save/restore code is fairly small, so in order to
separate the s3c and s5p platforms, adding an s5p specific
copy instead of sharing it is actually easier.

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20200806182059.2431-17-krzk@kernel.org


Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
parent 17132da7
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -3,12 +3,5 @@
# Copyright (c) 2010 Samsung Electronics Co., Ltd.
# 		http://www.samsung.com/

ccflags-$(CONFIG_ARCH_MULTIPLATFORM) += -I$(srctree)/arch/arm/plat-samsung/include

# Core

obj-$(CONFIG_PM_SLEEP)		+= pm.o sleep.o

# machine support

obj-y				+= s5pv210.o
+43 −2
Original line number Diff line number Diff line
@@ -13,15 +13,56 @@
#include <linux/suspend.h>
#include <linux/syscore_ops.h>
#include <linux/io.h>
#include <linux/soc/samsung/s3c-pm.h>

#include <asm/cacheflush.h>
#include <asm/suspend.h>

#include <plat/pm-common.h>

#include "common.h"
#include "regs-clock.h"

/* helper functions to save and restore register state */
struct sleep_save {
	void __iomem	*reg;
	unsigned long	val;
};

#define SAVE_ITEM(x) \
	{ .reg = (x) }

/**
 * s3c_pm_do_save() - save a set of registers for restoration on resume.
 * @ptr: Pointer to an array of registers.
 * @count: Size of the ptr array.
 *
 * Run through the list of registers given, saving their contents in the
 * array for later restoration when we wakeup.
 */
static void s3c_pm_do_save(struct sleep_save *ptr, int count)
{
	for (; count > 0; count--, ptr++) {
		ptr->val = readl_relaxed(ptr->reg);
		S3C_PMDBG("saved %p value %08lx\n", ptr->reg, ptr->val);
	}
}

/**
 * s3c_pm_do_restore() - restore register values from the save list.
 * @ptr: Pointer to an array of registers.
 * @count: Size of the ptr array.
 *
 * Restore the register values saved from s3c_pm_do_save().
 *
 * WARNING: Do not put any debug in here that may effect memory or use
 * peripherals, as things may be changing!
*/

static void s3c_pm_do_restore_core(const struct sleep_save *ptr, int count)
{
	for (; count > 0; count--, ptr++)
		writel_relaxed(ptr->val, ptr->reg);
}

static struct sleep_save s5pv210_core_save[] = {
	/* Clock ETC */
	SAVE_ITEM(S5P_MDNIE_SEL),
+3 −1
Original line number Diff line number Diff line
@@ -9,7 +9,9 @@
#ifndef __ASM_ARCH_REGS_CLOCK_H
#define __ASM_ARCH_REGS_CLOCK_H __FILE__

#include <plat/map-base.h>
#define S3C_ADDR_BASE		0xF6000000
#define S3C_ADDR(x)		((void __iomem __force *)S3C_ADDR_BASE + (x))
#define S3C_VA_SYS		S3C_ADDR(0x00100000)

#define S5P_CLKREG(x)		(S3C_VA_SYS + (x))

+0 −2
Original line number Diff line number Diff line
@@ -13,8 +13,6 @@
#include <asm/mach/map.h>
#include <asm/system_misc.h>

#include <plat/map-base.h>

#include "common.h"
#include "regs-clock.h"

+1 −2
Original line number Diff line number Diff line
@@ -24,8 +24,7 @@ obj-$(CONFIG_GPIO_SAMSUNG) += gpio-samsung.o

# PM support

obj-$(CONFIG_PM_SLEEP)		+= pm-common.o
obj-$(CONFIG_SAMSUNG_PM)	+= pm.o
obj-$(CONFIG_SAMSUNG_PM)	+= pm.o pm-common.o
obj-$(CONFIG_SAMSUNG_PM_GPIO)	+= pm-gpio.o

obj-$(CONFIG_SAMSUNG_WAKEMASK)	+= wakeup-mask.o