0xd8001e02, 0x00a00402, 0xf0000000, 0x17c07c1f, 0x1900001f, 0x10006014, 0x1950001f, 0x10006014, 0xa1508405, 0xe1000005, 0x1900001f, 0x10006814, 0xe100001f, 0x812ab401, 0xd8002064, 0x17c07c1f, 0x1880001f, 0x10006284, 0x18d0001f, 0x10006284, 0x80f20403, 0xe0800003, 0x80f08403, 0xe0800003, 0x1900001f, 0x10000338, 0x1950001f, 0x10000338, 0x81730405, 0xe1000005, 0xa0c00403, 0xe0800003, 0x1900001f, 0x10006014, 0x1950001f, 0x10006014, 0x81708405, 0xe1000005, 0x1900001f, 0x10006b6c, 0xe100001f, 0xf0000000, 0x17c07c1f }; static struct pcm_desc vcore_dvfs_pcm = { .version = "pcm_vcore_dvfs_v0.1_20150225", .base = vcore_dvfs_binary, .size = 289, .sess = 1, .replace = 1, .vec0 = EVENT_VEC(23, 1, 0, 83), /* FUNC_MD_VRF18_WAKEUP */ .vec1 = EVENT_VEC(28, 1, 0, 106), /* FUNC_MD_VRF18_SLEEP */ .vec2 = EVENT_VEC(11, 1, 0, 129), /* FUNC_VCORE_HIGH */ .vec3 = EVENT_VEC(12, 1, 0, 164), /* FUNC_VCORE_LOW */ }; static struct pwr_ctrl vcore_dvfs_ctrl = { .md_vrf18_req_mask_b = 0, /* mask to avoid affecting apsrc_state */ .conn_mask = 1, .md1_req_mask = 1, .md2_req_mask = 1, .ccif0_to_ap_mask = 1, .ccif0_to_md_mask = 1, .ccif1_to_ap_mask = 1,
0xe100001f, 0x812ab401, 0xd8006fe4, 0x17c07c1f, 0x1880001f, 0x10006284, 0x18d0001f, 0x10006284, 0x80f20403, 0xe0800003, 0x80f08403, 0xe0800003, 0x1900001f, 0x10000338, 0x1950001f, 0x10000338, 0x81730405, 0xe1000005, 0xa0c00403, 0xe0800003, 0x1900001f, 0x10006014, 0x1950001f, 0x10006014, 0x81708405, 0xe1000005, 0x1900001f, 0x10006b6c, 0xe100001f, 0x81441801, 0xd8007525, 0x17c07c1f, 0x18c0001f, 0x10001124, 0x1910001f, 0x10001124, 0xa1108404, 0xe0c00004, 0x1910001f, 0x10001124, 0x1a00001f, 0x10006604, 0xe2200007, 0xf0000000, 0x17c07c1f }; static struct pcm_desc dpidle_pcm = { .version = "pcm_deepidle_v0.5.8.1_20150306", .base = dpidle_binary, .size = 939, .sess = 2, .replace = 0, .vec0 = EVENT_VEC(23, 1, 0, 0), /* FUNC_MD_VRF18_WAKEUP */ .vec1 = EVENT_VEC(28, 1, 0, 36), /* FUNC_MD_VRF18_SLEEP */ .vec2 = EVENT_VEC(11, 1, 0, 72), /* FUNC_26M_WAKEUP */ .vec3 = EVENT_VEC(12, 1, 0, 88), /* FUNC_26M_SLEEP */ .vec4 = EVENT_VEC(30, 1, 0, 109), /* FUNC_APSRC_WAKEUP */ .vec5 = EVENT_VEC(31, 1, 0, 196), /* FUNC_APSRC_SLEEP */ .vec6 = EVENT_VEC(11, 1, 0, 277), /* FUNC_VCORE_HIGH */ .vec7 = EVENT_VEC(12, 1, 0, 304), /* FUNC_VCORE_LOW */ }; static struct pwr_ctrl dpidle_ctrl = { .wake_src = WAKE_SRC_FOR_DPIDLE, .wake_src_md32 = WAKE_SRC_FOR_MD32, .r0_ctrl_en = 1, .r7_ctrl_en = 1,
0x1890001f, 0x100062c4, 0xa0940402, 0xe2000002, 0xf0000000, 0x17c07c1f, 0x1900001f, 0x10006014, 0x1950001f, 0x10006014, 0xa1508405, 0xe1000005, 0x1900001f, 0x10006814, 0xe100001f, 0x812ab401, 0xd8006d24, 0x17c07c1f, 0x1880001f, 0x10006284, 0x18d0001f, 0x10006284, 0x80f20403, 0xe0800003, 0x80f08403, 0xe0800003, 0x1900001f, 0x10000338, 0x1950001f, 0x10000338, 0x81730405, 0xe1000005, 0xa0c00403, 0xe0800003, 0x1900001f, 0x10006014, 0x1950001f, 0x10006014, 0x81708405, 0xe1000005, 0x1900001f, 0x10006b6c, 0xe100001f, 0xf0000000, 0x17c07c1f }; static struct pcm_desc sodi_pcm = { .version = "pcm_sodi_v0.5_20150130", .base = sodi_binary, .size = 903, .sess = 2, .replace = 0, .vec0 = EVENT_VEC(30, 1, 0, 0), /* FUNC_APSRC_WAKEUP */ .vec1 = EVENT_VEC(31, 1, 0, 88), /* FUNC_APSRC_SLEEP */ .vec2 = EVENT_VEC(11, 1, 0, 168), /* FUNC_VCORE_HIGH */ .vec3 = EVENT_VEC(12, 1, 0, 195), /* FUNC_VCORE_LOW */ .vec4 = EVENT_VEC(11, 1, 0, 228), /* FUNC_VCORE_HIGH2 */ .vec5 = EVENT_VEC(12, 1, 0, 258), /* FUNC_VCORE_LOW2 */ .vec6 = EVENT_VEC(30, 1, 0, 353), /* FUNC_UHPM_WAKEUP */ .vec7 = EVENT_VEC(31, 1, 0, 399), /* FUNC_UHPM_SLEEP */ }; #else static const u32 sodi_binary[] = { 0x814e0001, 0xd8200405, 0x17c07c1f, 0x18c0001f, 0x102135cc, 0x1910001f, 0x102135cc, 0x813f8404, 0xe0c00004, 0x1910001f, 0x102135cc, 0x81411801, 0xd8000285, 0x17c07c1f, 0x18c0001f, 0x10006240, 0xe0e00016, 0xe0e0001e, 0xe0e0000e, 0xe0e0000f, 0x803e0400, 0x1b80001f, 0x20000222, 0x80380400, 0x1b80001f, 0x20000280, 0x803b0400, 0x1b80001f, 0x2000001a, 0x803d0400,
0x40000000, 0x18d0001f, 0xa0000000, 0xd8001aa2, 0x00a00402, 0xd8201ca2, 0x17c07c1f, 0x18d0001f, 0x40000000, 0x18d0001f, 0x40000000, 0xd8001ba2, 0x00a00402, 0xf0000000, 0x17c07c1f, 0x1900001f, 0x10006014, 0x1950001f, 0x10006014, 0xa1508405, 0xe1000005, 0x1900001f, 0x10006814, 0xe100001f, 0x812ab401, 0xd8001e04, 0x17c07c1f, 0x1880001f, 0x10006284, 0x18d0001f, 0x10006284, 0x80f20403, 0xe0800003, 0x80f08403, 0xe0800003, 0x1900001f, 0x10006014, 0x1950001f, 0x10006014, 0x81708405, 0xe1000005, 0x1900001f, 0x10006b6c, 0xe100001f, 0xf0000000, 0x17c07c1f }; static struct pcm_desc vcore_dvfs_pcm = { .version = "pcm_vcore_dvfs_v0.3.9.1_20150901-slow_dvs", .base = vcore_dvfs_binary, .size = 262, .sess = 1, .replace = 1, .vec0 = EVENT_VEC(23, 1, 0, 74), /* FUNC_MD_VRF18_WAKEUP */ .vec1 = EVENT_VEC(28, 1, 0, 92), /* FUNC_MD_VRF18_SLEEP */ .vec2 = EVENT_VEC(11, 1, 0, 110), /* FUNC_26M_WAKEUP */ .vec3 = EVENT_VEC(12, 1, 0, 140), /* FUNC_26M_SLEEP */ }; static struct pwr_ctrl vcore_dvfs_ctrl = { .md1_req_mask = 0, .md2_req_mask = 0, .conn_mask = 0, }; struct spm_lp_scen __spm_vcore_dvfs = { .pcmdesc = &vcore_dvfs_pcm, .pwrctrl = &vcore_dvfs_ctrl, };
0x1b80001f, 0x20000080, 0xc0c02780, 0x1280041f, 0x19c0001f, 0x60415820, 0xc2803540, 0x1293841f, 0x81441801, 0xd82061a5, 0x17c07c1f, 0x18c0001f, 0x10006b14, 0xe0c0000c, 0x18c0001f, 0x10006b68, 0x1950001f, 0x100063c0, 0xe0c00005, 0x1b00001f, 0x00001001, 0xe8208000, 0x10006310, 0x0b160308, 0x1b80001f, 0x900a0000, 0x88900001, 0x10006814, 0xd8205ea2, 0x17c07c1f, 0x1910001f, 0x10006b0c, 0x1a00001f, 0x100062c4, 0x1950001f, 0x100062c4, 0x80809001, 0x81748405, 0xa1548805, 0x80801001, 0x81750405, 0xa1550805, 0xe2000005, 0x1ac0001f, 0x55aa55aa, 0x10007c1f, 0xf0000000 }; static struct pcm_desc sodi_pcm = { .version = "pcm_sodi_v9.14_20150118", .base = sodi_binary, .size = 785, .sess = 2, .replace = 0, .vec0 = EVENT_VEC(30, 1, 0, 0), /* FUNC_APSRC_WAKEUP */ .vec1 = EVENT_VEC(31, 1, 0, 88), /* FUNC_APSRC_SLEEP */ .vec2 = EVENT_VEC(11, 1, 0, 168), /* FUNC_VCORE_HIGH */ .vec3 = EVENT_VEC(12, 1, 0, 195), /* FUNC_VCORE_LOW */ .vec4 = EVENT_VEC(11, 1, 0, 228), /* FUNC_VCORE_HIGH2 */ .vec5 = EVENT_VEC(12, 1, 0, 258), /* FUNC_VCORE_LOW2 */ }; #else static const u32 sodi_binary[] = { 0x814e0001, 0xd82003c5, 0x17c07c1f, 0x81411801, 0xd8000245, 0x17c07c1f, 0x18c0001f, 0x102135cc, 0x1910001f, 0x102135cc, 0x813f8404, 0xe0c00004, 0x18c0001f, 0x10006240, 0xe0e00016, 0xe0e0001e, 0xe0e0000e, 0xe0e0000f, 0x803e0400, 0x1b80001f, 0x20000222, 0x80380400, 0x1b80001f, 0x20000280, 0x803b0400, 0x1b80001f, 0x2000001a, 0x803d0400, 0x1b80001f, 0x20000208, 0x80340400, 0x80310400, 0x1950001f, 0x10006b04, 0x81439401, 0xd8000945, 0x17c07c1f, 0x81431801, 0xd8000945, 0x17c07c1f, 0x1b80001f, 0x2000000a,
0x1a00001f, 0x11008000, 0xd800684a, 0xe220005d, 0xd820686a, 0xe2200000, 0xe2200001, 0xe8208000, 0x11008024, 0x00000001, 0x1b80001f, 0x20000424, 0xf0000000, 0x17c07c1f, 0xa1d10407, 0x1b80001f, 0x20000020, 0xf0000000, 0x17c07c1f }; /* * PCM binary for suspend scenario */ static const struct pcm_desc suspend_pcm_ca7 = { .version = "pcm_suspend_20150805_V1", .base = suspend_binary_ca7, .size = 847, .sess = 2, .replace = 0, .vec0 = EVENT_VEC(11, 1, 0, 0), .vec1 = EVENT_VEC(12, 1, 0, 54), .vec2 = EVENT_VEC(30, 1, 0, 143), .vec3 = EVENT_VEC(31, 1, 0, 277), }; /* * SPM settings for suspend scenario */ static struct pwr_ctrl spm_ctrl = { .wake_src = WAKE_SRC_FOR_SUSPEND, .wake_src_md32 = WAKE_SRC_FOR_MD32, .r0_ctrl_en = 1, .r7_ctrl_en = 1, .infra_dcm_lock = 1, .wfi_op = WFI_OP_AND,
0x18d0001f, 0xa0000000, 0xd8002b02, 0x00a00402, 0xd8202d02, 0x17c07c1f, 0x18d0001f, 0x40000000, 0x18d0001f, 0x40000000, 0xd8002c02, 0x00a00402, 0xf0000000, 0x17c07c1f, 0x1900001f, 0x10006014, 0x1950001f, 0x10006014, 0xa1508405, 0xe1000005, 0x1900001f, 0x10006814, 0xe100001f, 0x812ab401, 0xd8002e64, 0x17c07c1f, 0x1880001f, 0x10006284, 0x18d0001f, 0x10006284, 0x80f20403, 0xe0800003, 0x80f08403, 0xe0800003, 0x1900001f, 0x10006014, 0x1950001f, 0x10006014, 0x81708405, 0xe1000005, 0x1900001f, 0x10006b6c, 0xe100001f, 0xf0000000, 0x17c07c1f }; static struct pcm_desc vcore_dvfs_pcm = { .version = "pcm_vcore_dvfs_v0.5.8_20150904-slow_dvs", .base = vcore_dvfs_binary, .size = 393, .sess = 1, .replace = 1, .vec0 = EVENT_VEC(23, 1, 0, 83), /* FUNC_MD_VRF18_WAKEUP */ .vec1 = EVENT_VEC(28, 1, 0, 113), /* FUNC_MD_VRF18_SLEEP */ .vec2 = EVENT_VEC(11, 1, 0, 143), /* FUNC_26M_WAKEUP */ .vec3 = EVENT_VEC(12, 1, 0, 170), /* FUNC_26M_SLEEP */ .vec4 = EVENT_VEC(30, 1, 0, 197), /* FUNC_UHPM_WAKEUP */ .vec5 = EVENT_VEC(31, 1, 0, 248), /* FUNC_UHPM_SLEEP */ }; static struct pwr_ctrl vcore_dvfs_ctrl = { .md1_req_mask = 0, .conn_mask = 0, .md_vrf18_req_mask_b = 0, /* mask to avoid affecting apsrc_state */ .md2_req_mask = 1, .ccif0_to_ap_mask = 1,
0x1380201f, 0xe2e0000c, 0xe2e0000d, 0xf0000000, 0x17c07c1f, 0xa1d40407, 0x1391841f, 0xa1d90407, 0x1393041f, 0xf0000000, 0x17c07c1f, 0x18d0001f, 0x10006604, 0x10cf8c1f, 0xd8206b23, 0x17c07c1f, 0xf0000000, 0x17c07c1f, 0xe8208000, 0x11008014, 0x00000002, 0xe8208000, 0x11008020, 0x00000101, 0xe8208000, 0x11008004, 0x000000d0, 0x1a00001f, 0x11008000, 0xd8006dea, 0xe220005d, 0xd8206e0a, 0xe2200000, 0xe2200001, 0xe8208000, 0x11008024, 0x00000001, 0x1b80001f, 0x20000424, 0xf0000000, 0x17c07c1f, 0xa1d10407, 0x1b80001f, 0x20000020, 0xf0000000, 0x17c07c1f }; static struct pcm_desc suspend_pcm_ca15 = { .version = "pcm_suspend_v32.19_20140930_CA15", .base = suspend_binary_ca15, .size = 892, .sess = 2, .replace = 0, .vec0 = EVENT_VEC(11, 1, 0, 0), /* FUNC_26M_WAKEUP */ .vec1 = EVENT_VEC(12, 1, 0, 54), /* FUNC_26M_SLEEP */ .vec2 = EVENT_VEC(30, 1, 0, 143), /* FUNC_APSRC_WAKEUP */ .vec3 = EVENT_VEC(31, 1, 0, 277), /* FUNC_APSRC_SLEEP */ }; static const u32 suspend_binary_ca7[] = { 0x81f58407, 0x81f68407, 0x803a0400, 0x803a8400, 0x1b80001f, 0x20000000, 0x80300400, 0x80318400, 0x80328400, 0xa1d28407, 0x81f20407, 0x81409801, 0xd8000245, 0x17c07c1f, 0x18c0001f, 0x10006234, 0xc0c03260, 0x1200041f, 0x80310400, 0x1b80001f, 0x2000000a, 0xa0110400, 0x18c0001f, 0x100062c8, 0xe0e00010, 0xe0e00030, 0xe0e00070, 0xe0e000f0, 0x1b80001f, 0x2000001a, 0xe0e00ff0, 0xe8208000, 0x10006354, 0xfffe7fff, 0xe8208000, 0x10006834, 0x00000010, 0x81f00407, 0xa1dd0407, 0x81fd0407, 0xc2803840, 0x1290041f, 0x8880000c, 0x2f7be75f, 0xd8200642, 0x17c07c1f, 0x1b00001f, 0x7fffe7ff, 0xd0000680, 0x17c07c1f, 0x1b00001f, 0x7ffff7ff, 0xf0000000, 0x17c07c1f,
0x1ac0001f, 0x55aa55aa, 0x10007c1f, 0x80cab001, 0x808cb401, 0x80800c02, 0xd82044a2, 0x17c07c1f, 0xa1d78407, 0x1240301f, 0xe8208000, 0x100063e0, 0x00000001, 0x1b00001f, 0x00202000, 0x1b80001f, 0x80001000, 0x8880000c, 0x00200000, 0xd80046c2, 0x17c07c1f, 0xe8208000, 0x100063e0, 0x00000002, 0x1b80001f, 0x00001000, 0x809c840d, 0xd8204522, 0x17c07c1f, 0xa1d78407, 0x1890001f, 0x10006014, 0x18c0001f, 0x10006014, 0xa0978402, 0xe0c00002, 0x1b80001f, 0x00001000, 0xf0000000, 0xd800496a, 0x17c07c1f, 0xe2e00036, 0x1380201f, 0xe2e0003e, 0x1380201f, 0xe2e0002e, 0x1380201f, 0xd8204a6a, 0x17c07c1f, 0xe2e0006e, 0xe2e0004e, 0xe2e0004c, 0x1b80001f, 0x20000020, 0xe2e0004d, 0xf0000000, 0x17c07c1f }; static const pcm_desc_t pcm_suspend = { .base = __pcm_suspend, .size = 597, .sess = 3, .vec0 = EVENT_VEC(11, 1, 0, 0), /* 26M-wake event */ .vec1 = EVENT_VEC(12, 1, 0, 28), /* 26M-sleep event */ .vec2 = EVENT_VEC(30, 1, 0, 59), /* APSRC-wake event */ .vec3 = EVENT_VEC(31, 1, 0, 103), /* APSRC-sleep event */ }; /********************************************************** * PCM code for deep idle (v17rc3 @ 2013-05-21) **********************************************************/ #if SPM_CTRL_33VCORE || SPM_CTRL_33VRF18 static const u32 __pcm_dpidle[] = { 0x80318400, 0xc0c01540, 0x10c0041f, 0xc0c01a60, 0x1280041f, 0x1800001f, 0x17cf0f16, 0x1b00001f, 0x7ffff7ff, 0xf0000000, 0x17c07c1f, 0x1b00001f, 0x3fffe7ff, 0x1b80001f, 0x20000004, 0xd80003cc, 0x17c07c1f, 0xc0c01a60, 0x12807c1f, 0xc0c01540, 0x10c07c1f, 0x1800001f, 0x17cf0f36, 0x80c31801,
0x1ac0001f, 0x55aa55aa, 0x10007c1f, 0xf0000000, 0xd8006e4a, 0x17c07c1f, 0xe2e00036, 0x17c07c1f, 0x17c07c1f, 0xe2e0003e, 0x1380201f, 0xe2e0003c, 0xd8206f8a, 0x17c07c1f, 0x1b80001f, 0x20000018, 0xe2e0007c, 0x1b80001f, 0x20000003, 0xe2e0005c, 0xe2e0004c, 0xe2e0004d, 0xf0000000, 0x17c07c1f, 0xd800706a, 0x17c07c1f, 0xe2e0004f, 0xe2e0006f, 0xe2e0002f, 0xd820710a, 0x17c07c1f, 0xe2e0002e, 0xe2e0003e, 0xe2e00032, 0xf0000000, 0x17c07c1f, 0xa1d10407, 0x1b80001f, 0x20000020, 0xf0000000, 0x17c07c1f, 0xa1d40407, 0x1391841f, 0xa1d90407, 0xf0000000, 0x17c07c1f }; static struct pcm_desc suspend_pcm = { .version = "pcm_suspend_v34.5_20150120", .base = suspend_binary, .size = 916, .sess = 2, .replace = 0, .vec0 = EVENT_VEC(23, 1, 0, 0), /* FUNC_MD_VRF18_WAKEUP */ .vec1 = EVENT_VEC(28, 1, 0, 34), /* FUNC_MD_VRF18_SLEEP */ .vec2 = EVENT_VEC(11, 1, 0, 68), /* FUNC_26M_WAKEUP */ .vec3 = EVENT_VEC(12, 1, 0, 108), /* FUNC_26M_SLEEP */ .vec4 = EVENT_VEC(30, 1, 0, 169), /* FUNC_APSRC_WAKEUP */ .vec5 = EVENT_VEC(31, 1, 0, 256), /* FUNC_APSRC_SLEEP */ .vec6 = EVENT_VEC(11, 1, 0, 442), /* FUNC_VCORE_HIGH */ .vec7 = EVENT_VEC(12, 1, 0, 469), /* FUNC_VCORE_LOW */ }; #elif defined(CONFIG_ARCH_MT6735M) static const u32 suspend_binary[] = { 0x81429801, 0xd80001c5, 0x17c07c1f, 0x1a00001f, 0x10006604, 0xe2200007, 0x18c0001f, 0x10001124, 0x1910001f, 0x10001124, 0x81308404, 0xe0c00004, 0xc0c03da0, 0x17c07c1f, 0x1a00001f, 0x100062c4, 0x1890001f, 0x100062c4, 0xa0940402, 0xe2000002, 0x80c10001, 0x1b00001f, 0xbf7ce7ff, 0xd8200363, 0x17c07c1f, 0x1b00001f, 0x7f7ce7ff, 0xf0000000, 0x17c07c1f, 0x1a00001f,
0x80809001, 0x81748405, 0xa1548805, 0xe2000005, 0x1ac0001f, 0x55aa55aa, 0x10007c1f, 0xf0000000, 0xe8208000, 0x11012014, 0x00000002, 0xe8208000, 0x11012020, 0x00000001, 0xe8208000, 0x11012004, 0x000000d6, 0xe8208000, 0x11012040, 0x00000000, 0x1a00001f, 0x11012000, 0xd82074aa, 0x17c07c1f, 0xe2200088, 0xe2200002, 0xe8208000, 0x11012024, 0x00000001, 0x1b80001f, 0x20000158, 0xd0007580, 0x17c07c1f, 0xe2200088, 0xe2200000, 0xe8208000, 0x11012024, 0x00000001, 0x1b80001f, 0x20000158, 0xf0000000, 0x17c07c1f }; static struct pcm_desc sodi_pcm = { .version = "pcm_sodi_v0.2.4_20150407", .base = sodi_binary, .size = 942, .sess = 2, .replace = 0, .vec0 = EVENT_VEC(30, 1, 0, 0), /* FUNC_APSRC_WAKEUP */ .vec1 = EVENT_VEC(31, 1, 0, 92), /* FUNC_APSRC_SLEEP */ .vec2 = EVENT_VEC(11, 1, 0, 181), /* FUNC_VCORE_HIGH */ .vec3 = EVENT_VEC(12, 1, 0, 208), /* FUNC_VCORE_LOW */ .vec4 = EVENT_VEC(11, 1, 0, 241), /* FUNC_VCORE_HIGH2 */ .vec5 = EVENT_VEC(12, 1, 0, 271), /* FUNC_VCORE_LOW2 */ }; static struct pwr_ctrl sodi_ctrl = { .wake_src = WAKE_SRC_FOR_SODI, .r0_ctrl_en = 1, .r7_ctrl_en = 1, .ca7_wfi0_en = 1, .ca7_wfi1_en = 1,
0x1b80001f, 0x20000104, 0x80308400, 0x80320400, 0x81f38407, 0x81f98407, 0x81f40407, 0x81401801, 0xd8005325, 0x17c07c1f, 0x18c0001f, 0x10006290, 0x1212841f, 0xc0c027c0, 0x12807c1f, 0xc0c027c0, 0x1280041f, 0x18c0001f, 0x10006208, 0x1212841f, 0xc0c027c0, 0x12807c1f, 0xe8208000, 0x10006248, 0x00000001, 0x1b80001f, 0x20000080, 0xc0c027c0, 0x1280041f, 0x18c0001f, 0x10006200, 0x1212841f, 0xc0c027c0, 0x12807c1f, 0xe8208000, 0x1000625c, 0x00000000, 0x1b80001f, 0x20000080, 0xc0c027c0, 0x1280041f, 0x81f10407, 0x81f48407, 0xa1d60407, 0x1ac0001f, 0x55aa55aa, 0x10007c1f, 0xf0000000 }; static struct pcm_desc dpidle_pcm = { .version = "pcm_deepidle_v13.3_0303", .base = dpidle_binary, .size = 672, .sess = 2, .replace = 0, .vec0 = EVENT_VEC(11, 1, 0, 0), /* FUNC_26M_WAKEUP */ .vec1 = EVENT_VEC(12, 1, 0, 8), /* FUNC_26M_SLEEP */ .vec2 = EVENT_VEC(30, 1, 0, 24), /* FUNC_APSRC_WAKEUP */ .vec3 = EVENT_VEC(31, 1, 0, 125), /* FUNC_APSRC_SLEEP */ .vec4 = EVENT_VEC(20, 1, 0, 212), /* FUNC_AUDIO_REQ_WAKEUP */ .vec5 = EVENT_VEC(1, 1, 0, 241), /* FUNC_AUDIO_REQ_SLEEP */ }; static struct pwr_ctrl dpidle_ctrl = { .wake_src = WAKE_SRC_FOR_DPIDLE, .wake_src_md32 = WAKE_SRC_FOR_MD32, .r0_ctrl_en = 1, .r7_ctrl_en = 1, .infra_dcm_lock = 1, .wfi_op = WFI_OP_AND,
0x1380201f, 0xd820672a, 0x17c07c1f, 0xe2e0006e, 0xe2e0004e, 0xe2e0004c, 0x1b80001f, 0x20000020, 0xe2e0004d, 0xf0000000, 0x17c07c1f, 0xd8206869, 0x17c07c1f, 0xe2e0000d, 0xe2e0000c, 0xe2e0001c, 0xe2e0001e, 0xe2e00016, 0xe2e00012, 0xf0000000, 0x17c07c1f, 0xd82069e9, 0x17c07c1f, 0xe2e00016, 0x1380201f, 0xe2e0001e, 0x1380201f, 0xe2e0001c, 0x1380201f, 0xe2e0000c, 0xe2e0000d, 0xf0000000, 0x17c07c1f, 0xa1d40407, 0x1391841f, 0xa1d90407, 0x1393041f, 0xf0000000, 0x17c07c1f, 0x1910001f, 0x10006604, 0x10cf901f, 0xd8206ae3, 0x17c07c1f, 0xf0000000, 0x17c07c1f }; static struct pcm_desc dpidle_pcm = { .version = "pcm_deepidle_e2_v15.15_2014_0617_srf_mr4_txrf", .base = dpidle_binary, .size = 862, .sess = 2, .replace = 0, .vec0 = EVENT_VEC(11, 1, 0, 0), /* FUNC_26M_WAKEUP */ .vec1 = EVENT_VEC(12, 1, 0, 30), /* FUNC_26M_SLEEP */ .vec2 = EVENT_VEC(30, 1, 0, 46), /* FUNC_APSRC_WAKEUP */ .vec3 = EVENT_VEC(31, 1, 0, 165), /* FUNC_APSRC_SLEEP */ }; #else /* !SPM_CTRL_BIG_CPU */ static const u32 dpidle_binary[] = { 0x1800001f, 0x17cf7f16, 0xc0c026a0, 0x10c0041f, 0xe8208000, 0x10006b04, 0x00000008, 0xe8208000, 0x10006b04, 0x00000010, 0xe8208000, 0x10006354, 0xfffe7fff, 0xe8208000, 0x10006b04, 0x00000000, 0xc2802e00, 0x1290041f, 0x8880000c, 0x2f7be75f, 0xd8200342, 0x17c07c1f, 0x1b00001f, 0x7fffe7ff, 0xd0000380, 0x17c07c1f, 0x1b00001f, 0x7ffff7ff, 0xf0000000, 0x17c07c1f, 0xe8208000, 0x10006354, 0xffffffff, 0xc0c026a0, 0x10c07c1f, 0xe8208000, 0x10006b04, 0x00000002, 0xc2802e00, 0x1290841f, 0x1800001f, 0x17cf7f36, 0x1b00001f, 0x3fffefff, 0xf0000000, 0x17c07c1f, 0x81411801, 0xd8000985,
0x17c07c1f, 0x1a00001f, 0x10006604, 0xe2200007, 0xf0000000, 0x17c07c1f, 0xe8208000, 0x11012014, 0x00000002, 0xe8208000, 0x11012020, 0x00000001, 0xe8208000, 0x11012004, 0x000000d6, 0xe8208000, 0x11012040, 0x00000000, 0x1a00001f, 0x11012000, 0xd8207b2a, 0x17c07c1f, 0xe2200088, 0xe2200002, 0xe8208000, 0x11012024, 0x00000001, 0x1b80001f, 0x20000158, 0xd0007c00, 0x17c07c1f, 0xe2200088, 0xe2200000, 0xe8208000, 0x11012024, 0x00000001, 0x1b80001f, 0x20000158, 0xf0000000, 0x17c07c1f }; static struct pcm_desc dpidle_pcm = { .version = "pcm_deepidle_v0.2.5_20150413", .base = dpidle_binary, .size = 994, .sess = 2, .replace = 0, .vec0 = EVENT_VEC(23, 1, 0, 0), /* FUNC_MD_VRF18_WAKEUP */ .vec1 = EVENT_VEC(28, 1, 0, 33), /* FUNC_MD_VRF18_SLEEP */ .vec2 = EVENT_VEC(11, 1, 0, 66), /* FUNC_26M_WAKEUP */ .vec3 = EVENT_VEC(12, 1, 0, 88), /* FUNC_26M_SLEEP */ .vec4 = EVENT_VEC(30, 1, 0, 110), /* FUNC_APSRC_WAKEUP */ .vec5 = EVENT_VEC(31, 1, 0, 197), /* FUNC_APSRC_SLEEP */ .vec6 = EVENT_VEC(11, 1, 0, 285), /* FUNC_VCORE_HIGH */ .vec7 = EVENT_VEC(12, 1, 0, 317), /* FUNC_VCORE_LOW */ }; static struct pwr_ctrl dpidle_ctrl = { .wake_src = WAKE_SRC_FOR_DPIDLE, .wake_src_md32 = WAKE_SRC_FOR_MD32, .r0_ctrl_en = 1, .r7_ctrl_en = 1, .infra_dcm_lock = 1,
0xf0000000, 0x17c07c1f, 0xa1d40407, 0x1391841f, 0xa1d90407, 0x1393041f, 0xf0000000, 0x17c07c1f, 0x18d0001f, 0x10006604, 0x10cf8c1f, 0xd8206103, 0x17c07c1f, 0xf0000000, 0x17c07c1f, 0xe8208000, 0x11008014, 0x00000002, 0xe8208000, 0x11008020, 0x00000101, 0xe8208000, 0x11008004, 0x000000d0, 0x1a00001f, 0x11008000, 0xd80063ca, 0xe220005d, 0xd82063ea, 0xe2200000, 0xe2200001, 0xe8208000, 0x11008024, 0x00000001, 0x1b80001f, 0x20000424, 0xf0000000, 0x17c07c1f, 0xa1d10407, 0x1b80001f, 0x20000020, 0xf0000000, 0x17c07c1f }; static struct pcm_desc sodi_pcm = { .version = "pcm_sodi_v2.10_20141204", .base = sodi_binary, .size = 811, .sess = 2, .replace = 0, .vec2 = EVENT_VEC(30, 1, 0, 0), /* FUNC_APSRC_WAKEUP */ .vec3 = EVENT_VEC(31, 1, 0, 125), /* FUNC_APSRC_SLEEP */ }; static struct pwr_ctrl sodi_ctrl = { .wake_src = WAKE_SRC_FOR_SODI, .wake_src_md32 = WAKE_SRC_FOR_MD32, .r0_ctrl_en = 1, .r7_ctrl_en = 1, .wfi_op = WFI_OP_AND, #if 1 .ca15_wfi0_en = 1, .ca15_wfi1_en = 1,