Loading drivers/power/reset/msm-poweroff.c +18 −1 Original line number Diff line number Diff line Loading @@ -328,11 +328,28 @@ static void msm_restart_prepare(const char *cmd) __raw_writel(0x7766550a, restart_reason); } else if (!strncmp(cmd, "oem-", 4)) { unsigned long code; unsigned long reset_reason; int ret; ret = kstrtoul(cmd + 4, 16, &code); if (!ret) if (!ret) { /* Bit-2 to bit-7 of SOFT_RB_SPARE for hard * reset reason: * Value 0 to 31 for common defined features * Value 32 to 63 for oem specific features */ reset_reason = code + PON_RESTART_REASON_OEM_MIN; if (reset_reason > PON_RESTART_REASON_OEM_MAX || reset_reason < PON_RESTART_REASON_OEM_MIN) { pr_err("Invalid oem reset reason: %lx\n", reset_reason); } else { qpnp_pon_set_restart_reason( reset_reason); } __raw_writel(0x6f656d00 | (code & 0xff), restart_reason); } } else if (!strncmp(cmd, "edl", 3)) { enable_emergency_dload_mode(); } else { Loading include/linux/input/qpnp-power-on.h +5 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ enum pon_power_off_type { }; enum pon_restart_reason { /* 0 ~ 31 for common defined features */ PON_RESTART_REASON_UNKNOWN = 0x00, PON_RESTART_REASON_RECOVERY = 0x01, PON_RESTART_REASON_BOOTLOADER = 0x02, Loading @@ -58,6 +59,10 @@ enum pon_restart_reason { PON_RESTART_REASON_DMVERITY_CORRUPTED = 0x04, PON_RESTART_REASON_DMVERITY_ENFORCE = 0x05, PON_RESTART_REASON_KEYS_CLEAR = 0x06, /* 32 ~ 63 for OEMs/ODMs secific features */ PON_RESTART_REASON_OEM_MIN = 0x20, PON_RESTART_REASON_OEM_MAX = 0x3f, }; #ifdef CONFIG_INPUT_QPNP_POWER_ON Loading Loading
drivers/power/reset/msm-poweroff.c +18 −1 Original line number Diff line number Diff line Loading @@ -328,11 +328,28 @@ static void msm_restart_prepare(const char *cmd) __raw_writel(0x7766550a, restart_reason); } else if (!strncmp(cmd, "oem-", 4)) { unsigned long code; unsigned long reset_reason; int ret; ret = kstrtoul(cmd + 4, 16, &code); if (!ret) if (!ret) { /* Bit-2 to bit-7 of SOFT_RB_SPARE for hard * reset reason: * Value 0 to 31 for common defined features * Value 32 to 63 for oem specific features */ reset_reason = code + PON_RESTART_REASON_OEM_MIN; if (reset_reason > PON_RESTART_REASON_OEM_MAX || reset_reason < PON_RESTART_REASON_OEM_MIN) { pr_err("Invalid oem reset reason: %lx\n", reset_reason); } else { qpnp_pon_set_restart_reason( reset_reason); } __raw_writel(0x6f656d00 | (code & 0xff), restart_reason); } } else if (!strncmp(cmd, "edl", 3)) { enable_emergency_dload_mode(); } else { Loading
include/linux/input/qpnp-power-on.h +5 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ enum pon_power_off_type { }; enum pon_restart_reason { /* 0 ~ 31 for common defined features */ PON_RESTART_REASON_UNKNOWN = 0x00, PON_RESTART_REASON_RECOVERY = 0x01, PON_RESTART_REASON_BOOTLOADER = 0x02, Loading @@ -58,6 +59,10 @@ enum pon_restart_reason { PON_RESTART_REASON_DMVERITY_CORRUPTED = 0x04, PON_RESTART_REASON_DMVERITY_ENFORCE = 0x05, PON_RESTART_REASON_KEYS_CLEAR = 0x06, /* 32 ~ 63 for OEMs/ODMs secific features */ PON_RESTART_REASON_OEM_MIN = 0x20, PON_RESTART_REASON_OEM_MAX = 0x3f, }; #ifdef CONFIG_INPUT_QPNP_POWER_ON Loading