Add ability to export gpio used by gpio-poweroff
authorNick Bulleid <nedbulleid@fastmail.com>
Thu, 10 May 2018 20:57:02 +0000 (21:57 +0100)
committerpopcornmix <popcornmix@gmail.com>
Wed, 27 Jan 2021 19:12:55 +0000 (19:12 +0000)
Signed-off-by: Nick Bulleid <nedbulleid@fastmail.com>
Added export feature to gpio-poweroff documentation

Signed-off-by: Nick Bulleid <nedbulleid@fastmail.com>
Documentation/devicetree/bindings/power/reset/gpio-poweroff.txt
drivers/power/reset/gpio-poweroff.c

index 3e56c1b..76dd7b0 100644 (file)
@@ -31,6 +31,7 @@ Optional properties:
 - inactive-delay-ms: Delay (default 100) to wait after driving gpio inactive
 - 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:
 
index e458fa7..3acbe71 100644 (file)
@@ -51,6 +51,7 @@ static int gpio_poweroff_probe(struct platform_device *pdev)
        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");
@@ -76,6 +77,12 @@ static int gpio_poweroff_probe(struct platform_device *pdev)
        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;
 }
@@ -85,6 +92,8 @@ static int gpio_poweroff_remove(struct platform_device *pdev)
        if (pm_power_off == &gpio_poweroff_do_poweroff)
                pm_power_off = NULL;
 
+       gpiod_unexport(reset_gpio);
+
        return 0;
 }