]> www.infradead.org Git - nvme.git/commitdiff
gpiolib: Allow to use setters with return value for output-only gpios
authorMathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Fri, 11 Apr 2025 14:52:09 +0000 (16:52 +0200)
committerBartosz Golaszewski <brgl@bgdev.pl>
Mon, 14 Apr 2025 18:31:00 +0000 (20:31 +0200)
The gpiod_direction_output_raw_commit() function checks if any setter
callback is present before doing anything. As the new GPIO setters with
return values were introduced, make this check also succeed if one is
present.

Fixes: 98ce1eb1fd87 ("gpiolib: introduce gpio_chip setters that return values")
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Link: https://lore.kernel.org/r/20250411-mdb-gpiolib-setters-fix-v2-1-9611280d8822@bootlin.com
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
drivers/gpio/gpiolib.c

index b8197502a5ac598ce3c88c1e9a1d6c0b74516aac..cd4fecbb41f2921db3cd8bd8b133cf581fde60a2 100644 (file)
@@ -2879,7 +2879,7 @@ static int gpiod_direction_output_raw_commit(struct gpio_desc *desc, int value)
         * output-only, but if there is then not even a .set() operation it
         * is pretty tricky to drive the output line.
         */
-       if (!guard.gc->set && !guard.gc->direction_output) {
+       if (!guard.gc->set && !guard.gc->set_rv && !guard.gc->direction_output) {
                gpiod_warn(desc,
                           "%s: missing set() and direction_output() operations\n",
                           __func__);