OSDN Git Service

Input: pm8941-pwrkey - respect reboot_mode for warm reset
authorShawn Guo <shawn.guo@linaro.org>
Sun, 17 Oct 2021 04:27:59 +0000 (21:27 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sun, 17 Oct 2021 04:31:07 +0000 (21:31 -0700)
On some devices, e.g. Sony Xperia M4 Aqua, warm reset is used to reboot
device into bootloader and recovery mode.  Instead of always doing hard
reset, add a check on reboot_mode for possible warm reset.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Luca Weiss <luca@z3ntu.xyz>
Link: https://lore.kernel.org/r/20210714095850.27185-3-shawn.guo@linaro.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/misc/pm8941-pwrkey.c

index 3360960..89af524 100644 (file)
@@ -29,6 +29,7 @@
 #define PON_PS_HOLD_RST_CTL2           0x5b
 #define  PON_PS_HOLD_ENABLE            BIT(7)
 #define  PON_PS_HOLD_TYPE_MASK         0x0f
+#define  PON_PS_HOLD_TYPE_WARM_RESET   1
 #define  PON_PS_HOLD_TYPE_SHUTDOWN     4
 #define  PON_PS_HOLD_TYPE_HARD_RESET   7
 
@@ -99,7 +100,10 @@ static int pm8941_reboot_notify(struct notifier_block *nb,
                break;
        case SYS_RESTART:
        default:
-               reset_type = PON_PS_HOLD_TYPE_HARD_RESET;
+               if (reboot_mode == REBOOT_WARM)
+                       reset_type = PON_PS_HOLD_TYPE_WARM_RESET;
+               else
+                       reset_type = PON_PS_HOLD_TYPE_HARD_RESET;
                break;
        }