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,
示例#9
0
    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,
示例#14
0
	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,