aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2008-07-03 06:24:30 -0400
committerBen Dooks <ben-linux@fluff.org>2008-07-03 11:51:24 -0400
commit54c272acd16dbfb7b83948b04bf19ba451885284 (patch)
tree8d09e53453f905737411c9ce29fde7642ac98846 /arch/arm
parent9db829f485c553a0e677a165b37f877bf74f36ff (diff)
[ARM] JIVE: Initialise the sleep configuration registers
Ensure that the S3C2412 sleep configuration registers are approriately setup so that the device can safely go to sleep. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-s3c2412/mach-jive.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/arch/arm/mach-s3c2412/mach-jive.c b/arch/arm/mach-s3c2412/mach-jive.c
index 05da51d1ce4e..7cfab868cce3 100644
--- a/arch/arm/mach-s3c2412/mach-jive.c
+++ b/arch/arm/mach-s3c2412/mach-jive.c
@@ -319,6 +319,94 @@ static void __init jive_machine_init(void)
319 sysdev_class_register(&jive_pm_sysclass); 319 sysdev_class_register(&jive_pm_sysclass);
320 sysdev_register(&jive_pm_sysdev); 320 sysdev_register(&jive_pm_sysdev);
321 321
322 /* write our sleep configurations for the IO. Pull down all unused
323 * IO, ensure that we have turned off all peripherals we do not
324 * need, and configure the ones we do need. */
325
326 /* Port B sleep */
327
328 __raw_writel(S3C2412_SLPCON_IN(0) |
329 S3C2412_SLPCON_PULL(1) |
330 S3C2412_SLPCON_HIGH(2) |
331 S3C2412_SLPCON_PULL(3) |
332 S3C2412_SLPCON_PULL(4) |
333 S3C2412_SLPCON_PULL(5) |
334 S3C2412_SLPCON_PULL(6) |
335 S3C2412_SLPCON_HIGH(7) |
336 S3C2412_SLPCON_PULL(8) |
337 S3C2412_SLPCON_PULL(9) |
338 S3C2412_SLPCON_PULL(10), S3C2412_GPBSLPCON);
339
340 /* Port C sleep */
341
342 __raw_writel(S3C2412_SLPCON_PULL(0) |
343 S3C2412_SLPCON_PULL(1) |
344 S3C2412_SLPCON_PULL(2) |
345 S3C2412_SLPCON_PULL(3) |
346 S3C2412_SLPCON_PULL(4) |
347 S3C2412_SLPCON_PULL(5) |
348 S3C2412_SLPCON_LOW(6) |
349 S3C2412_SLPCON_PULL(6) |
350 S3C2412_SLPCON_PULL(7) |
351 S3C2412_SLPCON_PULL(8) |
352 S3C2412_SLPCON_PULL(9) |
353 S3C2412_SLPCON_PULL(10) |
354 S3C2412_SLPCON_PULL(11) |
355 S3C2412_SLPCON_PULL(12) |
356 S3C2412_SLPCON_PULL(13) |
357 S3C2412_SLPCON_PULL(14) |
358 S3C2412_SLPCON_PULL(15), S3C2412_GPCSLPCON);
359
360 /* Port D sleep */
361
362 __raw_writel(S3C2412_SLPCON_ALL_PULL, S3C2412_GPDSLPCON);
363
364 /* Port F sleep */
365
366 __raw_writel(S3C2412_SLPCON_LOW(0) |
367 S3C2412_SLPCON_LOW(1) |
368 S3C2412_SLPCON_LOW(2) |
369 S3C2412_SLPCON_EINT(3) |
370 S3C2412_SLPCON_EINT(4) |
371 S3C2412_SLPCON_EINT(5) |
372 S3C2412_SLPCON_EINT(6) |
373 S3C2412_SLPCON_EINT(7), S3C2412_GPFSLPCON);
374
375 /* Port G sleep */
376
377 __raw_writel(S3C2412_SLPCON_IN(0) |
378 S3C2412_SLPCON_IN(1) |
379 S3C2412_SLPCON_IN(2) |
380 S3C2412_SLPCON_IN(3) |
381 S3C2412_SLPCON_IN(4) |
382 S3C2412_SLPCON_IN(5) |
383 S3C2412_SLPCON_IN(6) |
384 S3C2412_SLPCON_IN(7) |
385 S3C2412_SLPCON_PULL(8) |
386 S3C2412_SLPCON_PULL(9) |
387 S3C2412_SLPCON_IN(10) |
388 S3C2412_SLPCON_PULL(11) |
389 S3C2412_SLPCON_PULL(12) |
390 S3C2412_SLPCON_PULL(13) |
391 S3C2412_SLPCON_IN(14) |
392 S3C2412_SLPCON_PULL(15), S3C2412_GPGSLPCON);
393
394 /* Port H sleep */
395
396 __raw_writel(S3C2412_SLPCON_PULL(0) |
397 S3C2412_SLPCON_PULL(1) |
398 S3C2412_SLPCON_PULL(2) |
399 S3C2412_SLPCON_PULL(3) |
400 S3C2412_SLPCON_PULL(4) |
401 S3C2412_SLPCON_PULL(5) |
402 S3C2412_SLPCON_PULL(6) |
403 S3C2412_SLPCON_IN(7) |
404 S3C2412_SLPCON_IN(8) |
405 S3C2412_SLPCON_PULL(9) |
406 S3C2412_SLPCON_IN(10), S3C2412_GPHSLPCON);
407
408 /* initialise the power management now we've setup everything. */
409
322 s3c2410_pm_init(); 410 s3c2410_pm_init();
323 411
324 s3c_device_nand.dev.platform_data = &jive_nand_info; 412 s3c_device_nand.dev.platform_data = &jive_nand_info;