forked from Minki/linux
mfd: Optimised twl4030-power power scripts for the rx51
The power scripts optimisation was mainly done by: Tero Kristo <tero.kristo@nokia.com> and Arnaud Mandy <ext-arnaud.2.mandy@nokia.com> I'm only refactoring and testing it against the mainline kernel. Signed-off-by: Amit Kucheria <amit.kucheria@verdurent.com> Cc: Tero Kristo <tero.kristo@nokia.com> Cc: linux-omap@vger.kernel.org Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
24213ae19a
commit
3c684e84d1
@ -402,15 +402,9 @@ static struct twl4030_usb_data rx51_usb_data = {
|
|||||||
|
|
||||||
static struct twl4030_ins sleep_on_seq[] __initdata = {
|
static struct twl4030_ins sleep_on_seq[] __initdata = {
|
||||||
/*
|
/*
|
||||||
* Turn off VDD1 and VDD2.
|
* Turn off everything
|
||||||
*/
|
*/
|
||||||
{MSG_SINGULAR(DEV_GRP_P1, 0xf, RES_STATE_OFF), 4},
|
{MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, 1, 0, RES_STATE_SLEEP), 2},
|
||||||
{MSG_SINGULAR(DEV_GRP_P1, 0x10, RES_STATE_OFF), 2},
|
|
||||||
/*
|
|
||||||
* And also turn off the OMAP3 PLLs and the sysclk output.
|
|
||||||
*/
|
|
||||||
{MSG_SINGULAR(DEV_GRP_P1, 0x7, RES_STATE_OFF), 3},
|
|
||||||
{MSG_SINGULAR(DEV_GRP_P1, 0x17, RES_STATE_OFF), 3},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct twl4030_script sleep_on_script __initdata = {
|
static struct twl4030_script sleep_on_script __initdata = {
|
||||||
@ -421,14 +415,9 @@ static struct twl4030_script sleep_on_script __initdata = {
|
|||||||
|
|
||||||
static struct twl4030_ins wakeup_seq[] __initdata = {
|
static struct twl4030_ins wakeup_seq[] __initdata = {
|
||||||
/*
|
/*
|
||||||
* Reenable the OMAP3 PLLs.
|
* Reenable everything
|
||||||
* Wakeup VDD1 and VDD2.
|
|
||||||
* Reenable sysclk output.
|
|
||||||
*/
|
*/
|
||||||
{MSG_SINGULAR(DEV_GRP_P1, 0x7, RES_STATE_ACTIVE), 0x30},
|
{MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, 1, 0, RES_STATE_ACTIVE), 2},
|
||||||
{MSG_SINGULAR(DEV_GRP_P1, 0xf, RES_STATE_ACTIVE), 0x30},
|
|
||||||
{MSG_SINGULAR(DEV_GRP_P1, 0x10, RES_STATE_ACTIVE), 0x37},
|
|
||||||
{MSG_SINGULAR(DEV_GRP_P1, 0x19, RES_STATE_ACTIVE), 3},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct twl4030_script wakeup_script __initdata = {
|
static struct twl4030_script wakeup_script __initdata = {
|
||||||
@ -439,10 +428,9 @@ static struct twl4030_script wakeup_script __initdata = {
|
|||||||
|
|
||||||
static struct twl4030_ins wakeup_p3_seq[] __initdata = {
|
static struct twl4030_ins wakeup_p3_seq[] __initdata = {
|
||||||
/*
|
/*
|
||||||
* Wakeup VDD1 (dummy to be able to insert a delay)
|
* Reenable everything
|
||||||
* Enable CLKEN
|
|
||||||
*/
|
*/
|
||||||
{MSG_SINGULAR(DEV_GRP_P1, 0x17, RES_STATE_ACTIVE), 3},
|
{MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, 1, 0, RES_STATE_ACTIVE), 2},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct twl4030_script wakeup_p3_script __initdata = {
|
static struct twl4030_script wakeup_p3_script __initdata = {
|
||||||
@ -463,12 +451,11 @@ static struct twl4030_ins wrst_seq[] __initdata = {
|
|||||||
{MSG_SINGULAR(DEV_GRP_NULL, RES_RESET, RES_STATE_OFF), 2},
|
{MSG_SINGULAR(DEV_GRP_NULL, RES_RESET, RES_STATE_OFF), 2},
|
||||||
{MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, 0, 1, RES_STATE_ACTIVE),
|
{MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_ALL, 0, 1, RES_STATE_ACTIVE),
|
||||||
0x13},
|
0x13},
|
||||||
{MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_PP, 0, 2, RES_STATE_WRST), 0x13},
|
|
||||||
{MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_PP, 0, 3, RES_STATE_OFF), 0x13},
|
{MSG_BROADCAST(DEV_GRP_NULL, RES_GRP_PP, 0, 3, RES_STATE_OFF), 0x13},
|
||||||
{MSG_SINGULAR(DEV_GRP_NULL, RES_VDD1, RES_STATE_WRST), 0x13},
|
{MSG_SINGULAR(DEV_GRP_NULL, RES_VDD1, RES_STATE_WRST), 0x13},
|
||||||
{MSG_SINGULAR(DEV_GRP_NULL, RES_VDD2, RES_STATE_WRST), 0x13},
|
{MSG_SINGULAR(DEV_GRP_NULL, RES_VDD2, RES_STATE_WRST), 0x13},
|
||||||
{MSG_SINGULAR(DEV_GRP_NULL, RES_VPLL1, RES_STATE_WRST), 0x35},
|
{MSG_SINGULAR(DEV_GRP_NULL, RES_VPLL1, RES_STATE_WRST), 0x35},
|
||||||
{MSG_SINGULAR(DEV_GRP_P1, RES_HFCLKOUT, RES_STATE_ACTIVE), 2},
|
{MSG_SINGULAR(DEV_GRP_P3, RES_HFCLKOUT, RES_STATE_ACTIVE), 2},
|
||||||
{MSG_SINGULAR(DEV_GRP_NULL, RES_RESET, RES_STATE_ACTIVE), 2},
|
{MSG_SINGULAR(DEV_GRP_NULL, RES_RESET, RES_STATE_ACTIVE), 2},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -490,22 +477,81 @@ static struct twl4030_script *twl4030_scripts[] __initdata = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct twl4030_resconfig twl4030_rconfig[] __initdata = {
|
static struct twl4030_resconfig twl4030_rconfig[] __initdata = {
|
||||||
{ .resource = RES_VINTANA1, .devgroup = -1, .type = -1, .type2 = 1 },
|
{ .resource = RES_VDD1, .devgroup = -1,
|
||||||
{ .resource = RES_VINTANA2, .devgroup = -1, .type = -1, .type2 = 1 },
|
.type = 1, .type2 = -1, .remap_off = RES_STATE_OFF,
|
||||||
{ .resource = RES_VINTDIG, .devgroup = -1, .type = -1, .type2 = 1 },
|
.remap_sleep = RES_STATE_OFF
|
||||||
{ .resource = RES_VMMC1, .devgroup = -1, .type = -1, .type2 = 3},
|
},
|
||||||
{ .resource = RES_VMMC2, .devgroup = DEV_GRP_NULL, .type = -1,
|
{ .resource = RES_VDD2, .devgroup = -1,
|
||||||
.type2 = 3},
|
.type = 1, .type2 = -1, .remap_off = RES_STATE_OFF,
|
||||||
{ .resource = RES_VAUX1, .devgroup = -1, .type = -1, .type2 = 3},
|
.remap_sleep = RES_STATE_OFF
|
||||||
{ .resource = RES_VAUX2, .devgroup = -1, .type = -1, .type2 = 3},
|
},
|
||||||
{ .resource = RES_VAUX3, .devgroup = -1, .type = -1, .type2 = 3},
|
{ .resource = RES_VPLL1, .devgroup = -1,
|
||||||
{ .resource = RES_VAUX4, .devgroup = -1, .type = -1, .type2 = 3},
|
.type = 1, .type2 = -1, .remap_off = RES_STATE_OFF,
|
||||||
{ .resource = RES_VPLL2, .devgroup = -1, .type = -1, .type2 = 3},
|
.remap_sleep = RES_STATE_OFF
|
||||||
{ .resource = RES_VDAC, .devgroup = -1, .type = -1, .type2 = 3},
|
},
|
||||||
{ .resource = RES_VSIM, .devgroup = DEV_GRP_NULL, .type = -1,
|
{ .resource = RES_VPLL2, .devgroup = -1,
|
||||||
.type2 = 3},
|
.type = -1, .type2 = 3, .remap_off = -1, .remap_sleep = -1
|
||||||
{ .resource = RES_CLKEN, .devgroup = DEV_GRP_P3, .type = -1,
|
},
|
||||||
.type2 = 1 },
|
{ .resource = RES_VAUX1, .devgroup = -1,
|
||||||
|
.type = -1, .type2 = 3, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_VAUX2, .devgroup = -1,
|
||||||
|
.type = -1, .type2 = 3, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_VAUX3, .devgroup = -1,
|
||||||
|
.type = -1, .type2 = 3, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_VAUX4, .devgroup = -1,
|
||||||
|
.type = -1, .type2 = 3, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_VMMC1, .devgroup = -1,
|
||||||
|
.type = -1, .type2 = 3, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_VMMC2, .devgroup = -1,
|
||||||
|
.type = -1, .type2 = 3, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_VDAC, .devgroup = -1,
|
||||||
|
.type = -1, .type2 = 3, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_VSIM, .devgroup = -1,
|
||||||
|
.type = -1, .type2 = 3, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_VINTANA1, .devgroup = DEV_GRP_P1 | DEV_GRP_P3,
|
||||||
|
.type = -1, .type2 = -1, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_VINTANA2, .devgroup = DEV_GRP_P1 | DEV_GRP_P3,
|
||||||
|
.type = 1, .type2 = -1, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_VINTDIG, .devgroup = DEV_GRP_P1 | DEV_GRP_P3,
|
||||||
|
.type = -1, .type2 = -1, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_VIO, .devgroup = DEV_GRP_P3,
|
||||||
|
.type = 1, .type2 = -1, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_CLKEN, .devgroup = DEV_GRP_P1 | DEV_GRP_P3,
|
||||||
|
.type = 1, .type2 = -1 , .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_REGEN, .devgroup = DEV_GRP_P1 | DEV_GRP_P3,
|
||||||
|
.type = 1, .type2 = -1, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_NRES_PWRON, .devgroup = DEV_GRP_P1 | DEV_GRP_P3,
|
||||||
|
.type = 1, .type2 = -1, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_SYSEN, .devgroup = DEV_GRP_P1 | DEV_GRP_P3,
|
||||||
|
.type = 1, .type2 = -1, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_HFCLKOUT, .devgroup = DEV_GRP_P3,
|
||||||
|
.type = 1, .type2 = -1, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_32KCLKOUT, .devgroup = -1,
|
||||||
|
.type = 1, .type2 = -1, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_RESET, .devgroup = -1,
|
||||||
|
.type = 1, .type2 = -1, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
|
{ .resource = RES_Main_Ref, .devgroup = -1,
|
||||||
|
.type = 1, .type2 = -1, .remap_off = -1, .remap_sleep = -1
|
||||||
|
},
|
||||||
{ 0, 0},
|
{ 0, 0},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user