2021-07-14 10:00:10

by Shawn Guo

[permalink] [raw]
Subject: [PATCH v2 0/2] Warm reset support for pm8941-pwrkey

It adds warm reset support for pm8941-pwrkey driver.

Changes for v2:
- Export symbol 'reboot_mode' to fix the build error with pm8941-pwrkey
being module. (Thanks Luca Weiss for reporting)

Shawn Guo (2):
reboot: Export symbol 'reboot_mode'
Input: pm8941-pwrkey - Respect reboot_mode for warm reset

drivers/input/misc/pm8941-pwrkey.c | 6 +++++-
kernel/reboot.c | 1 +
2 files changed, 6 insertions(+), 1 deletion(-)

--
2.17.1


2021-07-14 10:02:59

by Shawn Guo

[permalink] [raw]
Subject: [PATCH v2 1/2] reboot: Export symbol 'reboot_mode'

Some drivers like Qualcomm pm8941-pwrkey need to access 'reboot_mode'
for triggering reboot between cold and warm mode. Export the symbol, so
that drivers built as module can still access the symbol.

Signed-off-by: Shawn Guo <[email protected]>
---
kernel/reboot.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/kernel/reboot.c b/kernel/reboot.c
index a6ad5eb2fa73..31bf2611ee12 100644
--- a/kernel/reboot.c
+++ b/kernel/reboot.c
@@ -32,6 +32,7 @@ EXPORT_SYMBOL(cad_pid);
#define DEFAULT_REBOOT_MODE
#endif
enum reboot_mode reboot_mode DEFAULT_REBOOT_MODE;
+EXPORT_SYMBOL_GPL(reboot_mode);
enum reboot_mode panic_reboot_mode = REBOOT_UNDEFINED;

/*
--
2.17.1

2021-07-14 10:03:26

by Shawn Guo

[permalink] [raw]
Subject: [PATCH v2 2/2] Input: pm8941-pwrkey - Respect reboot_mode for warm reset

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 <[email protected]>
---
drivers/input/misc/pm8941-pwrkey.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/input/misc/pm8941-pwrkey.c b/drivers/input/misc/pm8941-pwrkey.c
index cf8104454e74..9b14d6eb1918 100644
--- a/drivers/input/misc/pm8941-pwrkey.c
+++ b/drivers/input/misc/pm8941-pwrkey.c
@@ -27,6 +27,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

@@ -93,7 +94,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;
}

--
2.17.1

2021-07-25 19:52:05

by Luca Weiss

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] Input: pm8941-pwrkey - Respect reboot_mode for warm reset

Hi Shawn,

On Mittwoch, 14. Juli 2021 11:58:49 CEST Shawn Guo wrote:
> 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 <[email protected]>

Tested-by: Luca Weiss <[email protected]>

Rebooting into bootloader works on fairphone-fp2 with these commands now:

$ echo warm > /sys/kernel/reboot/mode
$ reboot-mode bootloader

reboot-mode is this small utility:
https://gitlab.com/postmarketOS/reboot-mode/-/blob/master/reboot-mode.c

Regards
Luca

> ---
> drivers/input/misc/pm8941-pwrkey.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/input/misc/pm8941-pwrkey.c
> b/drivers/input/misc/pm8941-pwrkey.c index cf8104454e74..9b14d6eb1918
> 100644
> --- a/drivers/input/misc/pm8941-pwrkey.c
> +++ b/drivers/input/misc/pm8941-pwrkey.c
> @@ -27,6 +27,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
>
> @@ -93,7 +94,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;
> }




2021-08-24 03:11:03

by Shawn Guo

[permalink] [raw]
Subject: Re: [PATCH v2 0/2] Warm reset support for pm8941-pwrkey

On Wed, Jul 14, 2021 at 05:58:47PM +0800, Shawn Guo wrote:
> It adds warm reset support for pm8941-pwrkey driver.
>
> Changes for v2:
> - Export symbol 'reboot_mode' to fix the build error with pm8941-pwrkey
> being module. (Thanks Luca Weiss for reporting)
>
> Shawn Guo (2):
> reboot: Export symbol 'reboot_mode'
> Input: pm8941-pwrkey - Respect reboot_mode for warm reset
>
> drivers/input/misc/pm8941-pwrkey.c | 6 +++++-
> kernel/reboot.c | 1 +
> 2 files changed, 6 insertions(+), 1 deletion(-)

Hi Dmitry,

Any comments on these patches?

Shawn

2021-10-18 03:40:20

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] reboot: Export symbol 'reboot_mode'

On Wed, Jul 14, 2021 at 05:58:48PM +0800, Shawn Guo wrote:
> Some drivers like Qualcomm pm8941-pwrkey need to access 'reboot_mode'
> for triggering reboot between cold and warm mode. Export the symbol, so
> that drivers built as module can still access the symbol.
>
> Signed-off-by: Shawn Guo <[email protected]>

Applied, thank you.

--
Dmitry

2021-10-18 03:40:57

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: [PATCH v2 0/2] Warm reset support for pm8941-pwrkey

On Tue, Aug 24, 2021 at 11:00:59AM +0800, Shawn Guo wrote:
> On Wed, Jul 14, 2021 at 05:58:47PM +0800, Shawn Guo wrote:
> > It adds warm reset support for pm8941-pwrkey driver.
> >
> > Changes for v2:
> > - Export symbol 'reboot_mode' to fix the build error with pm8941-pwrkey
> > being module. (Thanks Luca Weiss for reporting)
> >
> > Shawn Guo (2):
> > reboot: Export symbol 'reboot_mode'
> > Input: pm8941-pwrkey - Respect reboot_mode for warm reset
> >
> > drivers/input/misc/pm8941-pwrkey.c | 6 +++++-
> > kernel/reboot.c | 1 +
> > 2 files changed, 6 insertions(+), 1 deletion(-)
>
> Hi Dmitry,
>
> Any comments on these patches?

Sorry, I was waiting to see if there would be objections to exporting
reboot_mode symbol. Both are applied now.

Thanks.

--
Dmitry

2021-10-18 03:42:44

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] Input: pm8941-pwrkey - Respect reboot_mode for warm reset

On Wed, Jul 14, 2021 at 05:58:49PM +0800, Shawn Guo wrote:
> 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 <[email protected]>

Applied, thank you.

--
Dmitry