aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-omap
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2009-05-26 17:41:35 -0400
committerTony Lindgren <tony@atomide.com>2009-05-26 17:41:35 -0400
commit88b6f7eb9b4a06fbfe27f2d98e249577f4cfdaef (patch)
tree9ef0d7ecd3e0551ca4d13ac0134aeb3ecd8558c7 /arch/arm/plat-omap
parent8f9ccfeeb2cecb54dd093119291ab271ab0fd94a (diff)
parent7971687094ef48695aa56a0c03416b609bd4d1fd (diff)
Merge branch 'omap-clock-upstream' of git://git.pwsan.com/linux-2.6 into for-next
Diffstat (limited to 'arch/arm/plat-omap')
-rw-r--r--arch/arm/plat-omap/clock.c4
-rw-r--r--arch/arm/plat-omap/include/mach/clock.h2
-rw-r--r--arch/arm/plat-omap/include/mach/sram.h6
-rw-r--r--arch/arm/plat-omap/sram.c16
4 files changed, 20 insertions, 8 deletions
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
index 29efc279287..508c96ab24e 100644
--- a/arch/arm/plat-omap/clock.c
+++ b/arch/arm/plat-omap/clock.c
@@ -240,13 +240,13 @@ void recalculate_root_clocks(void)
240} 240}
241 241
242/** 242/**
243 * clk_init_one - initialize any fields in the struct clk before clk init 243 * clk_preinit - initialize any fields in the struct clk before clk init
244 * @clk: struct clk * to initialize 244 * @clk: struct clk * to initialize
245 * 245 *
246 * Initialize any struct clk fields needed before normal clk initialization 246 * Initialize any struct clk fields needed before normal clk initialization
247 * can run. No return value. 247 * can run. No return value.
248 */ 248 */
249void clk_init_one(struct clk *clk) 249void clk_preinit(struct clk *clk)
250{ 250{
251 INIT_LIST_HEAD(&clk->children); 251 INIT_LIST_HEAD(&clk->children);
252} 252}
diff --git a/arch/arm/plat-omap/include/mach/clock.h b/arch/arm/plat-omap/include/mach/clock.h
index 073a2c5569f..d7bd19c8ce3 100644
--- a/arch/arm/plat-omap/include/mach/clock.h
+++ b/arch/arm/plat-omap/include/mach/clock.h
@@ -119,7 +119,7 @@ struct clk_functions {
119extern unsigned int mpurate; 119extern unsigned int mpurate;
120 120
121extern int clk_init(struct clk_functions *custom_clocks); 121extern int clk_init(struct clk_functions *custom_clocks);
122extern void clk_init_one(struct clk *clk); 122extern void clk_preinit(struct clk *clk);
123extern int clk_register(struct clk *clk); 123extern int clk_register(struct clk *clk);
124extern void clk_reparent(struct clk *child, struct clk *parent); 124extern void clk_reparent(struct clk *child, struct clk *parent);
125extern void clk_unregister(struct clk *clk); 125extern void clk_unregister(struct clk *clk);
diff --git a/arch/arm/plat-omap/include/mach/sram.h b/arch/arm/plat-omap/include/mach/sram.h
index ab35d622dcf..dca7c16ae90 100644
--- a/arch/arm/plat-omap/include/mach/sram.h
+++ b/arch/arm/plat-omap/include/mach/sram.h
@@ -23,7 +23,8 @@ extern u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass);
23 23
24extern u32 omap3_configure_core_dpll(u32 sdrc_rfr_ctrl, 24extern u32 omap3_configure_core_dpll(u32 sdrc_rfr_ctrl,
25 u32 sdrc_actim_ctrla, 25 u32 sdrc_actim_ctrla,
26 u32 sdrc_actim_ctrlb, u32 m2); 26 u32 sdrc_actim_ctrlb, u32 m2,
27 u32 unlock_dll);
27 28
28/* Do not use these */ 29/* Do not use these */
29extern void omap1_sram_reprogram_clock(u32 ckctl, u32 dpllctl); 30extern void omap1_sram_reprogram_clock(u32 ckctl, u32 dpllctl);
@@ -60,7 +61,8 @@ extern unsigned long omap243x_sram_reprogram_sdrc_sz;
60 61
61extern u32 omap3_sram_configure_core_dpll(u32 sdrc_rfr_ctrl, 62extern u32 omap3_sram_configure_core_dpll(u32 sdrc_rfr_ctrl,
62 u32 sdrc_actim_ctrla, 63 u32 sdrc_actim_ctrla,
63 u32 sdrc_actim_ctrlb, u32 m2); 64 u32 sdrc_actim_ctrlb, u32 m2,
65 u32 unlock_dll);
64extern unsigned long omap3_sram_configure_core_dpll_sz; 66extern unsigned long omap3_sram_configure_core_dpll_sz;
65 67
66#endif 68#endif
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c
index e1493d83a7c..4f0145d2624 100644
--- a/arch/arm/plat-omap/sram.c
+++ b/arch/arm/plat-omap/sram.c
@@ -201,6 +201,15 @@ void __init omap_map_sram(void)
201 base = OMAP3_SRAM_PA; 201 base = OMAP3_SRAM_PA;
202 base = ROUND_DOWN(base, PAGE_SIZE); 202 base = ROUND_DOWN(base, PAGE_SIZE);
203 omap_sram_io_desc[0].pfn = __phys_to_pfn(base); 203 omap_sram_io_desc[0].pfn = __phys_to_pfn(base);
204
205 /*
206 * SRAM must be marked as non-cached on OMAP3 since the
207 * CORE DPLL M2 divider change code (in SRAM) runs with the
208 * SDRAM controller disabled, and if it is marked cached,
209 * the ARM may attempt to write cache lines back to SDRAM
210 * which will cause the system to hang.
211 */
212 omap_sram_io_desc[0].type = MT_MEMORY_NONCACHED;
204 } 213 }
205 214
206 omap_sram_io_desc[0].length = 1024 * 1024; /* Use section desc */ 215 omap_sram_io_desc[0].length = 1024 * 1024; /* Use section desc */
@@ -343,14 +352,15 @@ static inline int omap243x_sram_init(void)
343static u32 (*_omap3_sram_configure_core_dpll)(u32 sdrc_rfr_ctrl, 352static u32 (*_omap3_sram_configure_core_dpll)(u32 sdrc_rfr_ctrl,
344 u32 sdrc_actim_ctrla, 353 u32 sdrc_actim_ctrla,
345 u32 sdrc_actim_ctrlb, 354 u32 sdrc_actim_ctrlb,
346 u32 m2); 355 u32 m2, u32 unlock_dll);
347u32 omap3_configure_core_dpll(u32 sdrc_rfr_ctrl, u32 sdrc_actim_ctrla, 356u32 omap3_configure_core_dpll(u32 sdrc_rfr_ctrl, u32 sdrc_actim_ctrla,
348 u32 sdrc_actim_ctrlb, u32 m2) 357 u32 sdrc_actim_ctrlb, u32 m2, u32 unlock_dll)
349{ 358{
350 BUG_ON(!_omap3_sram_configure_core_dpll); 359 BUG_ON(!_omap3_sram_configure_core_dpll);
351 return _omap3_sram_configure_core_dpll(sdrc_rfr_ctrl, 360 return _omap3_sram_configure_core_dpll(sdrc_rfr_ctrl,
352 sdrc_actim_ctrla, 361 sdrc_actim_ctrla,
353 sdrc_actim_ctrlb, m2); 362 sdrc_actim_ctrlb, m2,
363 unlock_dll);
354} 364}
355 365
356/* REVISIT: Should this be same as omap34xx_sram_init() after off-idle? */ 366/* REVISIT: Should this be same as omap34xx_sram_init() after off-idle? */