aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/mach-common/dpmc.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/blackfin/mach-common/dpmc.S')
-rw-r--r--arch/blackfin/mach-common/dpmc.S32
1 files changed, 15 insertions, 17 deletions
diff --git a/arch/blackfin/mach-common/dpmc.S b/arch/blackfin/mach-common/dpmc.S
index 301ac1b6681f..b82c096e1980 100644
--- a/arch/blackfin/mach-common/dpmc.S
+++ b/arch/blackfin/mach-common/dpmc.S
@@ -175,7 +175,7 @@ ENTRY(_sleep_mode)
175 call _set_sic_iwr; 175 call _set_sic_iwr;
176 176
177 R0 = 0xFFFF (Z); 177 R0 = 0xFFFF (Z);
178 call _set_rtc_istat 178 call _set_rtc_istat;
179 179
180 P0.H = hi(PLL_CTL); 180 P0.H = hi(PLL_CTL);
181 P0.L = lo(PLL_CTL); 181 P0.L = lo(PLL_CTL);
@@ -213,7 +213,7 @@ ENTRY(_hibernate_mode)
213 call _set_sic_iwr; 213 call _set_sic_iwr;
214 214
215 R0 = 0xFFFF (Z); 215 R0 = 0xFFFF (Z);
216 call _set_rtc_istat 216 call _set_rtc_istat;
217 217
218 P0.H = hi(VR_CTL); 218 P0.H = hi(VR_CTL);
219 P0.L = lo(VR_CTL); 219 P0.L = lo(VR_CTL);
@@ -288,23 +288,22 @@ ENTRY(_sleep_deeper)
288 P3 = R0; 288 P3 = R0;
289 R0 = IWR_ENABLE(0); 289 R0 = IWR_ENABLE(0);
290 call _set_sic_iwr; 290 call _set_sic_iwr;
291 call _set_dram_srfs; 291 call _set_dram_srfs; /* Set SDRAM Self Refresh */
292 292
293 /* Clear all the interrupts,bits sticky */ 293 /* Clear all the interrupts,bits sticky */
294 R0 = 0xFFFF (Z); 294 R0 = 0xFFFF (Z);
295 call _set_rtc_istat 295 call _set_rtc_istat;
296
297 P0.H = hi(PLL_DIV); 296 P0.H = hi(PLL_DIV);
298 P0.L = lo(PLL_DIV); 297 P0.L = lo(PLL_DIV);
299 R6 = W[P0](z); 298 R6 = W[P0](z);
300 R0.L = 0xF; 299 R0.L = 0xF;
301 W[P0] = R0.l; 300 W[P0] = R0.l; /* Set Max VCO to SCLK divider */
302 301
303 P0.H = hi(PLL_CTL); 302 P0.H = hi(PLL_CTL);
304 P0.L = lo(PLL_CTL); 303 P0.L = lo(PLL_CTL);
305 R5 = W[P0](z); 304 R5 = W[P0](z);
306 R0.L = (CONFIG_MIN_VCO_HZ/CONFIG_CLKIN_HZ) << 9; 305 R0.L = (CONFIG_MIN_VCO_HZ/CONFIG_CLKIN_HZ) << 9;
307 W[P0] = R0.l; 306 W[P0] = R0.l; /* Set Min CLKIN to VCO multiplier */
308 307
309 SSYNC; 308 SSYNC;
310 IDLE; 309 IDLE;
@@ -320,29 +319,28 @@ ENTRY(_sleep_deeper)
320 R1 = R1|R2; 319 R1 = R1|R2;
321 320
322 R2 = DEPOSIT(R7, R1); 321 R2 = DEPOSIT(R7, R1);
323 W[P0] = R2; 322 W[P0] = R2; /* Set Min Core Voltage */
324 323
325 SSYNC; 324 SSYNC;
326 IDLE; 325 IDLE;
327 326
328 call _test_pll_locked; 327 call _test_pll_locked;
329 328
329 R0 = P3;
330 call _set_sic_iwr; /* Set Awake from IDLE */
331
330 P0.H = hi(PLL_CTL); 332 P0.H = hi(PLL_CTL);
331 P0.L = lo(PLL_CTL); 333 P0.L = lo(PLL_CTL);
332 R0 = W[P0](z); 334 R0 = W[P0](z);
333 BITSET (R0, 3); 335 BITSET (R0, 3);
334 W[P0] = R0.L; 336 W[P0] = R0.L; /* Turn CCLK OFF */
335
336 R0 = P3;
337 call _set_sic_iwr;
338
339 SSYNC; 337 SSYNC;
340 IDLE; 338 IDLE;
341 339
342 call _test_pll_locked; 340 call _test_pll_locked;
343 341
344 R0 = IWR_ENABLE(0); 342 R0 = IWR_ENABLE(0);
345 call _set_sic_iwr; 343 call _set_sic_iwr; /* Set Awake from IDLE PLL */
346 344
347 P0.H = hi(VR_CTL); 345 P0.H = hi(VR_CTL);
348 P0.L = lo(VR_CTL); 346 P0.L = lo(VR_CTL);
@@ -355,15 +353,15 @@ ENTRY(_sleep_deeper)
355 353
356 P0.H = hi(PLL_DIV); 354 P0.H = hi(PLL_DIV);
357 P0.L = lo(PLL_DIV); 355 P0.L = lo(PLL_DIV);
358 W[P0]= R6; 356 W[P0]= R6; /* Restore CCLK and SCLK divider */
359 357
360 P0.H = hi(PLL_CTL); 358 P0.H = hi(PLL_CTL);
361 P0.L = lo(PLL_CTL); 359 P0.L = lo(PLL_CTL);
362 w[p0] = R5; 360 w[p0] = R5; /* Restore VCO multiplier */
363 IDLE; 361 IDLE;
364 call _test_pll_locked; 362 call _test_pll_locked;
365 363
366 call _unset_dram_srfs; 364 call _unset_dram_srfs; /* SDRAM Self Refresh Off */
367 365
368 STI R4; 366 STI R4;
369 367