diff options
author | Ben Dooks <ben-linux@fluff.org> | 2008-12-11 19:24:24 -0500 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2009-05-07 06:04:55 -0400 |
commit | 4b637dc231a96a151ea70c27d86b35c7891e2a7c (patch) | |
tree | 5dbf92b395ca9648035d28e874b9b4de5c115784 /arch/arm/plat-s3c/pm.c | |
parent | 57699e9adf1b44f281d808609b47816804763bfa (diff) |
[ARM] S3C: PM save UART UDIVSLOT if doing PM
Add the facility to save the UART UDIVSLOT register if the UART
state is being saved over suspend.
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'arch/arm/plat-s3c/pm.c')
-rw-r--r-- | arch/arm/plat-s3c/pm.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/arm/plat-s3c/pm.c b/arch/arm/plat-s3c/pm.c index de4c4aa22468..9957b539600f 100644 --- a/arch/arm/plat-s3c/pm.c +++ b/arch/arm/plat-s3c/pm.c | |||
@@ -70,6 +70,8 @@ static inline void s3c_pm_debug_init(void) | |||
70 | 70 | ||
71 | /* Save the UART configurations if we are configured for debug. */ | 71 | /* Save the UART configurations if we are configured for debug. */ |
72 | 72 | ||
73 | unsigned char pm_uart_udivslot; | ||
74 | |||
73 | #ifdef CONFIG_S3C2410_PM_DEBUG | 75 | #ifdef CONFIG_S3C2410_PM_DEBUG |
74 | 76 | ||
75 | struct pm_uart_save uart_save[CONFIG_SERIAL_SAMSUNG_UARTS]; | 77 | struct pm_uart_save uart_save[CONFIG_SERIAL_SAMSUNG_UARTS]; |
@@ -84,6 +86,9 @@ static void s3c_pm_save_uart(unsigned int uart, struct pm_uart_save *save) | |||
84 | save->umcon = __raw_readl(regs + S3C2410_UMCON); | 86 | save->umcon = __raw_readl(regs + S3C2410_UMCON); |
85 | save->ubrdiv = __raw_readl(regs + S3C2410_UBRDIV); | 87 | save->ubrdiv = __raw_readl(regs + S3C2410_UBRDIV); |
86 | 88 | ||
89 | if (pm_uart_udivslot) | ||
90 | save->udivslot = __raw_readl(regs + S3C2443_DIVSLOT); | ||
91 | |||
87 | S3C_PMDBG("UART[%d]: ULCON=%04x, UCON=%04x, UFCON=%04x, UBRDIV=%04x\n", | 92 | S3C_PMDBG("UART[%d]: ULCON=%04x, UCON=%04x, UFCON=%04x, UBRDIV=%04x\n", |
88 | uart, save->ulcon, save->ucon, save->ufcon, save->ubrdiv); | 93 | uart, save->ulcon, save->ucon, save->ufcon, save->ubrdiv); |
89 | } | 94 | } |
@@ -108,6 +113,9 @@ static void s3c_pm_restore_uart(unsigned int uart, struct pm_uart_save *save) | |||
108 | __raw_writel(save->ufcon, regs + S3C2410_UFCON); | 113 | __raw_writel(save->ufcon, regs + S3C2410_UFCON); |
109 | __raw_writel(save->umcon, regs + S3C2410_UMCON); | 114 | __raw_writel(save->umcon, regs + S3C2410_UMCON); |
110 | __raw_writel(save->ubrdiv, regs + S3C2410_UBRDIV); | 115 | __raw_writel(save->ubrdiv, regs + S3C2410_UBRDIV); |
116 | |||
117 | if (pm_uart_udivslot) | ||
118 | __raw_writel(save->udivslot, regs + S3C2443_DIVSLOT); | ||
111 | } | 119 | } |
112 | 120 | ||
113 | static void s3c_pm_restore_uarts(void) | 121 | static void s3c_pm_restore_uarts(void) |