| From a4755f727de773ecd1218300b5234e2b49eddf06 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 |
| @@ -50,9 +50,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__); |