0001
0002
0003
0004
0005
0006
0007
0008 #include <linux/pm.h>
0009 #include <linux/soc/samsung/exynos-regs-pmu.h>
0010 #include <linux/soc/samsung/exynos-pmu.h>
0011
0012 #include <asm/cputype.h>
0013
0014 #include "exynos-pmu.h"
0015
0016 static const struct exynos_pmu_conf exynos5420_pmu_config[] = {
0017
0018 { EXYNOS5_ARM_CORE0_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0019 { EXYNOS5_DIS_IRQ_ARM_CORE0_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0020 { EXYNOS5_DIS_IRQ_ARM_CORE0_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0021 { EXYNOS5_ARM_CORE1_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0022 { EXYNOS5_DIS_IRQ_ARM_CORE1_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0023 { EXYNOS5_DIS_IRQ_ARM_CORE1_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0024 { EXYNOS5420_ARM_CORE2_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0025 { EXYNOS5420_DIS_IRQ_ARM_CORE2_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0026 { EXYNOS5420_DIS_IRQ_ARM_CORE2_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0027 { EXYNOS5420_ARM_CORE3_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0028 { EXYNOS5420_DIS_IRQ_ARM_CORE3_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0029 { EXYNOS5420_DIS_IRQ_ARM_CORE3_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0030 { EXYNOS5420_KFC_CORE0_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0031 { EXYNOS5420_DIS_IRQ_KFC_CORE0_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0032 { EXYNOS5420_DIS_IRQ_KFC_CORE0_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0033 { EXYNOS5420_KFC_CORE1_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0034 { EXYNOS5420_DIS_IRQ_KFC_CORE1_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0035 { EXYNOS5420_DIS_IRQ_KFC_CORE1_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0036 { EXYNOS5420_KFC_CORE2_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0037 { EXYNOS5420_DIS_IRQ_KFC_CORE2_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0038 { EXYNOS5420_DIS_IRQ_KFC_CORE2_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0039 { EXYNOS5420_KFC_CORE3_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0040 { EXYNOS5420_DIS_IRQ_KFC_CORE3_LOCAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0041 { EXYNOS5420_DIS_IRQ_KFC_CORE3_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0042 { EXYNOS5_ISP_ARM_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0043 { EXYNOS5_DIS_IRQ_ISP_ARM_LOCAL_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0044 { EXYNOS5_DIS_IRQ_ISP_ARM_CENTRAL_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0045 { EXYNOS5420_ARM_COMMON_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0046 { EXYNOS5420_KFC_COMMON_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0047 { EXYNOS5_ARM_L2_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0048 { EXYNOS5420_KFC_L2_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0049 { EXYNOS5_CMU_ACLKSTOP_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0050 { EXYNOS5_CMU_SCLKSTOP_SYS_PWR_REG, { 0x1, 0x0, 0x1} },
0051 { EXYNOS5_CMU_RESET_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0052 { EXYNOS5_CMU_ACLKSTOP_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0053 { EXYNOS5_CMU_SCLKSTOP_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x1} },
0054 { EXYNOS5_CMU_RESET_SYSMEM_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0055 { EXYNOS5_DRAM_FREQ_DOWN_SYS_PWR_REG, { 0x1, 0x0, 0x1} },
0056 { EXYNOS5_DDRPHY_DLLOFF_SYS_PWR_REG, { 0x1, 0x1, 0x1} },
0057 { EXYNOS5_DDRPHY_DLLLOCK_SYS_PWR_REG, { 0x1, 0x0, 0x1} },
0058 { EXYNOS5_APLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0059 { EXYNOS5_MPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0060 { EXYNOS5_VPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0061 { EXYNOS5_EPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0062 { EXYNOS5_BPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0063 { EXYNOS5_CPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0064 { EXYNOS5420_DPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0065 { EXYNOS5420_IPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0066 { EXYNOS5420_KPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0067 { EXYNOS5_MPLLUSER_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0068 { EXYNOS5_BPLLUSER_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0069 { EXYNOS5420_RPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0070 { EXYNOS5420_SPLL_SYSCLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0071 { EXYNOS5_TOP_BUS_SYS_PWR_REG, { 0x3, 0x0, 0x0} },
0072 { EXYNOS5_TOP_RETENTION_SYS_PWR_REG, { 0x1, 0x1, 0x1} },
0073 { EXYNOS5_TOP_PWR_SYS_PWR_REG, { 0x3, 0x3, 0x0} },
0074 { EXYNOS5_TOP_BUS_SYSMEM_SYS_PWR_REG, { 0x3, 0x0, 0x0} },
0075 { EXYNOS5_TOP_RETENTION_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x1} },
0076 { EXYNOS5_TOP_PWR_SYSMEM_SYS_PWR_REG, { 0x3, 0x0, 0x0} },
0077 { EXYNOS5_LOGIC_RESET_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0078 { EXYNOS5_OSCCLK_GATE_SYS_PWR_REG, { 0x1, 0x0, 0x1} },
0079 { EXYNOS5_LOGIC_RESET_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0080 { EXYNOS5_OSCCLK_GATE_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0081 { EXYNOS5420_INTRAM_MEM_SYS_PWR_REG, { 0x3, 0x0, 0x3} },
0082 { EXYNOS5420_INTROM_MEM_SYS_PWR_REG, { 0x3, 0x0, 0x3} },
0083 { EXYNOS5_PAD_RETENTION_DRAM_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0084 { EXYNOS5_PAD_RETENTION_MAU_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0085 { EXYNOS5420_PAD_RETENTION_JTAG_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0086 { EXYNOS5420_PAD_RETENTION_DRAM_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0087 { EXYNOS5420_PAD_RETENTION_UART_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0088 { EXYNOS5420_PAD_RETENTION_MMC0_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0089 { EXYNOS5420_PAD_RETENTION_MMC1_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0090 { EXYNOS5420_PAD_RETENTION_MMC2_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0091 { EXYNOS5420_PAD_RETENTION_HSI_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0092 { EXYNOS5420_PAD_RETENTION_EBIA_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0093 { EXYNOS5420_PAD_RETENTION_EBIB_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0094 { EXYNOS5420_PAD_RETENTION_SPI_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0095 { EXYNOS5420_PAD_RETENTION_DRAM_COREBLK_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0096 { EXYNOS5_PAD_ISOLATION_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0097 { EXYNOS5_PAD_ISOLATION_SYSMEM_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0098 { EXYNOS5_PAD_ALV_SEL_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0099 { EXYNOS5_XUSBXTI_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0100 { EXYNOS5_XXTI_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0101 { EXYNOS5_EXT_REGULATOR_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0102 { EXYNOS5_GPIO_MODE_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0103 { EXYNOS5_GPIO_MODE_SYSMEM_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0104 { EXYNOS5_GPIO_MODE_MAU_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0105 { EXYNOS5_TOP_ASB_RESET_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
0106 { EXYNOS5_TOP_ASB_ISOLATION_SYS_PWR_REG, { 0x1, 0x0, 0x0} },
0107 { EXYNOS5_GSCL_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0108 { EXYNOS5_ISP_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0109 { EXYNOS5_MFC_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0110 { EXYNOS5_G3D_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0111 { EXYNOS5420_DISP1_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0112 { EXYNOS5420_MAU_SYS_PWR_REG, { 0x7, 0x7, 0x0} },
0113 { EXYNOS5420_G2D_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0114 { EXYNOS5420_MSC_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0115 { EXYNOS5420_FSYS_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0116 { EXYNOS5420_FSYS2_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0117 { EXYNOS5420_PSGEN_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0118 { EXYNOS5420_PERIC_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0119 { EXYNOS5420_WCORE_SYS_PWR_REG, { 0x7, 0x0, 0x0} },
0120 { EXYNOS5_CMU_CLKSTOP_GSCL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0121 { EXYNOS5_CMU_CLKSTOP_ISP_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0122 { EXYNOS5_CMU_CLKSTOP_MFC_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0123 { EXYNOS5_CMU_CLKSTOP_G3D_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0124 { EXYNOS5420_CMU_CLKSTOP_DISP1_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0125 { EXYNOS5420_CMU_CLKSTOP_MAU_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0126 { EXYNOS5420_CMU_CLKSTOP_G2D_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0127 { EXYNOS5420_CMU_CLKSTOP_MSC_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0128 { EXYNOS5420_CMU_CLKSTOP_FSYS_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0129 { EXYNOS5420_CMU_CLKSTOP_PSGEN_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0130 { EXYNOS5420_CMU_CLKSTOP_PERIC_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0131 { EXYNOS5420_CMU_CLKSTOP_WCORE_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0132 { EXYNOS5_CMU_SYSCLK_GSCL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0133 { EXYNOS5_CMU_SYSCLK_ISP_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0134 { EXYNOS5_CMU_SYSCLK_MFC_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0135 { EXYNOS5_CMU_SYSCLK_G3D_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0136 { EXYNOS5420_CMU_SYSCLK_DISP1_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0137 { EXYNOS5420_CMU_SYSCLK_MAU_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0138 { EXYNOS5420_CMU_SYSCLK_G2D_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0139 { EXYNOS5420_CMU_SYSCLK_MSC_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0140 { EXYNOS5420_CMU_SYSCLK_FSYS_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0141 { EXYNOS5420_CMU_SYSCLK_FSYS2_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0142 { EXYNOS5420_CMU_SYSCLK_PSGEN_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0143 { EXYNOS5420_CMU_SYSCLK_PERIC_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0144 { EXYNOS5420_CMU_SYSCLK_WCORE_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0145 { EXYNOS5420_CMU_RESET_FSYS2_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0146 { EXYNOS5420_CMU_RESET_PSGEN_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0147 { EXYNOS5420_CMU_RESET_PERIC_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0148 { EXYNOS5420_CMU_RESET_WCORE_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0149 { EXYNOS5_CMU_RESET_GSCL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0150 { EXYNOS5_CMU_RESET_ISP_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0151 { EXYNOS5_CMU_RESET_MFC_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0152 { EXYNOS5_CMU_RESET_G3D_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0153 { EXYNOS5420_CMU_RESET_DISP1_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0154 { EXYNOS5420_CMU_RESET_MAU_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0155 { EXYNOS5420_CMU_RESET_G2D_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0156 { EXYNOS5420_CMU_RESET_MSC_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0157 { EXYNOS5420_CMU_RESET_FSYS_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
0158 { PMU_TABLE_END,},
0159 };
0160
0161 static unsigned int const exynos5420_list_disable_pmu_reg[] = {
0162 EXYNOS5_CMU_CLKSTOP_GSCL_SYS_PWR_REG,
0163 EXYNOS5_CMU_CLKSTOP_ISP_SYS_PWR_REG,
0164 EXYNOS5_CMU_CLKSTOP_G3D_SYS_PWR_REG,
0165 EXYNOS5420_CMU_CLKSTOP_DISP1_SYS_PWR_REG,
0166 EXYNOS5420_CMU_CLKSTOP_MAU_SYS_PWR_REG,
0167 EXYNOS5420_CMU_CLKSTOP_G2D_SYS_PWR_REG,
0168 EXYNOS5420_CMU_CLKSTOP_MSC_SYS_PWR_REG,
0169 EXYNOS5420_CMU_CLKSTOP_FSYS_SYS_PWR_REG,
0170 EXYNOS5420_CMU_CLKSTOP_PSGEN_SYS_PWR_REG,
0171 EXYNOS5420_CMU_CLKSTOP_PERIC_SYS_PWR_REG,
0172 EXYNOS5420_CMU_CLKSTOP_WCORE_SYS_PWR_REG,
0173 EXYNOS5_CMU_SYSCLK_GSCL_SYS_PWR_REG,
0174 EXYNOS5_CMU_SYSCLK_ISP_SYS_PWR_REG,
0175 EXYNOS5_CMU_SYSCLK_G3D_SYS_PWR_REG,
0176 EXYNOS5420_CMU_SYSCLK_DISP1_SYS_PWR_REG,
0177 EXYNOS5420_CMU_SYSCLK_MAU_SYS_PWR_REG,
0178 EXYNOS5420_CMU_SYSCLK_G2D_SYS_PWR_REG,
0179 EXYNOS5420_CMU_SYSCLK_MSC_SYS_PWR_REG,
0180 EXYNOS5420_CMU_SYSCLK_FSYS_SYS_PWR_REG,
0181 EXYNOS5420_CMU_SYSCLK_FSYS2_SYS_PWR_REG,
0182 EXYNOS5420_CMU_SYSCLK_PSGEN_SYS_PWR_REG,
0183 EXYNOS5420_CMU_SYSCLK_PERIC_SYS_PWR_REG,
0184 EXYNOS5420_CMU_SYSCLK_WCORE_SYS_PWR_REG,
0185 EXYNOS5420_CMU_RESET_FSYS2_SYS_PWR_REG,
0186 EXYNOS5420_CMU_RESET_PSGEN_SYS_PWR_REG,
0187 EXYNOS5420_CMU_RESET_PERIC_SYS_PWR_REG,
0188 EXYNOS5420_CMU_RESET_WCORE_SYS_PWR_REG,
0189 EXYNOS5_CMU_RESET_GSCL_SYS_PWR_REG,
0190 EXYNOS5_CMU_RESET_ISP_SYS_PWR_REG,
0191 EXYNOS5_CMU_RESET_G3D_SYS_PWR_REG,
0192 EXYNOS5420_CMU_RESET_DISP1_SYS_PWR_REG,
0193 EXYNOS5420_CMU_RESET_MAU_SYS_PWR_REG,
0194 EXYNOS5420_CMU_RESET_G2D_SYS_PWR_REG,
0195 EXYNOS5420_CMU_RESET_MSC_SYS_PWR_REG,
0196 EXYNOS5420_CMU_RESET_FSYS_SYS_PWR_REG,
0197 };
0198
0199 static void exynos5420_powerdown_conf(enum sys_powerdown mode)
0200 {
0201 u32 this_cluster;
0202
0203 this_cluster = MPIDR_AFFINITY_LEVEL(read_cpuid_mpidr(), 1);
0204
0205
0206
0207
0208
0209 pmu_raw_writel(this_cluster, EXYNOS_IROM_DATA2);
0210 }
0211
0212 static void exynos5420_pmu_init(void)
0213 {
0214 unsigned int value;
0215 int i;
0216
0217
0218
0219
0220
0221
0222 for (i = 0; i < ARRAY_SIZE(exynos5420_list_disable_pmu_reg); i++)
0223 pmu_raw_writel(0, exynos5420_list_disable_pmu_reg[i]);
0224
0225
0226 pmu_raw_writel(EXYNOS5420_USE_STANDBY_WFI_ALL, S5P_CENTRAL_SEQ_OPTION);
0227
0228 value = pmu_raw_readl(EXYNOS_L2_OPTION(0));
0229 value &= ~EXYNOS_L2_USE_RETENTION;
0230 pmu_raw_writel(value, EXYNOS_L2_OPTION(0));
0231
0232 value = pmu_raw_readl(EXYNOS_L2_OPTION(1));
0233 value &= ~EXYNOS_L2_USE_RETENTION;
0234 pmu_raw_writel(value, EXYNOS_L2_OPTION(1));
0235
0236
0237
0238
0239
0240
0241 value = pmu_raw_readl(EXYNOS5420_LPI_MASK);
0242 value |= EXYNOS5420_ATB_ISP_ARM;
0243 pmu_raw_writel(value, EXYNOS5420_LPI_MASK);
0244
0245 value = pmu_raw_readl(EXYNOS5420_LPI_MASK1);
0246 value |= EXYNOS5420_ATB_KFC;
0247 pmu_raw_writel(value, EXYNOS5420_LPI_MASK1);
0248
0249
0250 value = pmu_raw_readl(EXYNOS5420_ARM_COMMON_OPTION);
0251 value |= EXYNOS5_SKIP_DEACTIVATE_ACEACP_IN_PWDN;
0252 pmu_raw_writel(value, EXYNOS5420_ARM_COMMON_OPTION);
0253
0254 value = pmu_raw_readl(EXYNOS5420_KFC_COMMON_OPTION);
0255 value |= EXYNOS5_SKIP_DEACTIVATE_ACEACP_IN_PWDN;
0256 pmu_raw_writel(value, EXYNOS5420_KFC_COMMON_OPTION);
0257
0258
0259 pmu_raw_writel(DUR_WAIT_RESET, EXYNOS5420_LOGIC_RESET_DURATION3);
0260
0261
0262 pmu_raw_writel(SPREAD_ENABLE, EXYNOS5420_ARM_INTR_SPREAD_ENABLE);
0263
0264 pmu_raw_writel(SPREAD_USE_STANDWFI,
0265 EXYNOS5420_ARM_INTR_SPREAD_USE_STANDBYWFI);
0266
0267 pmu_raw_writel(0x1, EXYNOS5420_UP_SCHEDULER);
0268
0269 pr_info("EXYNOS5420 PMU initialized\n");
0270 }
0271
0272 const struct exynos_pmu_data exynos5420_pmu_data = {
0273 .pmu_config = exynos5420_pmu_config,
0274 .pmu_init = exynos5420_pmu_init,
0275 .powerdown_conf = exynos5420_powerdown_conf,
0276 };