diff options
| author | Amit Daniel Kachhap <amit.daniel@samsung.com> | 2013-07-24 01:06:13 -0400 |
|---|---|---|
| committer | Kukjin Kim <kgene.kim@samsung.com> | 2013-07-24 01:06:13 -0400 |
| commit | 89693016e372983d720c186c0d00b29414b58804 (patch) | |
| tree | 10ca89777560b97c6d090b4841ebff2bf3a76cf1 | |
| parent | d817468c4b2892b9468e2a0c92116e38a3a61370 (diff) | |
ARM: SAMSUNG: Add SAMSUNG_PM config option to select pm
This patch enables the selection of samsung pm related stuffs
when SAMSUNG_PM config is enabled and not just when generic PM
config is enabled. Power management for s3c64XX and s3c24XX
is enabled by default and for other platform depends on S5P_PM.
This patch also fixes the following compilation error's when compiling
a platform like exynos5440 which does not select pm stuffs.
arch/arm/mach-exynos/built-in.o: In function '__virt_to_phys':
linux/arch/arm/include/asm/memory.h:175: undefined reference to 's3c_cpu_resume'
linux/arch/arm/include/asm/memory.h:175: undefined reference to 's3c_cpu_resume'
linux/arch/arm/include/asm/memory.h:175: undefined reference to 's3c_cpu_resume'
linux/arch/arm/include/asm/memory.h:175: undefined reference to 's3c_cpu_resume'
arch/arm/mach-exynos/built-in.o: In function 'exynos5_init_irq':
linux/arch/arm/mach-exynos/common.c:492: undefined reference to 's3c_irq_wake'
linux/arch/arm/mach-exynos/common.c:492: undefined reference to 's3c_irq_wake'
arch/arm/mach-exynos/built-in.o: In function 'exynos4_init_irq':
linux/arch/arm/mach-exynos/common.c:476: undefined reference to 's3c_irq_wake'
linux/arch/arm/mach-exynos/common.c:476: undefined reference to 's3c_irq_wake'
arch/arm/plat-samsung/built-in.o: In function 's3c_irqext_wake':
linux/arch/arm/plat-samsung/pm.c:144: undefined reference to 's3c_irqwake_eintallow'
linux/arch/arm/plat-samsung/pm.c:144: undefined reference to 's3c_irqwake_eintallow'
arch/arm/plat-samsung/built-in.o: In function 's3c_pm_enter':
linux/arch/arm/plat-samsung/pm.c:263: undefined reference to 's3c_irqwake_intallow'
linux/arch/arm/plat-samsung/pm.c:263: undefined reference to 's3c_irqwake_intallow'
linux/arch/arm/plat-samsung/pm.c:264: undefined reference to 's3c_irqwake_eintallow'
linux/arch/arm/plat-samsung/pm.c:264: undefined reference to 's3c_irqwake_eintallow'
linux/arch/arm/plat-samsung/pm.c:275: undefined reference to 's3c_pm_save_core'
linux/arch/arm/plat-samsung/pm.c:279: undefined reference to 's3c_pm_configure_extint'
linux/arch/arm/plat-samsung/pm.c:310: undefined reference to 's3c_pm_restore_core'
make: *** [vmlinux] Error 1
Signed-off-by: Amit Daniel Kachhap <amit.daniel@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
| -rw-r--r-- | arch/arm/mach-exynos/Makefile | 2 | ||||
| -rw-r--r-- | arch/arm/mach-exynos/common.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-exynos/cpuidle.c | 1 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/Kconfig | 7 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/Makefile | 2 | ||||
| -rw-r--r-- | arch/arm/plat-samsung/include/plat/pm.h | 8 |
6 files changed, 14 insertions, 7 deletions
diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile index e970a7a4e278..53696154aead 100644 --- a/arch/arm/mach-exynos/Makefile +++ b/arch/arm/mach-exynos/Makefile | |||
| @@ -14,7 +14,7 @@ obj- := | |||
| 14 | 14 | ||
| 15 | obj-$(CONFIG_ARCH_EXYNOS) += common.o | 15 | obj-$(CONFIG_ARCH_EXYNOS) += common.o |
| 16 | 16 | ||
| 17 | obj-$(CONFIG_PM) += pm.o | 17 | obj-$(CONFIG_S5P_PM) += pm.o |
| 18 | obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o | 18 | obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o |
| 19 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o | 19 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o |
| 20 | 20 | ||
diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h index 3e156bcddcb4..972490fc09d6 100644 --- a/arch/arm/mach-exynos/common.h +++ b/arch/arm/mach-exynos/common.h | |||
| @@ -97,6 +97,5 @@ struct exynos_pmu_conf { | |||
| 97 | }; | 97 | }; |
| 98 | 98 | ||
| 99 | extern void exynos_sys_powerdown_conf(enum sys_powerdown mode); | 99 | extern void exynos_sys_powerdown_conf(enum sys_powerdown mode); |
| 100 | extern void s3c_cpu_resume(void); | ||
| 101 | 100 | ||
| 102 | #endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */ | 101 | #endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */ |
diff --git a/arch/arm/mach-exynos/cpuidle.c b/arch/arm/mach-exynos/cpuidle.c index 17a18ff3d71e..225ee8431c72 100644 --- a/arch/arm/mach-exynos/cpuidle.c +++ b/arch/arm/mach-exynos/cpuidle.c | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | #include <mach/regs-pmu.h> | 25 | #include <mach/regs-pmu.h> |
| 26 | 26 | ||
| 27 | #include <plat/cpu.h> | 27 | #include <plat/cpu.h> |
| 28 | #include <plat/pm.h> | ||
| 28 | 29 | ||
| 29 | #include "common.h" | 30 | #include "common.h" |
| 30 | 31 | ||
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig index 3dc5cbea86cc..a5b5ff6e68d2 100644 --- a/arch/arm/plat-samsung/Kconfig +++ b/arch/arm/plat-samsung/Kconfig | |||
| @@ -29,6 +29,13 @@ config PLAT_S5P | |||
| 29 | help | 29 | help |
| 30 | Base platform code for Samsung's S5P series SoC. | 30 | Base platform code for Samsung's S5P series SoC. |
| 31 | 31 | ||
| 32 | config SAMSUNG_PM | ||
| 33 | bool | ||
| 34 | depends on PM && (PLAT_S3C24XX || ARCH_S3C64XX || ARCH_S5P64X0 || S5P_PM) | ||
| 35 | default y | ||
| 36 | help | ||
| 37 | Base platform power management code for samsung code | ||
| 38 | |||
| 32 | if PLAT_SAMSUNG | 39 | if PLAT_SAMSUNG |
| 33 | 40 | ||
| 34 | # boot configurations | 41 | # boot configurations |
diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile index 98d07d8fc7a7..199bbe304d02 100644 --- a/arch/arm/plat-samsung/Makefile +++ b/arch/arm/plat-samsung/Makefile | |||
| @@ -51,7 +51,7 @@ obj-$(CONFIG_SAMSUNG_DMADEV) += dma-ops.o | |||
| 51 | 51 | ||
| 52 | # PM support | 52 | # PM support |
| 53 | 53 | ||
| 54 | obj-$(CONFIG_PM) += pm.o | 54 | obj-$(CONFIG_SAMSUNG_PM) += pm.o |
| 55 | obj-$(CONFIG_SAMSUNG_PM_GPIO) += pm-gpio.o | 55 | obj-$(CONFIG_SAMSUNG_PM_GPIO) += pm-gpio.o |
| 56 | obj-$(CONFIG_SAMSUNG_PM_CHECK) += pm-check.o | 56 | obj-$(CONFIG_SAMSUNG_PM_CHECK) += pm-check.o |
| 57 | 57 | ||
diff --git a/arch/arm/plat-samsung/include/plat/pm.h b/arch/arm/plat-samsung/include/plat/pm.h index 5d47ca35cabd..6bc1a8f471e3 100644 --- a/arch/arm/plat-samsung/include/plat/pm.h +++ b/arch/arm/plat-samsung/include/plat/pm.h | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | 19 | ||
| 20 | struct device; | 20 | struct device; |
| 21 | 21 | ||
| 22 | #ifdef CONFIG_PM | 22 | #ifdef CONFIG_SAMSUNG_PM |
| 23 | 23 | ||
| 24 | extern __init int s3c_pm_init(void); | 24 | extern __init int s3c_pm_init(void); |
| 25 | extern __init int s3c64xx_pm_init(void); | 25 | extern __init int s3c64xx_pm_init(void); |
| @@ -58,8 +58,6 @@ extern unsigned char pm_uart_udivslot; /* true to save UART UDIVSLOT */ | |||
| 58 | 58 | ||
| 59 | /* from sleep.S */ | 59 | /* from sleep.S */ |
| 60 | 60 | ||
| 61 | extern void s3c_cpu_resume(void); | ||
| 62 | |||
| 63 | extern int s3c2410_cpu_suspend(unsigned long); | 61 | extern int s3c2410_cpu_suspend(unsigned long); |
| 64 | 62 | ||
| 65 | /* sleep save info */ | 63 | /* sleep save info */ |
| @@ -106,12 +104,14 @@ extern void s3c_pm_do_save(struct sleep_save *ptr, int count); | |||
| 106 | extern void s3c_pm_do_restore(struct sleep_save *ptr, int count); | 104 | extern void s3c_pm_do_restore(struct sleep_save *ptr, int count); |
| 107 | extern void s3c_pm_do_restore_core(struct sleep_save *ptr, int count); | 105 | extern void s3c_pm_do_restore_core(struct sleep_save *ptr, int count); |
| 108 | 106 | ||
| 109 | #ifdef CONFIG_PM | 107 | #ifdef CONFIG_SAMSUNG_PM |
| 110 | extern int s3c_irq_wake(struct irq_data *data, unsigned int state); | 108 | extern int s3c_irq_wake(struct irq_data *data, unsigned int state); |
| 111 | extern int s3c_irqext_wake(struct irq_data *data, unsigned int state); | 109 | extern int s3c_irqext_wake(struct irq_data *data, unsigned int state); |
| 110 | extern void s3c_cpu_resume(void); | ||
| 112 | #else | 111 | #else |
| 113 | #define s3c_irq_wake NULL | 112 | #define s3c_irq_wake NULL |
| 114 | #define s3c_irqext_wake NULL | 113 | #define s3c_irqext_wake NULL |
| 114 | #define s3c_cpu_resume NULL | ||
| 115 | #endif | 115 | #endif |
| 116 | 116 | ||
| 117 | /* PM debug functions */ | 117 | /* PM debug functions */ |
