brcm2708: update to latest patches from RPi Foundation
[openwrt/staging/chunkeey.git] / target / linux / brcm2708 / patches-4.19 / 950-0123-Add-ability-to-export-gpio-used-by-gpio-poweroff.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0123-Add-ability-to-export-gpio-used-by-gpio-poweroff.patch b/target/linux/brcm2708/patches-4.19/950-0123-Add-ability-to-export-gpio-used-by-gpio-poweroff.patch
new file mode 100644 (file)
index 0000000..60e7294
--- /dev/null
@@ -0,0 +1,57 @@
+From 3e060982d93902bcca8503df4e33d6cd1e41e21b Mon Sep 17 00:00:00 2001
+From: Nick Bulleid <nedbulleid@fastmail.com>
+Date: Thu, 10 May 2018 21:57:02 +0100
+Subject: [PATCH] Add ability to export gpio used by gpio-poweroff
+
+Signed-off-by: Nick Bulleid <nedbulleid@fastmail.com>
+
+Added export feature to gpio-poweroff documentation
+
+Signed-off-by: Nick Bulleid <nedbulleid@fastmail.com>
+---
+ .../devicetree/bindings/power/reset/gpio-poweroff.txt    | 1 +
+ drivers/power/reset/gpio-poweroff.c                      | 9 +++++++++
+ 2 files changed, 10 insertions(+)
+
+--- a/Documentation/devicetree/bindings/power/reset/gpio-poweroff.txt
++++ b/Documentation/devicetree/bindings/power/reset/gpio-poweroff.txt
+@@ -29,6 +29,7 @@ Optional properties:
+   inactive state.
+ - timeout-ms: Time to wait before asserting a WARN_ON(1). If nothing is
+               specified, 3000 ms is used.
++- export : Export the GPIO line to the sysfs system
+ Examples:
+--- a/drivers/power/reset/gpio-poweroff.c
++++ b/drivers/power/reset/gpio-poweroff.c
+@@ -52,6 +52,7 @@ static int gpio_poweroff_probe(struct pl
+       bool input = false;
+       enum gpiod_flags flags;
+       bool force = false;
++      bool export = false;
+       /* If a pm_power_off function has already been added, leave it alone */
+       force = of_property_read_bool(pdev->dev.of_node, "force");
+@@ -74,6 +75,12 @@ static int gpio_poweroff_probe(struct pl
+       if (IS_ERR(reset_gpio))
+               return PTR_ERR(reset_gpio);
++      export = of_property_read_bool(pdev->dev.of_node, "export");
++      if (export) {
++              gpiod_export(reset_gpio, false);
++              gpiod_export_link(&pdev->dev, "poweroff-gpio", reset_gpio);
++      }
++
+       pm_power_off = &gpio_poweroff_do_poweroff;
+       return 0;
+ }
+@@ -83,6 +90,8 @@ static int gpio_poweroff_remove(struct p
+       if (pm_power_off == &gpio_poweroff_do_poweroff)
+               pm_power_off = NULL;
++      gpiod_unexport(reset_gpio);
++
+       return 0;
+ }