diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-14 16:42:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-14 16:42:43 -0400 |
commit | 2cf4d4514d5b43c1f3b64bd0ec8b9853bde8f1dc (patch) | |
tree | e35a625496acc6ac852846d40b8851186b9d1ac4 /arch/arm/mach-omap2/sdrc.c | |
parent | 44b7532b8b464f606053562400719c9c21276037 (diff) | |
parent | ce53895a5d24e0ee19fb92f56c17323fb4c9ab27 (diff) |
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (417 commits)
MAINTAINERS: EB110ATX is not ebsa110
MAINTAINERS: update Eric Miao's email address and status
fb: add support of LCD display controller on pxa168/910 (base layer)
[ARM] 5552/1: ep93xx get_uart_rate(): use EP93XX_SYSCON_PWRCNT and EP93XX_SYSCON_PWRCN
[ARM] pxa/sharpsl_pm: zaurus needs generic pxa suspend/resume routines
[ARM] 5544/1: Trust PrimeCell resource sizes
[ARM] pxa/sharpsl_pm: cleanup of gpio-related code.
[ARM] pxa/sharpsl_pm: drop set_irq_type calls
[ARM] pxa/sharpsl_pm: merge pxa-specific code into generic one
[ARM] pxa/sharpsl_pm: merge the two sharpsl_pm.c since it's now pxa specific
[ARM] sa1100: remove unused collie_pm.c
[ARM] pxa: fix the conflicting non-static declarations of global_gpios[]
[ARM] 5550/1: Add default configure file for w90p910 platform
[ARM] 5549/1: Add clock api for w90p910 platform.
[ARM] 5548/1: Add gpio api for w90p910 platform
[ARM] 5551/1: Add multi-function pin api for w90p910 platform.
[ARM] Make ARM_VIC_NR depend on ARM_VIC
[ARM] 5546/1: ARM PL022 SSP/SPI driver v3
ARM: OMAP4: SMP: Update defconfig for OMAP4430
ARM: OMAP4: SMP: Enable SMP support for OMAP4430
...
Diffstat (limited to 'arch/arm/mach-omap2/sdrc.c')
-rw-r--r-- | arch/arm/mach-omap2/sdrc.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/sdrc.c b/arch/arm/mach-omap2/sdrc.c index 2a30060cb4b7..2045441e8385 100644 --- a/arch/arm/mach-omap2/sdrc.c +++ b/arch/arm/mach-omap2/sdrc.c | |||
@@ -37,6 +37,10 @@ static struct omap_sdrc_params *sdrc_init_params; | |||
37 | void __iomem *omap2_sdrc_base; | 37 | void __iomem *omap2_sdrc_base; |
38 | void __iomem *omap2_sms_base; | 38 | void __iomem *omap2_sms_base; |
39 | 39 | ||
40 | /* SDRC_POWER register bits */ | ||
41 | #define SDRC_POWER_EXTCLKDIS_SHIFT 3 | ||
42 | #define SDRC_POWER_PWDENA_SHIFT 2 | ||
43 | #define SDRC_POWER_PAGEPOLICY_SHIFT 0 | ||
40 | 44 | ||
41 | /** | 45 | /** |
42 | * omap2_sdrc_get_params - return SDRC register values for a given clock rate | 46 | * omap2_sdrc_get_params - return SDRC register values for a given clock rate |
@@ -56,9 +60,12 @@ struct omap_sdrc_params *omap2_sdrc_get_params(unsigned long r) | |||
56 | { | 60 | { |
57 | struct omap_sdrc_params *sp; | 61 | struct omap_sdrc_params *sp; |
58 | 62 | ||
63 | if (!sdrc_init_params) | ||
64 | return NULL; | ||
65 | |||
59 | sp = sdrc_init_params; | 66 | sp = sdrc_init_params; |
60 | 67 | ||
61 | while (sp->rate != r) | 68 | while (sp->rate && sp->rate != r) |
62 | sp++; | 69 | sp++; |
63 | 70 | ||
64 | if (!sp->rate) | 71 | if (!sp->rate) |
@@ -74,7 +81,14 @@ void __init omap2_set_globals_sdrc(struct omap_globals *omap2_globals) | |||
74 | omap2_sms_base = omap2_globals->sms; | 81 | omap2_sms_base = omap2_globals->sms; |
75 | } | 82 | } |
76 | 83 | ||
77 | /* turn on smart idle modes for SDRAM scheduler and controller */ | 84 | /** |
85 | * omap2_sdrc_init - initialize SMS, SDRC devices on boot | ||
86 | * @sp: pointer to a null-terminated list of struct omap_sdrc_params | ||
87 | * | ||
88 | * Turn on smart idle modes for SDRAM scheduler and controller. | ||
89 | * Program a known-good configuration for the SDRC to deal with buggy | ||
90 | * bootloaders. | ||
91 | */ | ||
78 | void __init omap2_sdrc_init(struct omap_sdrc_params *sp) | 92 | void __init omap2_sdrc_init(struct omap_sdrc_params *sp) |
79 | { | 93 | { |
80 | u32 l; | 94 | u32 l; |
@@ -90,4 +104,10 @@ void __init omap2_sdrc_init(struct omap_sdrc_params *sp) | |||
90 | sdrc_write_reg(l, SDRC_SYSCONFIG); | 104 | sdrc_write_reg(l, SDRC_SYSCONFIG); |
91 | 105 | ||
92 | sdrc_init_params = sp; | 106 | sdrc_init_params = sp; |
107 | |||
108 | /* XXX Enable SRFRONIDLEREQ here also? */ | ||
109 | l = (1 << SDRC_POWER_EXTCLKDIS_SHIFT) | | ||
110 | (1 << SDRC_POWER_PWDENA_SHIFT) | | ||
111 | (1 << SDRC_POWER_PAGEPOLICY_SHIFT); | ||
112 | sdrc_write_reg(l, SDRC_POWER); | ||
93 | } | 113 | } |