Commit 8a917d2fc80b7c45ce0146ff134168646274a9bd
Committed by
Kevin Hilman
1 parent
ba50ea7eb9
Exists in
master
and in
4 other branches
ARM: OMAP: SMS: save/restore of SMS_SYSCONFIG for off-mode
The SMS_SYSCONFIG register gets reset in off mode, added a save/restore mechanism for that. Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@digia.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Showing 3 changed files with 30 additions and 0 deletions Side-by-side Diff
arch/arm/mach-omap2/pm34xx.c
arch/arm/mach-omap2/sdrc.c
... | ... | @@ -37,12 +37,38 @@ |
37 | 37 | void __iomem *omap2_sdrc_base; |
38 | 38 | void __iomem *omap2_sms_base; |
39 | 39 | |
40 | +struct omap2_sms_regs { | |
41 | + u32 sms_sysconfig; | |
42 | +}; | |
43 | + | |
44 | +static struct omap2_sms_regs sms_context; | |
45 | + | |
40 | 46 | /* SDRC_POWER register bits */ |
41 | 47 | #define SDRC_POWER_EXTCLKDIS_SHIFT 3 |
42 | 48 | #define SDRC_POWER_PWDENA_SHIFT 2 |
43 | 49 | #define SDRC_POWER_PAGEPOLICY_SHIFT 0 |
44 | 50 | |
45 | 51 | /** |
52 | + * omap2_sms_save_context - Save SMS registers | |
53 | + * | |
54 | + * Save SMS registers that need to be restored after off mode. | |
55 | + */ | |
56 | +void omap2_sms_save_context(void) | |
57 | +{ | |
58 | + sms_context.sms_sysconfig = sms_read_reg(SMS_SYSCONFIG); | |
59 | +} | |
60 | + | |
61 | +/** | |
62 | + * omap2_sms_restore_context - Restore SMS registers | |
63 | + * | |
64 | + * Restore SMS registers that need to be Restored after off mode. | |
65 | + */ | |
66 | +void omap2_sms_restore_context(void) | |
67 | +{ | |
68 | + sms_write_reg(sms_context.sms_sysconfig, SMS_SYSCONFIG); | |
69 | +} | |
70 | + | |
71 | +/** | |
46 | 72 | * omap2_sdrc_get_params - return SDRC register values for a given clock rate |
47 | 73 | * @r: SDRC clock rate (in Hz) |
48 | 74 | * @sdrc_cs0: chip select 0 ram timings ** |
... | ... | @@ -132,5 +158,6 @@ |
132 | 158 | l = (1 << SDRC_POWER_EXTCLKDIS_SHIFT) | |
133 | 159 | (1 << SDRC_POWER_PAGEPOLICY_SHIFT); |
134 | 160 | sdrc_write_reg(l, SDRC_POWER); |
161 | + omap2_sms_save_context(); | |
135 | 162 | } |
arch/arm/plat-omap/include/plat/sdrc.h