summary'>refs'>log'>treecommitdiff'>stats
path: '>root//'>sys-kernel/boest-v5.0.15//'>raspberrypi//0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch
diff options
context:
space:
mode:
Diffstat (limited to 'sys-kernel/boest-v5.0.15/raspberrypi/0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch')
-rw-r--r--sys-kernel/boest-v5.0.15/raspberrypi/0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/sys-kernel/boest-v5.0.15/raspberrypi/0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch b/sys-kernel/boest-v5.0.15/raspberrypi/0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch
new file mode 100644
index 00000000..2aa80b31
--- /dev/null
+++ b/sys-kernel/boest-v5.0.15/raspberrypi/0060-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch
@@ -0,0 +1,37 @@
+From 0ccbc31079f6207818146a38850cbeb9700f69fc Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Thu, 25 Jun 2015 12:16:11 +0100
+Subject: [PATCH 060/194] gpio-poweroff: Allow it to work on Raspberry Pi
+
+The Raspberry Pi firmware manages the power-down and reboot
+process. To do this it installs a pm_power_off handler, causing
+the gpio-poweroff module to abort the probe function.
+
+This patch introduces a "force" DT property that overrides that
+behaviour, and also adds a DT overlay to enable and control it.
+
+Note that running in an active-low configuration (DT parameter
+"active_low") requires a custom dt-blob.bin and probably won't
+allow a reboot without switching off, so an external inversion
+of the trigger signal may be preferable.
+---
+ drivers/power/reset/gpio-poweroff.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/power/reset/gpio-poweroff.c b/drivers/power/reset/gpio-poweroff.c
+index 52525b6c18db..365960c43b47 100644
+--- a/drivers/power/reset/gpio-poweroff.c
++++ b/drivers/power/reset/gpio-poweroff.c
+@@ -54,9 +54,11 @@ static int gpio_poweroff_probe(struct platform_device *pdev)
+ {
+ bool input = false;
+ enum gpiod_flags flags;
++ bool force = false;
+
+ /* If a pm_power_off function has already been added, leave it alone */
+- if (pm_power_off != NULL) {
++ force = of_property_read_bool(pdev->dev.of_node, "force");
++ if (!force && (pm_power_off != NULL)) {
+ dev_err(&pdev->dev,
+ "%s: pm_power_off function already registered",
+ __func__);