gpio: sysfs: emit chardev line-state events on GPIO export
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Thu, 31 Oct 2024 20:01:53 +0000 (21:01 +0100)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 4 Nov 2024 07:56:19 +0000 (08:56 +0100)
We already emit a CONFIG_RELEASED event when a line is unexported over
sysfs (this is handled by gpiod_free()) but we don't do the opposite
when it's exported. This adds the missing call to
gpiod_line_state_notify().

Reviewed-by: Kent Gibson <warthog618@gmail.com>
Link: https://lore.kernel.org/r/20241031-gpio-notify-sysfs-v4-3-142021c2195c@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpiolib-sysfs.c

index 8d726dcd6d79bda5d222ab5f19a5dc19d04a52ac..329ebba3d6d45927f62c7b8cd781552da652c478 100644 (file)
@@ -21,6 +21,8 @@
 #include <linux/gpio/consumer.h>
 #include <linux/gpio/driver.h>
 
+#include <uapi/linux/gpio.h>
+
 #include "gpiolib.h"
 #include "gpiolib-sysfs.h"
 
@@ -471,10 +473,12 @@ static ssize_t export_store(const struct class *class,
        }
 
        status = gpiod_export(desc, true);
-       if (status < 0)
+       if (status < 0) {
                gpiod_free(desc);
-       else
+       } else {
                set_bit(FLAG_SYSFS, &desc->flags);
+               gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_REQUESTED);
+       }
 
 done:
        if (status)