diff options
Diffstat (limited to 'arch/arm/mach-exynos4/pm.c')
| -rw-r--r-- | arch/arm/mach-exynos4/pm.c | 45 | 
1 files changed, 27 insertions, 18 deletions
diff --git a/arch/arm/mach-exynos4/pm.c b/arch/arm/mach-exynos4/pm.c index 10d917d9e3a..8755ca8dd48 100644 --- a/arch/arm/mach-exynos4/pm.c +++ b/arch/arm/mach-exynos4/pm.c @@ -16,6 +16,7 @@  #include <linux/init.h>  #include <linux/suspend.h> +#include <linux/syscore_ops.h>  #include <linux/io.h>  #include <asm/cacheflush.h> @@ -372,7 +373,27 @@ void exynos4_scu_enable(void __iomem *scu_base)  	flush_cache_all();  } -static int exynos4_pm_resume(struct sys_device *dev) +static struct sysdev_driver exynos4_pm_driver = { +	.add		= exynos4_pm_add, +}; + +static __init int exynos4_pm_drvinit(void) +{ +	unsigned int tmp; + +	s3c_pm_init(); + +	/* All wakeup disable */ + +	tmp = __raw_readl(S5P_WAKEUP_MASK); +	tmp |= ((0xFF << 8) | (0x1F << 1)); +	__raw_writel(tmp, S5P_WAKEUP_MASK); + +	return sysdev_driver_register(&exynos4_sysclass, &exynos4_pm_driver); +} +arch_initcall(exynos4_pm_drvinit); + +static void exynos4_pm_resume(void)  {  	/* For release retention */ @@ -394,27 +415,15 @@ static int exynos4_pm_resume(struct sys_device *dev)  	/* enable L2X0*/  	writel_relaxed(1, S5P_VA_L2CC + L2X0_CTRL);  #endif - -	return 0;  } -static struct sysdev_driver exynos4_pm_driver = { -	.add		= exynos4_pm_add, +static struct syscore_ops exynos4_pm_syscore_ops = {  	.resume		= exynos4_pm_resume,  }; -static __init int exynos4_pm_drvinit(void) +static __init int exynos4_pm_syscore_init(void)  { -	unsigned int tmp; - -	s3c_pm_init(); - -	/* All wakeup disable */ - -	tmp = __raw_readl(S5P_WAKEUP_MASK); -	tmp |= ((0xFF << 8) | (0x1F << 1)); -	__raw_writel(tmp, S5P_WAKEUP_MASK); - -	return sysdev_driver_register(&exynos4_sysclass, &exynos4_pm_driver); +	register_syscore_ops(&exynos4_pm_syscore_ops); +	return 0;  } -arch_initcall(exynos4_pm_drvinit); +arch_initcall(exynos4_pm_syscore_init);  |