Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[firefly-linux-kernel-4.4.55.git] / drivers / mfd / twl4030-power.c
index e7688b04126498853fe266133baebbc72a8bb62b..d423e0c4176b600db5a5dfe511a6d9f05da7e143 100644 (file)
@@ -64,8 +64,8 @@ static u8 twl4030_start_script_address = 0x2b;
 #define R_MEMORY_DATA          PHY_TO_OFF_PM_MASTER(0x5a)
 
 #define R_PROTECT_KEY          0x0E
-#define KEY_1                  0xC0
-#define KEY_2                  0x0C
+#define R_KEY_1                        0xC0
+#define R_KEY_2                        0x0C
 
 /* resource configuration registers */
 
@@ -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;
@@ -418,12 +424,12 @@ void __init twl4030_power_init(struct twl4030_power_data *twl4030_scripts)
        struct twl4030_resconfig *resconfig;
        u8 address = twl4030_start_script_address;
 
-       err = twl4030_i2c_write_u8(TWL4030_MODULE_PM_MASTER, KEY_1,
+       err = twl4030_i2c_write_u8(TWL4030_MODULE_PM_MASTER, R_KEY_1,
                                R_PROTECT_KEY);
        if (err)
                goto unlock;
 
-       err = twl4030_i2c_write_u8(TWL4030_MODULE_PM_MASTER, KEY_2,
+       err = twl4030_i2c_write_u8(TWL4030_MODULE_PM_MASTER, R_KEY_2,
                                R_PROTECT_KEY);
        if (err)
                goto unlock;