diff options
author | Abhilash Kesavan <a.kesavan@samsung.com> | 2014-11-06 19:27:33 -0500 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2014-11-21 08:49:45 -0500 |
commit | af2e0a0754accf2276d58d6dfaa15563133130aa (patch) | |
tree | c0dc13a58af2ca6a61fd6b4c9a261f5c8d82f621 | |
parent | 6b7bfd8292ab27180662bcba175e7a3822486c2d (diff) |
ARM: EXYNOS: Add PMU support for exynos5420
Adds initial PMU settings for exynos5420. This is required for
future S2R and Switching support.
Signed-off-by: Thomas Abraham <thomas.ab@samsung.com>
Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
Signed-off-by: Vikas Sajjan <vikas.sajjan@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
-rw-r--r-- | arch/arm/mach-exynos/pmu.c | 287 | ||||
-rw-r--r-- | arch/arm/mach-exynos/regs-pmu.h | 227 |
2 files changed, 514 insertions, 0 deletions
diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c index 88d3f793e267..6c8a76dd5494 100644 --- a/arch/arm/mach-exynos/pmu.c +++ b/arch/arm/mach-exynos/pmu.c | |||
@@ -12,6 +12,8 @@ | |||
12 | #include <linux/io.h> | 12 | #include <linux/io.h> |
13 | #include <linux/of.h> | 13 | #include <linux/of.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/delay.h> | ||
16 | |||
15 | 17 | ||
16 | #include "exynos-pmu.h" | 18 | #include "exynos-pmu.h" |
17 | #include "regs-pmu.h" | 19 | #include "regs-pmu.h" |
@@ -348,6 +350,151 @@ static const struct exynos_pmu_conf exynos5250_pmu_config[] = { | |||
348 | { PMU_TABLE_END,}, | 350 | { PMU_TABLE_END,}, |
349 | }; | 351 | }; |
350 | 352 | ||
353 | static struct exynos_pmu_conf exynos5420_pmu_config[] = { | ||
354 | /* { .offset = offset, .val = { AFTR, LPA, SLEEP } */ | ||
355 | { EXYNOS5_ARM_CORE0_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
356 | { EXYNOS5_DIS_IRQ_ARM_CORE0_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
357 | { EXYNOS5_DIS_IRQ_ARM_CORE0_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
358 | { EXYNOS5_ARM_CORE1_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
359 | { EXYNOS5_DIS_IRQ_ARM_CORE1_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
360 | { EXYNOS5_DIS_IRQ_ARM_CORE1_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
361 | { EXYNOS5420_ARM_CORE2_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
362 | { EXYNOS5420_DIS_IRQ_ARM_CORE2_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
363 | { EXYNOS5420_DIS_IRQ_ARM_CORE2_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
364 | { EXYNOS5420_ARM_CORE3_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
365 | { EXYNOS5420_DIS_IRQ_ARM_CORE3_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
366 | { EXYNOS5420_DIS_IRQ_ARM_CORE3_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
367 | { EXYNOS5420_KFC_CORE0_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
368 | { EXYNOS5420_DIS_IRQ_KFC_CORE0_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
369 | { EXYNOS5420_DIS_IRQ_KFC_CORE0_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
370 | { EXYNOS5420_KFC_CORE1_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
371 | { EXYNOS5420_DIS_IRQ_KFC_CORE1_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
372 | { EXYNOS5420_DIS_IRQ_KFC_CORE1_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
373 | { EXYNOS5420_KFC_CORE2_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
374 | { EXYNOS5420_DIS_IRQ_KFC_CORE2_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
375 | { EXYNOS5420_DIS_IRQ_KFC_CORE2_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
376 | { EXYNOS5420_KFC_CORE3_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
377 | { EXYNOS5420_DIS_IRQ_KFC_CORE3_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
378 | { EXYNOS5420_DIS_IRQ_KFC_CORE3_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
379 | { EXYNOS5_ISP_ARM_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
380 | { EXYNOS5_DIS_IRQ_ISP_ARM_LOCAL_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
381 | { EXYNOS5_DIS_IRQ_ISP_ARM_CENTRAL_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
382 | { EXYNOS5420_ARM_COMMON_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
383 | { EXYNOS5420_KFC_COMMON_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
384 | { EXYNOS5_ARM_L2_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
385 | { EXYNOS5420_KFC_L2_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
386 | { EXYNOS5_CMU_ACLKSTOP_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
387 | { EXYNOS5_CMU_SCLKSTOP_SYS_PWR_REG, { 0x1, 0x0, 0x1} }, | ||
388 | { EXYNOS5_CMU_RESET_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
389 | { EXYNOS5_CMU_ACLKSTOP_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
390 | { EXYNOS5_CMU_SCLKSTOP_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x1} }, | ||
391 | { EXYNOS5_CMU_RESET_SYSMEM_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
392 | { EXYNOS5_DRAM_FREQ_DOWN_SYS_PWR_REG, { 0x1, 0x0, 0x1} }, | ||
393 | { EXYNOS5_DDRPHY_DLLOFF_SYS_PWR_REG, { 0x1, 0x1, 0x1} }, | ||
394 | { EXYNOS5_DDRPHY_DLLLOCK_SYS_PWR_REG, { 0x1, 0x0, 0x1} }, | ||
395 | { EXYNOS5_APLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
396 | { EXYNOS5_MPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
397 | { EXYNOS5_VPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
398 | { EXYNOS5_EPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
399 | { EXYNOS5_BPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
400 | { EXYNOS5_CPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
401 | { EXYNOS5420_DPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
402 | { EXYNOS5420_IPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
403 | { EXYNOS5420_KPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
404 | { EXYNOS5_MPLLUSER_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
405 | { EXYNOS5_BPLLUSER_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
406 | { EXYNOS5420_RPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
407 | { EXYNOS5420_SPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
408 | { EXYNOS5_TOP_BUS_SYS_PWR_REG, { 0x3, 0x0, 0x0} }, | ||
409 | { EXYNOS5_TOP_RETENTION_SYS_PWR_REG, { 0x1, 0x1, 0x1} }, | ||
410 | { EXYNOS5_TOP_PWR_SYS_PWR_REG, { 0x3, 0x3, 0x0} }, | ||
411 | { EXYNOS5_TOP_BUS_SYSMEM_SYS_PWR_REG, { 0x3, 0x0, 0x0} }, | ||
412 | { EXYNOS5_TOP_RETENTION_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x1} }, | ||
413 | { EXYNOS5_TOP_PWR_SYSMEM_SYS_PWR_REG, { 0x3, 0x0, 0x0} }, | ||
414 | { EXYNOS5_LOGIC_RESET_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
415 | { EXYNOS5_OSCCLK_GATE_SYS_PWR_REG, { 0x1, 0x0, 0x1} }, | ||
416 | { EXYNOS5_LOGIC_RESET_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
417 | { EXYNOS5_OSCCLK_GATE_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
418 | { EXYNOS5420_INTRAM_MEM_SYS_PWR_REG, { 0x3, 0x0, 0x3} }, | ||
419 | { EXYNOS5420_INTROM_MEM_SYS_PWR_REG, { 0x3, 0x0, 0x3} }, | ||
420 | { EXYNOS5_PAD_RETENTION_DRAM_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
421 | { EXYNOS5_PAD_RETENTION_MAU_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
422 | { EXYNOS5420_PAD_RETENTION_JTAG_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
423 | { EXYNOS5420_PAD_RETENTION_DRAM_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
424 | { EXYNOS5420_PAD_RETENTION_UART_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
425 | { EXYNOS5420_PAD_RETENTION_MMC0_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
426 | { EXYNOS5420_PAD_RETENTION_MMC1_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
427 | { EXYNOS5420_PAD_RETENTION_MMC2_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
428 | { EXYNOS5420_PAD_RETENTION_HSI_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
429 | { EXYNOS5420_PAD_RETENTION_EBIA_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
430 | { EXYNOS5420_PAD_RETENTION_EBIB_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
431 | { EXYNOS5420_PAD_RETENTION_SPI_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
432 | { EXYNOS5420_PAD_RETENTION_DRAM_COREBLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
433 | { EXYNOS5_PAD_ISOLATION_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
434 | { EXYNOS5_PAD_ISOLATION_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
435 | { EXYNOS5_PAD_ALV_SEL_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
436 | { EXYNOS5_XUSBXTI_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
437 | { EXYNOS5_XXTI_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
438 | { EXYNOS5_EXT_REGULATOR_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
439 | { EXYNOS5_GPIO_MODE_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
440 | { EXYNOS5_GPIO_MODE_SYSMEM_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
441 | { EXYNOS5_GPIO_MODE_MAU_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
442 | { EXYNOS5_TOP_ASB_RESET_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, | ||
443 | { EXYNOS5_TOP_ASB_ISOLATION_SYS_PWR_REG, { 0x1, 0x0, 0x0} }, | ||
444 | { EXYNOS5_GSCL_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
445 | { EXYNOS5_ISP_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
446 | { EXYNOS5_MFC_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
447 | { EXYNOS5_G3D_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
448 | { EXYNOS5420_DISP1_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
449 | { EXYNOS5420_MAU_SYS_PWR_REG, { 0x7, 0x7, 0x0} }, | ||
450 | { EXYNOS5420_G2D_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
451 | { EXYNOS5420_MSC_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
452 | { EXYNOS5420_FSYS_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
453 | { EXYNOS5420_FSYS2_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
454 | { EXYNOS5420_PSGEN_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
455 | { EXYNOS5420_PERIC_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
456 | { EXYNOS5420_WCORE_SYS_PWR_REG, { 0x7, 0x0, 0x0} }, | ||
457 | { EXYNOS5_CMU_CLKSTOP_GSCL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
458 | { EXYNOS5_CMU_CLKSTOP_ISP_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
459 | { EXYNOS5_CMU_CLKSTOP_MFC_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
460 | { EXYNOS5_CMU_CLKSTOP_G3D_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
461 | { EXYNOS5420_CMU_CLKSTOP_DISP1_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
462 | { EXYNOS5420_CMU_CLKSTOP_MAU_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
463 | { EXYNOS5420_CMU_CLKSTOP_G2D_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
464 | { EXYNOS5420_CMU_CLKSTOP_MSC_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
465 | { EXYNOS5420_CMU_CLKSTOP_FSYS_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
466 | { EXYNOS5420_CMU_CLKSTOP_PSGEN_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
467 | { EXYNOS5420_CMU_CLKSTOP_PERIC_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
468 | { EXYNOS5420_CMU_CLKSTOP_WCORE_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
469 | { EXYNOS5_CMU_SYSCLK_GSCL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
470 | { EXYNOS5_CMU_SYSCLK_ISP_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
471 | { EXYNOS5_CMU_SYSCLK_MFC_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
472 | { EXYNOS5_CMU_SYSCLK_G3D_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
473 | { EXYNOS5420_CMU_SYSCLK_DISP1_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
474 | { EXYNOS5420_CMU_SYSCLK_MAU_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
475 | { EXYNOS5420_CMU_SYSCLK_G2D_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
476 | { EXYNOS5420_CMU_SYSCLK_MSC_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
477 | { EXYNOS5420_CMU_SYSCLK_FSYS_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
478 | { EXYNOS5420_CMU_SYSCLK_FSYS2_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
479 | { EXYNOS5420_CMU_SYSCLK_PSGEN_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
480 | { EXYNOS5420_CMU_SYSCLK_PERIC_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
481 | { EXYNOS5420_CMU_SYSCLK_WCORE_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
482 | { EXYNOS5420_CMU_RESET_FSYS2_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
483 | { EXYNOS5420_CMU_RESET_PSGEN_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
484 | { EXYNOS5420_CMU_RESET_PERIC_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
485 | { EXYNOS5420_CMU_RESET_WCORE_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
486 | { EXYNOS5_CMU_RESET_GSCL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
487 | { EXYNOS5_CMU_RESET_ISP_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
488 | { EXYNOS5_CMU_RESET_MFC_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
489 | { EXYNOS5_CMU_RESET_G3D_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
490 | { EXYNOS5420_CMU_RESET_DISP1_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
491 | { EXYNOS5420_CMU_RESET_MAU_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
492 | { EXYNOS5420_CMU_RESET_G2D_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
493 | { EXYNOS5420_CMU_RESET_MSC_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
494 | { EXYNOS5420_CMU_RESET_FSYS_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, | ||
495 | { PMU_TABLE_END,}, | ||
496 | }; | ||
497 | |||
351 | static unsigned int const exynos5_list_both_cnt_feed[] = { | 498 | static unsigned int const exynos5_list_both_cnt_feed[] = { |
352 | EXYNOS5_ARM_CORE0_OPTION, | 499 | EXYNOS5_ARM_CORE0_OPTION, |
353 | EXYNOS5_ARM_CORE1_OPTION, | 500 | EXYNOS5_ARM_CORE1_OPTION, |
@@ -368,6 +515,75 @@ static unsigned int const exynos5_list_disable_wfi_wfe[] = { | |||
368 | EXYNOS5_ISP_ARM_OPTION, | 515 | EXYNOS5_ISP_ARM_OPTION, |
369 | }; | 516 | }; |
370 | 517 | ||
518 | static unsigned int const exynos5420_list_disable_pmu_reg[] = { | ||
519 | EXYNOS5_CMU_CLKSTOP_GSCL_SYS_PWR_REG, | ||
520 | EXYNOS5_CMU_CLKSTOP_ISP_SYS_PWR_REG, | ||
521 | EXYNOS5_CMU_CLKSTOP_G3D_SYS_PWR_REG, | ||
522 | EXYNOS5420_CMU_CLKSTOP_DISP1_SYS_PWR_REG, | ||
523 | EXYNOS5420_CMU_CLKSTOP_MAU_SYS_PWR_REG, | ||
524 | EXYNOS5420_CMU_CLKSTOP_G2D_SYS_PWR_REG, | ||
525 | EXYNOS5420_CMU_CLKSTOP_MSC_SYS_PWR_REG, | ||
526 | EXYNOS5420_CMU_CLKSTOP_FSYS_SYS_PWR_REG, | ||
527 | EXYNOS5420_CMU_CLKSTOP_PSGEN_SYS_PWR_REG, | ||
528 | EXYNOS5420_CMU_CLKSTOP_PERIC_SYS_PWR_REG, | ||
529 | EXYNOS5420_CMU_CLKSTOP_WCORE_SYS_PWR_REG, | ||
530 | EXYNOS5_CMU_SYSCLK_GSCL_SYS_PWR_REG, | ||
531 | EXYNOS5_CMU_SYSCLK_ISP_SYS_PWR_REG, | ||
532 | EXYNOS5_CMU_SYSCLK_G3D_SYS_PWR_REG, | ||
533 | EXYNOS5420_CMU_SYSCLK_DISP1_SYS_PWR_REG, | ||
534 | EXYNOS5420_CMU_SYSCLK_MAU_SYS_PWR_REG, | ||
535 | EXYNOS5420_CMU_SYSCLK_G2D_SYS_PWR_REG, | ||
536 | EXYNOS5420_CMU_SYSCLK_MSC_SYS_PWR_REG, | ||
537 | EXYNOS5420_CMU_SYSCLK_FSYS_SYS_PWR_REG, | ||
538 | EXYNOS5420_CMU_SYSCLK_FSYS2_SYS_PWR_REG, | ||
539 | EXYNOS5420_CMU_SYSCLK_PSGEN_SYS_PWR_REG, | ||
540 | EXYNOS5420_CMU_SYSCLK_PERIC_SYS_PWR_REG, | ||
541 | EXYNOS5420_CMU_SYSCLK_WCORE_SYS_PWR_REG, | ||
542 | EXYNOS5420_CMU_RESET_FSYS2_SYS_PWR_REG, | ||
543 | EXYNOS5420_CMU_RESET_PSGEN_SYS_PWR_REG, | ||
544 | EXYNOS5420_CMU_RESET_PERIC_SYS_PWR_REG, | ||
545 | EXYNOS5420_CMU_RESET_WCORE_SYS_PWR_REG, | ||
546 | EXYNOS5_CMU_RESET_GSCL_SYS_PWR_REG, | ||
547 | EXYNOS5_CMU_RESET_ISP_SYS_PWR_REG, | ||
548 | EXYNOS5_CMU_RESET_G3D_SYS_PWR_REG, | ||
549 | EXYNOS5420_CMU_RESET_DISP1_SYS_PWR_REG, | ||
550 | EXYNOS5420_CMU_RESET_MAU_SYS_PWR_REG, | ||
551 | EXYNOS5420_CMU_RESET_G2D_SYS_PWR_REG, | ||
552 | EXYNOS5420_CMU_RESET_MSC_SYS_PWR_REG, | ||
553 | EXYNOS5420_CMU_RESET_FSYS_SYS_PWR_REG, | ||
554 | }; | ||
555 | |||
556 | static void exynos5_power_off(void) | ||
557 | { | ||
558 | unsigned int tmp; | ||
559 | |||
560 | pr_info("Power down.\n"); | ||
561 | tmp = pmu_raw_readl(EXYNOS_PS_HOLD_CONTROL); | ||
562 | tmp ^= (1 << 8); | ||
563 | pmu_raw_writel(tmp, EXYNOS_PS_HOLD_CONTROL); | ||
564 | |||
565 | /* Wait a little so we don't give a false warning below */ | ||
566 | mdelay(100); | ||
567 | |||
568 | pr_err("Power down failed, please power off system manually.\n"); | ||
569 | while (1) | ||
570 | ; | ||
571 | } | ||
572 | |||
573 | void exynos5420_powerdown_conf(enum sys_powerdown mode) | ||
574 | { | ||
575 | u32 this_cluster; | ||
576 | |||
577 | this_cluster = MPIDR_AFFINITY_LEVEL(read_cpuid_mpidr(), 1); | ||
578 | |||
579 | /* | ||
580 | * set the cluster id to IROM register to ensure that we wake | ||
581 | * up with the current cluster. | ||
582 | */ | ||
583 | pmu_raw_writel(this_cluster, EXYNOS_IROM_DATA2); | ||
584 | } | ||
585 | |||
586 | |||
371 | static void exynos5_powerdown_conf(enum sys_powerdown mode) | 587 | static void exynos5_powerdown_conf(enum sys_powerdown mode) |
372 | { | 588 | { |
373 | unsigned int i; | 589 | unsigned int i; |
@@ -439,6 +655,68 @@ static void exynos5250_pmu_init(void) | |||
439 | pmu_raw_writel(value, EXYNOS5_MASK_WDTRESET_REQUEST); | 655 | pmu_raw_writel(value, EXYNOS5_MASK_WDTRESET_REQUEST); |
440 | } | 656 | } |
441 | 657 | ||
658 | static void exynos5420_pmu_init(void) | ||
659 | { | ||
660 | unsigned int value; | ||
661 | int i; | ||
662 | |||
663 | /* | ||
664 | * Set the CMU_RESET, CMU_SYSCLK and CMU_CLKSTOP registers | ||
665 | * for local power blocks to Low initially as per Table 8-4: | ||
666 | * "System-Level Power-Down Configuration Registers". | ||
667 | */ | ||
668 | for (i = 0; i < ARRAY_SIZE(exynos5420_list_disable_pmu_reg); i++) | ||
669 | pmu_raw_writel(0, exynos5420_list_disable_pmu_reg[i]); | ||
670 | |||
671 | /* Enable USE_STANDBY_WFI for all CORE */ | ||
672 | pmu_raw_writel(EXYNOS5420_USE_STANDBY_WFI_ALL, S5P_CENTRAL_SEQ_OPTION); | ||
673 | |||
674 | value = pmu_raw_readl(EXYNOS_L2_OPTION(0)); | ||
675 | value &= ~EXYNOS5_USE_RETENTION; | ||
676 | pmu_raw_writel(value, EXYNOS_L2_OPTION(0)); | ||
677 | |||
678 | value = pmu_raw_readl(EXYNOS_L2_OPTION(1)); | ||
679 | value &= ~EXYNOS5_USE_RETENTION; | ||
680 | pmu_raw_writel(value, EXYNOS_L2_OPTION(1)); | ||
681 | |||
682 | /* | ||
683 | * If L2_COMMON is turned off, clocks related to ATB async | ||
684 | * bridge are gated. Thus, when ISP power is gated, LPI | ||
685 | * may get stuck. | ||
686 | */ | ||
687 | value = pmu_raw_readl(EXYNOS5420_LPI_MASK); | ||
688 | value |= EXYNOS5420_ATB_ISP_ARM; | ||
689 | pmu_raw_writel(value, EXYNOS5420_LPI_MASK); | ||
690 | |||
691 | value = pmu_raw_readl(EXYNOS5420_LPI_MASK1); | ||
692 | value |= EXYNOS5420_ATB_KFC; | ||
693 | pmu_raw_writel(value, EXYNOS5420_LPI_MASK1); | ||
694 | |||
695 | /* Prevent issue of new bus request from L2 memory */ | ||
696 | value = pmu_raw_readl(EXYNOS5420_ARM_COMMON_OPTION); | ||
697 | value |= EXYNOS5_SKIP_DEACTIVATE_ACEACP_IN_PWDN; | ||
698 | pmu_raw_writel(value, EXYNOS5420_ARM_COMMON_OPTION); | ||
699 | |||
700 | value = pmu_raw_readl(EXYNOS5420_KFC_COMMON_OPTION); | ||
701 | value |= EXYNOS5_SKIP_DEACTIVATE_ACEACP_IN_PWDN; | ||
702 | pmu_raw_writel(value, EXYNOS5420_KFC_COMMON_OPTION); | ||
703 | |||
704 | /* This setting is to reduce suspend/resume time */ | ||
705 | pmu_raw_writel(DUR_WAIT_RESET, EXYNOS5420_LOGIC_RESET_DURATION3); | ||
706 | |||
707 | /* Serialized CPU wakeup of Eagle */ | ||
708 | pmu_raw_writel(SPREAD_ENABLE, EXYNOS5420_ARM_INTR_SPREAD_ENABLE); | ||
709 | |||
710 | pmu_raw_writel(SPREAD_USE_STANDWFI, | ||
711 | EXYNOS5420_ARM_INTR_SPREAD_USE_STANDBYWFI); | ||
712 | |||
713 | pmu_raw_writel(0x1, EXYNOS5420_UP_SCHEDULER); | ||
714 | |||
715 | pm_power_off = exynos5_power_off; | ||
716 | pr_info("EXYNOS5420 PMU initialized\n"); | ||
717 | } | ||
718 | |||
719 | |||
442 | static const struct exynos_pmu_data exynos4210_pmu_data = { | 720 | static const struct exynos_pmu_data exynos4210_pmu_data = { |
443 | .pmu_config = exynos4210_pmu_config, | 721 | .pmu_config = exynos4210_pmu_config, |
444 | }; | 722 | }; |
@@ -458,6 +736,12 @@ static const struct exynos_pmu_data exynos5250_pmu_data = { | |||
458 | .powerdown_conf = exynos5_powerdown_conf, | 736 | .powerdown_conf = exynos5_powerdown_conf, |
459 | }; | 737 | }; |
460 | 738 | ||
739 | static struct exynos_pmu_data exynos5420_pmu_data = { | ||
740 | .pmu_config = exynos5420_pmu_config, | ||
741 | .pmu_init = exynos5420_pmu_init, | ||
742 | .powerdown_conf = exynos5420_powerdown_conf, | ||
743 | }; | ||
744 | |||
461 | /* | 745 | /* |
462 | * PMU platform driver and devicetree bindings. | 746 | * PMU platform driver and devicetree bindings. |
463 | */ | 747 | */ |
@@ -474,6 +758,9 @@ static const struct of_device_id exynos_pmu_of_device_ids[] = { | |||
474 | }, { | 758 | }, { |
475 | .compatible = "samsung,exynos5250-pmu", | 759 | .compatible = "samsung,exynos5250-pmu", |
476 | .data = &exynos5250_pmu_data, | 760 | .data = &exynos5250_pmu_data, |
761 | }, { | ||
762 | .compatible = "samsung,exynos5420-pmu", | ||
763 | .data = &exynos5420_pmu_data, | ||
477 | }, | 764 | }, |
478 | { /*sentinel*/ }, | 765 | { /*sentinel*/ }, |
479 | }; | 766 | }; |
diff --git a/arch/arm/mach-exynos/regs-pmu.h b/arch/arm/mach-exynos/regs-pmu.h index 322f13277c3b..46b973b8cd83 100644 --- a/arch/arm/mach-exynos/regs-pmu.h +++ b/arch/arm/mach-exynos/regs-pmu.h | |||
@@ -38,6 +38,7 @@ | |||
38 | #define S5P_INFORM7 0x081C | 38 | #define S5P_INFORM7 0x081C |
39 | #define S5P_PMU_SPARE3 0x090C | 39 | #define S5P_PMU_SPARE3 0x090C |
40 | 40 | ||
41 | #define EXYNOS_IROM_DATA2 0x0988 | ||
41 | #define S5P_ARM_CORE0_LOWPWR 0x1000 | 42 | #define S5P_ARM_CORE0_LOWPWR 0x1000 |
42 | #define S5P_DIS_IRQ_CORE0 0x1004 | 43 | #define S5P_DIS_IRQ_CORE0 0x1004 |
43 | #define S5P_DIS_IRQ_CENTRAL0 0x1008 | 44 | #define S5P_DIS_IRQ_CENTRAL0 0x1008 |
@@ -120,6 +121,31 @@ | |||
120 | #define EXYNOS_COMMON_OPTION(_nr) \ | 121 | #define EXYNOS_COMMON_OPTION(_nr) \ |
121 | (EXYNOS_COMMON_CONFIGURATION(_nr) + 0x8) | 122 | (EXYNOS_COMMON_CONFIGURATION(_nr) + 0x8) |
122 | 123 | ||
124 | #define EXYNOS_CORE_LOCAL_PWR_EN 0x3 | ||
125 | |||
126 | #define EXYNOS_ARM_COMMON_STATUS 0x2504 | ||
127 | #define EXYNOS_COMMON_OPTION(_nr) \ | ||
128 | (EXYNOS_COMMON_CONFIGURATION(_nr) + 0x8) | ||
129 | |||
130 | #define EXYNOS_ARM_L2_CONFIGURATION 0x2600 | ||
131 | #define EXYNOS_L2_CONFIGURATION(_nr) \ | ||
132 | (EXYNOS_ARM_L2_CONFIGURATION + ((_nr) * 0x80)) | ||
133 | #define EXYNOS_L2_STATUS(_nr) \ | ||
134 | (EXYNOS_L2_CONFIGURATION(_nr) + 0x4) | ||
135 | #define EXYNOS_L2_OPTION(_nr) \ | ||
136 | (EXYNOS_L2_CONFIGURATION(_nr) + 0x8) | ||
137 | #define EXYNOS_L2_COMMON_PWR_EN 0x3 | ||
138 | |||
139 | #define EXYNOS_ARM_CORE_X_STATUS_OFFSET 0x4 | ||
140 | |||
141 | #define EXYNOS5_APLL_SYSCLK_CONFIGURATION 0x2A00 | ||
142 | #define EXYNOS5_APLL_SYSCLK_STATUS 0x2A04 | ||
143 | |||
144 | #define EXYNOS5_ARM_L2_OPTION 0x2608 | ||
145 | #define EXYNOS5_USE_RETENTION BIT(4) | ||
146 | |||
147 | #define EXYNOS5_L2RSTDISABLE_VALUE BIT(3) | ||
148 | |||
123 | #define S5P_PAD_RET_MAUDIO_OPTION 0x3028 | 149 | #define S5P_PAD_RET_MAUDIO_OPTION 0x3028 |
124 | #define S5P_PAD_RET_GPIO_OPTION 0x3108 | 150 | #define S5P_PAD_RET_GPIO_OPTION 0x3108 |
125 | #define S5P_PAD_RET_UART_OPTION 0x3128 | 151 | #define S5P_PAD_RET_UART_OPTION 0x3128 |
@@ -193,6 +219,7 @@ | |||
193 | #define EXYNOS5_AUTO_WDTRESET_DISABLE 0x0408 | 219 | #define EXYNOS5_AUTO_WDTRESET_DISABLE 0x0408 |
194 | #define EXYNOS5_MASK_WDTRESET_REQUEST 0x040C | 220 | #define EXYNOS5_MASK_WDTRESET_REQUEST 0x040C |
195 | 221 | ||
222 | #define EXYNOS5_USE_RETENTION BIT(4) | ||
196 | #define EXYNOS5_SYS_WDTRESET (1 << 20) | 223 | #define EXYNOS5_SYS_WDTRESET (1 << 20) |
197 | 224 | ||
198 | #define EXYNOS5_ARM_CORE0_SYS_PWR_REG 0x1000 | 225 | #define EXYNOS5_ARM_CORE0_SYS_PWR_REG 0x1000 |
@@ -332,4 +359,204 @@ static inline unsigned int exynos_pmu_cpunr(unsigned int mpidr) | |||
332 | + MPIDR_AFFINITY_LEVEL(mpidr, 0)); | 359 | + MPIDR_AFFINITY_LEVEL(mpidr, 0)); |
333 | } | 360 | } |
334 | 361 | ||
362 | /* Only for EXYNOS5420 */ | ||
363 | #define EXYNOS5420_ISP_ARM_OPTION 0x2488 | ||
364 | #define EXYNOS5420_L2RSTDISABLE_VALUE BIT(3) | ||
365 | |||
366 | #define EXYNOS5420_LPI_MASK 0x0004 | ||
367 | #define EXYNOS5420_LPI_MASK1 0x0008 | ||
368 | #define EXYNOS5420_UFS BIT(8) | ||
369 | #define EXYNOS5420_ATB_KFC BIT(13) | ||
370 | #define EXYNOS5420_ATB_ISP_ARM BIT(19) | ||
371 | #define EXYNOS5420_EMULATION BIT(31) | ||
372 | #define ATB_ISP_ARM BIT(12) | ||
373 | #define ATB_KFC BIT(13) | ||
374 | #define ATB_NOC BIT(14) | ||
375 | |||
376 | #define EXYNOS5420_ARM_INTR_SPREAD_ENABLE 0x0100 | ||
377 | #define EXYNOS5420_ARM_INTR_SPREAD_USE_STANDBYWFI 0x0104 | ||
378 | #define EXYNOS5420_UP_SCHEDULER 0x0120 | ||
379 | #define SPREAD_ENABLE 0xF | ||
380 | #define SPREAD_USE_STANDWFI 0xF | ||
381 | |||
382 | #define EXYNOS5420_BB_CON1 0x0784 | ||
383 | #define EXYNOS5420_BB_SEL_EN BIT(31) | ||
384 | #define EXYNOS5420_BB_PMOS_EN BIT(7) | ||
385 | #define EXYNOS5420_BB_1300X 0XF | ||
386 | |||
387 | #define EXYNOS5420_ARM_CORE2_SYS_PWR_REG 0x1020 | ||
388 | #define EXYNOS5420_DIS_IRQ_ARM_CORE2_LOCAL_SYS_PWR_REG 0x1024 | ||
389 | #define EXYNOS5420_DIS_IRQ_ARM_CORE2_CENTRAL_SYS_PWR_REG 0x1028 | ||
390 | #define EXYNOS5420_ARM_CORE3_SYS_PWR_REG 0x1030 | ||
391 | #define EXYNOS5420_DIS_IRQ_ARM_CORE3_LOCAL_SYS_PWR_REG 0x1034 | ||
392 | #define EXYNOS5420_DIS_IRQ_ARM_CORE3_CENTRAL_SYS_PWR_REG 0x1038 | ||
393 | #define EXYNOS5420_KFC_CORE0_SYS_PWR_REG 0x1040 | ||
394 | #define EXYNOS5420_DIS_IRQ_KFC_CORE0_LOCAL_SYS_PWR_REG 0x1044 | ||
395 | #define EXYNOS5420_DIS_IRQ_KFC_CORE0_CENTRAL_SYS_PWR_REG 0x1048 | ||
396 | #define EXYNOS5420_KFC_CORE1_SYS_PWR_REG 0x1050 | ||
397 | #define EXYNOS5420_DIS_IRQ_KFC_CORE1_LOCAL_SYS_PWR_REG 0x1054 | ||
398 | #define EXYNOS5420_DIS_IRQ_KFC_CORE1_CENTRAL_SYS_PWR_REG 0x1058 | ||
399 | #define EXYNOS5420_KFC_CORE2_SYS_PWR_REG 0x1060 | ||
400 | #define EXYNOS5420_DIS_IRQ_KFC_CORE2_LOCAL_SYS_PWR_REG 0x1064 | ||
401 | #define EXYNOS5420_DIS_IRQ_KFC_CORE2_CENTRAL_SYS_PWR_REG 0x1068 | ||
402 | #define EXYNOS5420_KFC_CORE3_SYS_PWR_REG 0x1070 | ||
403 | #define EXYNOS5420_DIS_IRQ_KFC_CORE3_LOCAL_SYS_PWR_REG 0x1074 | ||
404 | #define EXYNOS5420_DIS_IRQ_KFC_CORE3_CENTRAL_SYS_PWR_REG 0x1078 | ||
405 | #define EXYNOS5420_ISP_ARM_SYS_PWR_REG 0x1090 | ||
406 | #define EXYNOS5420_DIS_IRQ_ISP_ARM_LOCAL_SYS_PWR_REG 0x1094 | ||
407 | #define EXYNOS5420_DIS_IRQ_ISP_ARM_CENTRAL_SYS_PWR_REG 0x1098 | ||
408 | #define EXYNOS5420_ARM_COMMON_SYS_PWR_REG 0x10A0 | ||
409 | #define EXYNOS5420_KFC_COMMON_SYS_PWR_REG 0x10B0 | ||
410 | #define EXYNOS5420_KFC_L2_SYS_PWR_REG 0x10D0 | ||
411 | #define EXYNOS5420_DPLL_SYSCLK_SYS_PWR_REG 0x1158 | ||
412 | #define EXYNOS5420_IPLL_SYSCLK_SYS_PWR_REG 0x115C | ||
413 | #define EXYNOS5420_KPLL_SYSCLK_SYS_PWR_REG 0x1160 | ||
414 | #define EXYNOS5420_RPLL_SYSCLK_SYS_PWR_REG 0x1174 | ||
415 | #define EXYNOS5420_SPLL_SYSCLK_SYS_PWR_REG 0x1178 | ||
416 | #define EXYNOS5420_INTRAM_MEM_SYS_PWR_REG 0x11B8 | ||
417 | #define EXYNOS5420_INTROM_MEM_SYS_PWR_REG 0x11BC | ||
418 | #define EXYNOS5420_ONENANDXL_MEM_SYS_PWR 0x11C0 | ||
419 | #define EXYNOS5420_USBDEV_MEM_SYS_PWR 0x11CC | ||
420 | #define EXYNOS5420_USBDEV1_MEM_SYS_PWR 0x11D0 | ||
421 | #define EXYNOS5420_SDMMC_MEM_SYS_PWR 0x11D4 | ||
422 | #define EXYNOS5420_CSSYS_MEM_SYS_PWR 0x11D8 | ||
423 | #define EXYNOS5420_SECSS_MEM_SYS_PWR 0x11DC | ||
424 | #define EXYNOS5420_ROTATOR_MEM_SYS_PWR 0x11E0 | ||
425 | #define EXYNOS5420_INTRAM_MEM_SYS_PWR 0x11E4 | ||
426 | #define EXYNOS5420_INTROM_MEM_SYS_PWR 0x11E8 | ||
427 | #define EXYNOS5420_PAD_RETENTION_JTAG_SYS_PWR_REG 0x1208 | ||
428 | #define EXYNOS5420_PAD_RETENTION_DRAM_SYS_PWR_REG 0x1210 | ||
429 | #define EXYNOS5420_PAD_RETENTION_UART_SYS_PWR_REG 0x1214 | ||
430 | #define EXYNOS5420_PAD_RETENTION_MMC0_SYS_PWR_REG 0x1218 | ||
431 | #define EXYNOS5420_PAD_RETENTION_MMC1_SYS_PWR_REG 0x121C | ||
432 | #define EXYNOS5420_PAD_RETENTION_MMC2_SYS_PWR_REG 0x1220 | ||
433 | #define EXYNOS5420_PAD_RETENTION_HSI_SYS_PWR_REG 0x1224 | ||
434 | #define EXYNOS5420_PAD_RETENTION_EBIA_SYS_PWR_REG 0x1228 | ||
435 | #define EXYNOS5420_PAD_RETENTION_EBIB_SYS_PWR_REG 0x122C | ||
436 | #define EXYNOS5420_PAD_RETENTION_SPI_SYS_PWR_REG 0x1230 | ||
437 | #define EXYNOS5420_PAD_RETENTION_DRAM_COREBLK_SYS_PWR_REG 0x1234 | ||
438 | #define EXYNOS5420_DISP1_SYS_PWR_REG 0x1410 | ||
439 | #define EXYNOS5420_MAU_SYS_PWR_REG 0x1414 | ||
440 | #define EXYNOS5420_G2D_SYS_PWR_REG 0x1418 | ||
441 | #define EXYNOS5420_MSC_SYS_PWR_REG 0x141C | ||
442 | #define EXYNOS5420_FSYS_SYS_PWR_REG 0x1420 | ||
443 | #define EXYNOS5420_FSYS2_SYS_PWR_REG 0x1424 | ||
444 | #define EXYNOS5420_PSGEN_SYS_PWR_REG 0x1428 | ||
445 | #define EXYNOS5420_PERIC_SYS_PWR_REG 0x142C | ||
446 | #define EXYNOS5420_WCORE_SYS_PWR_REG 0x1430 | ||
447 | #define EXYNOS5420_CMU_CLKSTOP_DISP1_SYS_PWR_REG 0x1490 | ||
448 | #define EXYNOS5420_CMU_CLKSTOP_MAU_SYS_PWR_REG 0x1494 | ||
449 | #define EXYNOS5420_CMU_CLKSTOP_G2D_SYS_PWR_REG 0x1498 | ||
450 | #define EXYNOS5420_CMU_CLKSTOP_MSC_SYS_PWR_REG 0x149C | ||
451 | #define EXYNOS5420_CMU_CLKSTOP_FSYS_SYS_PWR_REG 0x14A0 | ||
452 | #define EXYNOS5420_CMU_CLKSTOP_FSYS2_SYS_PWR_REG 0x14A4 | ||
453 | #define EXYNOS5420_CMU_CLKSTOP_PSGEN_SYS_PWR_REG 0x14A8 | ||
454 | #define EXYNOS5420_CMU_CLKSTOP_PERIC_SYS_PWR_REG 0x14AC | ||
455 | #define EXYNOS5420_CMU_CLKSTOP_WCORE_SYS_PWR_REG 0x14B0 | ||
456 | #define EXYNOS5420_CMU_SYSCLK_TOPPWR_SYS_PWR_REG 0x14BC | ||
457 | #define EXYNOS5420_CMU_SYSCLK_DISP1_SYS_PWR_REG 0x14D0 | ||
458 | #define EXYNOS5420_CMU_SYSCLK_MAU_SYS_PWR_REG 0x14D4 | ||
459 | #define EXYNOS5420_CMU_SYSCLK_G2D_SYS_PWR_REG 0x14D8 | ||
460 | #define EXYNOS5420_CMU_SYSCLK_MSC_SYS_PWR_REG 0x14DC | ||
461 | #define EXYNOS5420_CMU_SYSCLK_FSYS_SYS_PWR_REG 0x14E0 | ||
462 | #define EXYNOS5420_CMU_SYSCLK_FSYS2_SYS_PWR_REG 0x14E4 | ||
463 | #define EXYNOS5420_CMU_SYSCLK_PSGEN_SYS_PWR_REG 0x14E8 | ||
464 | #define EXYNOS5420_CMU_SYSCLK_PERIC_SYS_PWR_REG 0x14EC | ||
465 | #define EXYNOS5420_CMU_SYSCLK_WCORE_SYS_PWR_REG 0x14F0 | ||
466 | #define EXYNOS5420_CMU_SYSCLK_SYSMEM_TOPPWR_SYS_PWR_REG 0x14F4 | ||
467 | #define EXYNOS5420_CMU_RESET_FSYS2_SYS_PWR_REG 0x1570 | ||
468 | #define EXYNOS5420_CMU_RESET_PSGEN_SYS_PWR_REG 0x1574 | ||
469 | #define EXYNOS5420_CMU_RESET_PERIC_SYS_PWR_REG 0x1578 | ||
470 | #define EXYNOS5420_CMU_RESET_WCORE_SYS_PWR_REG 0x157C | ||
471 | #define EXYNOS5420_CMU_RESET_DISP1_SYS_PWR_REG 0x1590 | ||
472 | #define EXYNOS5420_CMU_RESET_MAU_SYS_PWR_REG 0x1594 | ||
473 | #define EXYNOS5420_CMU_RESET_G2D_SYS_PWR_REG 0x1598 | ||
474 | #define EXYNOS5420_CMU_RESET_MSC_SYS_PWR_REG 0x159C | ||
475 | #define EXYNOS5420_CMU_RESET_FSYS_SYS_PWR_REG 0x15A0 | ||
476 | #define EXYNOS5420_SFR_AXI_CGDIS1 0x15E4 | ||
477 | #define EXYNOS_ARM_CORE2_CONFIGURATION 0x2100 | ||
478 | #define EXYNOS5420_ARM_CORE2_OPTION 0x2108 | ||
479 | #define EXYNOS_ARM_CORE3_CONFIGURATION 0x2180 | ||
480 | #define EXYNOS5420_ARM_CORE3_OPTION 0x2188 | ||
481 | #define EXYNOS5420_ARM_COMMON_STATUS 0x2504 | ||
482 | #define EXYNOS5420_ARM_COMMON_OPTION 0x2508 | ||
483 | #define EXYNOS5420_KFC_COMMON_STATUS 0x2584 | ||
484 | #define EXYNOS5420_KFC_COMMON_OPTION 0x2588 | ||
485 | #define EXYNOS5420_LOGIC_RESET_DURATION3 0x2D1C | ||
486 | |||
487 | #define EXYNOS5420_PAD_RET_GPIO_OPTION 0x30C8 | ||
488 | #define EXYNOS5420_PAD_RET_UART_OPTION 0x30E8 | ||
489 | #define EXYNOS5420_PAD_RET_MMCA_OPTION 0x3108 | ||
490 | #define EXYNOS5420_PAD_RET_MMCB_OPTION 0x3128 | ||
491 | #define EXYNOS5420_PAD_RET_MMCC_OPTION 0x3148 | ||
492 | #define EXYNOS5420_PAD_RET_HSI_OPTION 0x3168 | ||
493 | #define EXYNOS5420_PAD_RET_SPI_OPTION 0x31C8 | ||
494 | #define EXYNOS5420_PAD_RET_DRAM_COREBLK_OPTION 0x31E8 | ||
495 | #define EXYNOS_PAD_RET_DRAM_OPTION 0x3008 | ||
496 | #define EXYNOS_PAD_RET_MAUDIO_OPTION 0x3028 | ||
497 | #define EXYNOS_PAD_RET_JTAG_OPTION 0x3048 | ||
498 | #define EXYNOS_PAD_RET_GPIO_OPTION 0x3108 | ||
499 | #define EXYNOS_PAD_RET_UART_OPTION 0x3128 | ||
500 | #define EXYNOS_PAD_RET_MMCA_OPTION 0x3148 | ||
501 | #define EXYNOS_PAD_RET_MMCB_OPTION 0x3168 | ||
502 | #define EXYNOS_PAD_RET_EBIA_OPTION 0x3188 | ||
503 | #define EXYNOS_PAD_RET_EBIB_OPTION 0x31A8 | ||
504 | |||
505 | #define EXYNOS_PS_HOLD_CONTROL 0x330C | ||
506 | |||
507 | /* For SYS_PWR_REG */ | ||
508 | #define EXYNOS_SYS_PWR_CFG BIT(0) | ||
509 | |||
510 | #define EXYNOS5420_MFC_CONFIGURATION 0x4060 | ||
511 | #define EXYNOS5420_MFC_STATUS 0x4064 | ||
512 | #define EXYNOS5420_MFC_OPTION 0x4068 | ||
513 | #define EXYNOS5420_G3D_CONFIGURATION 0x4080 | ||
514 | #define EXYNOS5420_G3D_STATUS 0x4084 | ||
515 | #define EXYNOS5420_G3D_OPTION 0x4088 | ||
516 | #define EXYNOS5420_DISP0_CONFIGURATION 0x40A0 | ||
517 | #define EXYNOS5420_DISP0_STATUS 0x40A4 | ||
518 | #define EXYNOS5420_DISP0_OPTION 0x40A8 | ||
519 | #define EXYNOS5420_DISP1_CONFIGURATION 0x40C0 | ||
520 | #define EXYNOS5420_DISP1_STATUS 0x40C4 | ||
521 | #define EXYNOS5420_DISP1_OPTION 0x40C8 | ||
522 | #define EXYNOS5420_MAU_CONFIGURATION 0x40E0 | ||
523 | #define EXYNOS5420_MAU_STATUS 0x40E4 | ||
524 | #define EXYNOS5420_MAU_OPTION 0x40E8 | ||
525 | #define EXYNOS5420_FSYS2_OPTION 0x4168 | ||
526 | #define EXYNOS5420_PSGEN_OPTION 0x4188 | ||
527 | |||
528 | /* For EXYNOS_CENTRAL_SEQ_OPTION */ | ||
529 | #define EXYNOS5_USE_STANDBYWFI_ARM_CORE0 BIT(16) | ||
530 | #define EXYNOS5_USE_STANDBYWFI_ARM_CORE1 BUT(17) | ||
531 | #define EXYNOS5_USE_STANDBYWFE_ARM_CORE0 BIT(24) | ||
532 | #define EXYNOS5_USE_STANDBYWFE_ARM_CORE1 BIT(25) | ||
533 | |||
534 | #define EXYNOS5420_ARM_USE_STANDBY_WFI0 BIT(4) | ||
535 | #define EXYNOS5420_ARM_USE_STANDBY_WFI1 BIT(5) | ||
536 | #define EXYNOS5420_ARM_USE_STANDBY_WFI2 BIT(6) | ||
537 | #define EXYNOS5420_ARM_USE_STANDBY_WFI3 BIT(7) | ||
538 | #define EXYNOS5420_KFC_USE_STANDBY_WFI0 BIT(8) | ||
539 | #define EXYNOS5420_KFC_USE_STANDBY_WFI1 BIT(9) | ||
540 | #define EXYNOS5420_KFC_USE_STANDBY_WFI2 BIT(10) | ||
541 | #define EXYNOS5420_KFC_USE_STANDBY_WFI3 BIT(11) | ||
542 | #define EXYNOS5420_ARM_USE_STANDBY_WFE0 BIT(16) | ||
543 | #define EXYNOS5420_ARM_USE_STANDBY_WFE1 BIT(17) | ||
544 | #define EXYNOS5420_ARM_USE_STANDBY_WFE2 BIT(18) | ||
545 | #define EXYNOS5420_ARM_USE_STANDBY_WFE3 BIT(19) | ||
546 | #define EXYNOS5420_KFC_USE_STANDBY_WFE0 BIT(20) | ||
547 | #define EXYNOS5420_KFC_USE_STANDBY_WFE1 BIT(21) | ||
548 | #define EXYNOS5420_KFC_USE_STANDBY_WFE2 BIT(22) | ||
549 | #define EXYNOS5420_KFC_USE_STANDBY_WFE3 BIT(23) | ||
550 | |||
551 | #define DUR_WAIT_RESET 0xF | ||
552 | |||
553 | #define EXYNOS5420_USE_STANDBY_WFI_ALL (EXYNOS5420_ARM_USE_STANDBY_WFI0 \ | ||
554 | | EXYNOS5420_ARM_USE_STANDBY_WFI1 \ | ||
555 | | EXYNOS5420_ARM_USE_STANDBY_WFI2 \ | ||
556 | | EXYNOS5420_ARM_USE_STANDBY_WFI3 \ | ||
557 | | EXYNOS5420_KFC_USE_STANDBY_WFI0 \ | ||
558 | | EXYNOS5420_KFC_USE_STANDBY_WFI1 \ | ||
559 | | EXYNOS5420_KFC_USE_STANDBY_WFI2 \ | ||
560 | | EXYNOS5420_KFC_USE_STANDBY_WFI3) | ||
561 | |||
335 | #endif /* __ASM_ARCH_REGS_PMU_H */ | 562 | #endif /* __ASM_ARCH_REGS_PMU_H */ |