diff options
Diffstat (limited to 'target/linux/brcm2708/patches-4.9/950-0064-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.9/950-0064-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.9/950-0064-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch b/target/linux/brcm2708/patches-4.9/950-0064-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch new file mode 100644 index 0000000..5d73a28 --- /dev/null +++ b/target/linux/brcm2708/patches-4.9/950-0064-gpio-poweroff-Allow-it-to-work-on-Raspberry-Pi.patch @@ -0,0 +1,35 @@ +From 7e8bb86739df17e38a0ebe6e17b7a9056ab421e9 Mon Sep 17 00:00:00 2001 +From: Phil Elwell <phil@raspberrypi.org> +Date: Thu, 25 Jun 2015 12:16:11 +0100 +Subject: [PATCH] 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(-) + +--- a/drivers/power/reset/gpio-poweroff.c ++++ b/drivers/power/reset/gpio-poweroff.c +@@ -49,9 +49,11 @@ static int gpio_poweroff_probe(struct pl + { + 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__); |