Commit 17132da7 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Krzysztof Kozlowski
Browse files

ARM: samsung: move pm check code to drivers/soc



This is the only part of plat-samsung that is really
shared between the s3c and s5p ports. Moving it to
drivers/soc/ lets us make them completely independent.

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


Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
parent cb6c0301
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ config ARCH_S5PV210
	select HAVE_S3C_RTC if RTC_CLASS
	select PINCTRL
	select PINCTRL_EXYNOS
	select SOC_SAMSUNG
	help
	  Samsung S5PV210/S5PC110 series based systems

+1 −48
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ config PLAT_SAMSUNG
	default y
	select GENERIC_IRQ_CHIP
	select NO_IOPORT_MAP
	select SOC_SAMSUNG
	help
	  Base platform code for all Samsung SoC based systems

@@ -234,54 +235,6 @@ config SAMSUNG_PM_GPIO
	  pinctrl-samsung driver.
endif

comment "Power management"

config SAMSUNG_PM_DEBUG
	bool "Samsung PM Suspend debug"
	depends on PM && DEBUG_KERNEL
	depends on PLAT_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210
	depends on DEBUG_S3C24XX_UART || DEBUG_S3C2410_UART
	help
	  Say Y here if you want verbose debugging from the PM Suspend and
	  Resume code. See <file:Documentation/arm/samsung-s3c24xx/suspend.rst>
	  for more information.

config S3C_PM_DEBUG_LED_SMDK
       bool "SMDK LED suspend/resume debugging"
       depends on PM && (MACH_SMDK6410)
       help
         Say Y here to enable the use of the SMDK LEDs on the baseboard
	 for debugging of the state of the suspend and resume process.

	 Note, this currently only works for S3C64XX based SMDK boards.

config SAMSUNG_PM_CHECK
	bool "S3C2410 PM Suspend Memory CRC"
	depends on PM && (PLAT_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210)
	select CRC32
	help
	  Enable the PM code's memory area checksum over sleep. This option
	  will generate CRCs of all blocks of memory, and store them before
	  going to sleep. The blocks are then checked on resume for any
	  errors.

	  Note, this can take several seconds depending on memory size
	  and CPU speed.

	  See <file:Documentation/arm/samsung-s3c24xx/suspend.rst>

config SAMSUNG_PM_CHECK_CHUNKSIZE
	int "S3C2410 PM Suspend CRC Chunksize (KiB)"
	depends on PM && SAMSUNG_PM_CHECK
	default 64
	help
	  Set the chunksize in Kilobytes of the CRC for checking memory
	  corruption over suspend and resume. A smaller value will mean that
	  the CRC data block will take more memory, but will identify any
	  faults with better precision.

	  See <file:Documentation/arm/samsung-s3c24xx/suspend.rst>

config SAMSUNG_WAKEMASK
	bool
	depends on PM
+0 −2
Original line number Diff line number Diff line
@@ -27,7 +27,5 @@ obj-$(CONFIG_GPIO_SAMSUNG) += gpio-samsung.o
obj-$(CONFIG_PM_SLEEP)		+= pm-common.o
obj-$(CONFIG_SAMSUNG_PM)	+= pm.o
obj-$(CONFIG_SAMSUNG_PM_GPIO)	+= pm-gpio.o
obj-$(CONFIG_SAMSUNG_PM_CHECK)	+= pm-check.o
obj-$(CONFIG_SAMSUNG_PM_DEBUG)	+= pm-debug.o

obj-$(CONFIG_SAMSUNG_WAKEMASK)	+= wakeup-mask.o
+1 −69
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
#define __PLAT_SAMSUNG_PM_COMMON_H __FILE__

#include <linux/irq.h>
#include <linux/soc/samsung/s3c-pm.h>

/* sleep save info */

@@ -36,73 +37,4 @@ extern void s3c_pm_do_save(struct sleep_save *ptr, int count);
extern void s3c_pm_do_restore(const struct sleep_save *ptr, int count);
extern void s3c_pm_do_restore_core(const struct sleep_save *ptr, int count);

/* PM debug functions */

/**
 * struct pm_uart_save - save block for core UART
 * @ulcon: Save value for S3C2410_ULCON
 * @ucon: Save value for S3C2410_UCON
 * @ufcon: Save value for S3C2410_UFCON
 * @umcon: Save value for S3C2410_UMCON
 * @ubrdiv: Save value for S3C2410_UBRDIV
 *
 * Save block for UART registers to be held over sleep and restored if they
 * are needed (say by debug).
*/
struct pm_uart_save {
	u32	ulcon;
	u32	ucon;
	u32	ufcon;
	u32	umcon;
	u32	ubrdiv;
	u32	udivslot;
};

#ifdef CONFIG_SAMSUNG_PM_DEBUG
/**
 * s3c_pm_dbg() - low level debug function for use in suspend/resume.
 * @msg: The message to print.
 *
 * This function is used mainly to debug the resume process before the system
 * can rely on printk/console output. It uses the low-level debugging output
 * routine printascii() to do its work.
 */
extern void s3c_pm_dbg(const char *msg, ...);

#define S3C_PMDBG(fmt...) s3c_pm_dbg(fmt)

extern void s3c_pm_save_uarts(bool is_s3c24xx);
extern void s3c_pm_restore_uarts(bool is_s3c24xx);

#ifdef CONFIG_ARCH_S3C64XX
extern void s3c_pm_arch_update_uart(void __iomem *regs,
				    struct pm_uart_save *save);
#else
static inline void
s3c_pm_arch_update_uart(void __iomem *regs, struct pm_uart_save *save)
{
}
#endif

#else
#define S3C_PMDBG(fmt...) pr_debug(fmt)

static inline void s3c_pm_save_uarts(bool is_s3c24xx) { }
static inline void s3c_pm_restore_uarts(bool is_s3c24xx) { }
#endif

/* suspend memory checking */

#ifdef CONFIG_SAMSUNG_PM_CHECK
extern void s3c_pm_check_prepare(void);
extern void s3c_pm_check_restore(void);
extern void s3c_pm_check_cleanup(void);
extern void s3c_pm_check_store(void);
#else
#define s3c_pm_check_prepare() do { } while (0)
#define s3c_pm_check_restore() do { } while (0)
#define s3c_pm_check_cleanup() do { } while (0)
#define s3c_pm_check_store()   do { } while (0)
#endif

#endif
+47 −1
Original line number Diff line number Diff line
@@ -35,7 +35,53 @@ config EXYNOS_PMU_ARM_DRIVERS

config EXYNOS_PM_DOMAINS
	bool "Exynos PM domains" if COMPILE_TEST
	depends on PM_GENERIC_DOMAINS || COMPILE_TEST
	depends on (ARCH_EXYNOS && PM_GENERIC_DOMAINS) || COMPILE_TEST

config SAMSUNG_PM_DEBUG
	bool "Samsung PM Suspend debug"
	depends on PM && DEBUG_KERNEL
	depends on PLAT_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210
	depends on DEBUG_S3C24XX_UART || DEBUG_S3C2410_UART
	help
	  Say Y here if you want verbose debugging from the PM Suspend and
	  Resume code. See <file:Documentation/arm/samsung-s3c24xx/suspend.rst>
	  for more information.

config S3C_PM_DEBUG_LED_SMDK
       bool "SMDK LED suspend/resume debugging"
       depends on PM && (MACH_SMDK6410)
       help
         Say Y here to enable the use of the SMDK LEDs on the baseboard
	 for debugging of the state of the suspend and resume process.

	 Note, this currently only works for S3C64XX based SMDK boards.

config SAMSUNG_PM_CHECK
	bool "S3C2410 PM Suspend Memory CRC"
	depends on PM && (PLAT_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210)
	select CRC32
	help
	  Enable the PM code's memory area checksum over sleep. This option
	  will generate CRCs of all blocks of memory, and store them before
	  going to sleep. The blocks are then checked on resume for any
	  errors.

	  Note, this can take several seconds depending on memory size
	  and CPU speed.

	  See <file:Documentation/arm/samsung-s3c24xx/suspend.rst>

config SAMSUNG_PM_CHECK_CHUNKSIZE
	int "S3C2410 PM Suspend CRC Chunksize (KiB)"
	depends on PM && SAMSUNG_PM_CHECK
	default 64
	help
	  Set the chunksize in Kilobytes of the CRC for checking memory
	  corruption over suspend and resume. A smaller value will mean that
	  the CRC data block will take more memory, but will identify any
	  faults with better precision.

	  See <file:Documentation/arm/samsung-s3c24xx/suspend.rst>

config EXYNOS_REGULATOR_COUPLER
	bool "Exynos SoC Regulator Coupler" if COMPILE_TEST
Loading