diff options
Diffstat (limited to 'arch/arm/mach-pxa/smemc.c')
-rw-r--r-- | arch/arm/mach-pxa/smemc.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/arm/mach-pxa/smemc.c b/arch/arm/mach-pxa/smemc.c index 79923058d10f..f38aa890b2c9 100644 --- a/arch/arm/mach-pxa/smemc.c +++ b/arch/arm/mach-pxa/smemc.c | |||
@@ -40,6 +40,8 @@ static void pxa3xx_smemc_resume(void) | |||
40 | __raw_writel(csadrcfg[1], CSADRCFG1); | 40 | __raw_writel(csadrcfg[1], CSADRCFG1); |
41 | __raw_writel(csadrcfg[2], CSADRCFG2); | 41 | __raw_writel(csadrcfg[2], CSADRCFG2); |
42 | __raw_writel(csadrcfg[3], CSADRCFG3); | 42 | __raw_writel(csadrcfg[3], CSADRCFG3); |
43 | /* CSMSADRCFG wakes up in its default state (0), so we need to set it */ | ||
44 | __raw_writel(0x2, CSMSADRCFG); | ||
43 | } | 45 | } |
44 | 46 | ||
45 | static struct syscore_ops smemc_syscore_ops = { | 47 | static struct syscore_ops smemc_syscore_ops = { |
@@ -49,8 +51,19 @@ static struct syscore_ops smemc_syscore_ops = { | |||
49 | 51 | ||
50 | static int __init smemc_init(void) | 52 | static int __init smemc_init(void) |
51 | { | 53 | { |
52 | if (cpu_is_pxa3xx()) | 54 | if (cpu_is_pxa3xx()) { |
55 | /* | ||
56 | * The only documentation we have on the | ||
57 | * Chip Select Configuration Register (CSMSADRCFG) is that | ||
58 | * it must be programmed to 0x2. | ||
59 | * Moreover, in the bit definitions, the second bit | ||
60 | * (CSMSADRCFG[1]) is called "SETALWAYS". | ||
61 | * Other bits are reserved in this register. | ||
62 | */ | ||
63 | __raw_writel(0x2, CSMSADRCFG); | ||
64 | |||
53 | register_syscore_ops(&smemc_syscore_ops); | 65 | register_syscore_ops(&smemc_syscore_ops); |
66 | } | ||
54 | 67 | ||
55 | return 0; | 68 | return 0; |
56 | } | 69 | } |