diff options
author | Tomasz Figa <t.figa@samsung.com> | 2014-03-18 07:28:09 +0900 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2014-03-21 04:05:57 +0900 |
commit | de7fe0807c08553b88028d039861a4b8ad04fc62 (patch) | |
tree | 9d8258db8bf587fc8280cc0a143518c8b9e8fd16 | |
parent | 04241069617d4f0bfd9f4a3aeefae13e1e5b55e1 (diff) |
ARM: SAMSUNG: Save UART DIVSLOT register based on SoC type
The only SoC that does not have DIVSLOT register is S3C2410, so instead
of exporting a variable for platforms to set if DIVSLOT register should
be preserved, it's enough to simply check whether we are running on
a S3C2410 instead.
Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
-rw-r--r-- | arch/arm/mach-s3c64xx/pm.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-s5p64x0/pm.c | 1 | ||||
-rw-r--r-- | arch/arm/plat-samsung/include/plat/pm.h | 2 | ||||
-rw-r--r-- | arch/arm/plat-samsung/pm.c | 19 |
4 files changed, 6 insertions, 17 deletions
diff --git a/arch/arm/mach-s3c64xx/pm.c b/arch/arm/mach-s3c64xx/pm.c index b5a66986a52..6b37694fa33 100644 --- a/arch/arm/mach-s3c64xx/pm.c +++ b/arch/arm/mach-s3c64xx/pm.c @@ -332,7 +332,6 @@ static __init int s3c64xx_pm_initcall(void) { pm_cpu_prep = s3c64xx_pm_prepare; pm_cpu_sleep = s3c64xx_cpu_suspend; - pm_uart_udivslot = 1; #ifdef CONFIG_S3C_PM_DEBUG_LED_SMDK gpio_request(S3C64XX_GPN(12), "DEBUG_LED0"); diff --git a/arch/arm/mach-s5p64x0/pm.c b/arch/arm/mach-s5p64x0/pm.c index 861e15cea69..ec8229cee71 100644 --- a/arch/arm/mach-s5p64x0/pm.c +++ b/arch/arm/mach-s5p64x0/pm.c @@ -161,7 +161,6 @@ static int s5p64x0_pm_add(struct device *dev, struct subsys_interface *sif) { pm_cpu_prep = s5p64x0_pm_prepare; pm_cpu_sleep = s5p64x0_cpu_suspend; - pm_uart_udivslot = 1; return 0; } diff --git a/arch/arm/plat-samsung/include/plat/pm.h b/arch/arm/plat-samsung/include/plat/pm.h index ff6063f0d5e..21758c67bcc 100644 --- a/arch/arm/plat-samsung/include/plat/pm.h +++ b/arch/arm/plat-samsung/include/plat/pm.h @@ -54,8 +54,6 @@ extern int (*pm_cpu_sleep)(unsigned long); extern unsigned long s3c_pm_flags; -extern unsigned char pm_uart_udivslot; /* true to save UART UDIVSLOT */ - /* from sleep.S */ extern int s3c2410_cpu_suspend(unsigned long); diff --git a/arch/arm/plat-samsung/pm.c b/arch/arm/plat-samsung/pm.c index ae9baa2d638..3563421d63a 100644 --- a/arch/arm/plat-samsung/pm.c +++ b/arch/arm/plat-samsung/pm.c @@ -24,6 +24,8 @@ #include <asm/cacheflush.h> #include <asm/suspend.h> +#include <plat/cpu.h> + #ifdef CONFIG_SAMSUNG_ATAGS #include <mach/hardware.h> #include <mach/map.h> @@ -70,17 +72,6 @@ static inline void s3c_pm_debug_init(void) s3c_pm_debug_init_uart(); } -#else -#define s3c_pm_debug_init() do { } while(0) - -#endif /* CONFIG_SAMSUNG_PM_DEBUG */ - -/* Save the UART configurations if we are configured for debug. */ - -unsigned char pm_uart_udivslot; - -#ifdef CONFIG_SAMSUNG_PM_DEBUG - static struct pm_uart_save uart_save; static void s3c_pm_save_uart(unsigned int uart, struct pm_uart_save *save) @@ -93,7 +84,7 @@ static void s3c_pm_save_uart(unsigned int uart, struct pm_uart_save *save) save->umcon = __raw_readl(regs + S3C2410_UMCON); save->ubrdiv = __raw_readl(regs + S3C2410_UBRDIV); - if (pm_uart_udivslot) + if (!soc_is_s3c2410()) save->udivslot = __raw_readl(regs + S3C2443_DIVSLOT); S3C_PMDBG("UART[%d]: ULCON=%04x, UCON=%04x, UFCON=%04x, UBRDIV=%04x\n", @@ -117,7 +108,7 @@ static void s3c_pm_restore_uart(unsigned int uart, struct pm_uart_save *save) __raw_writel(save->umcon, regs + S3C2410_UMCON); __raw_writel(save->ubrdiv, regs + S3C2410_UBRDIV); - if (pm_uart_udivslot) + if (!soc_is_s3c2410()) __raw_writel(save->udivslot, regs + S3C2443_DIVSLOT); } @@ -126,6 +117,8 @@ static void s3c_pm_restore_uarts(void) s3c_pm_restore_uart(CONFIG_DEBUG_S3C_UART, &uart_save); } #else +#define s3c_pm_debug_init() do { } while (0) + static void s3c_pm_save_uarts(void) { } static void s3c_pm_restore_uarts(void) { } #endif |