|
@@ -379,6 +379,7 @@ static int __init load_twl4030_script(struct twl4030_script *tscript,
|
|
|
u8 address)
|
|
|
{
|
|
|
int err;
|
|
|
+ static int order;
|
|
|
|
|
|
/* Make sure the script isn't going beyond last valid address (0x3f) */
|
|
|
if ((address + tscript->size) > END_OF_SCRIPT) {
|
|
@@ -399,6 +400,7 @@ static int __init load_twl4030_script(struct twl4030_script *tscript,
|
|
|
err = twl4030_config_wakeup12_sequence(address);
|
|
|
if (err)
|
|
|
goto out;
|
|
|
+ order = 1;
|
|
|
}
|
|
|
if (tscript->flags & TWL4030_WAKEUP3_SCRIPT) {
|
|
|
err = twl4030_config_wakeup3_sequence(address);
|
|
@@ -406,6 +408,10 @@ static int __init load_twl4030_script(struct twl4030_script *tscript,
|
|
|
goto out;
|
|
|
}
|
|
|
if (tscript->flags & TWL4030_SLEEP_SCRIPT)
|
|
|
+ if (order)
|
|
|
+ pr_warning("TWL4030: Bad order of scripts (sleep "\
|
|
|
+ "script before wakeup) Leads to boot"\
|
|
|
+ "failure on some boards\n");
|
|
|
err = twl4030_config_sleep_sequence(address);
|
|
|
out:
|
|
|
return err;
|