Commit 2821ae5f authored by Kent Gibson's avatar Kent Gibson Committed by Bartosz Golaszewski
Browse files

gpiolib: add support for biasing output lines



Allow pull up/down bias to be set on output lines.
Use case is for open source or open drain applications where
internal pull up/down may conflict with external biasing.

Signed-off-by: default avatarKent Gibson <warthog618@gmail.com>
Signed-off-by: default avatarBartosz Golaszewski <bgolaszewski@baylibre.com>
parent 2148ad77
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -556,8 +556,9 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip)
	     (lflags & GPIOHANDLE_REQUEST_OPEN_SOURCE)))
	     (lflags & GPIOHANDLE_REQUEST_OPEN_SOURCE)))
		return -EINVAL;
		return -EINVAL;


	/* Bias flags only allowed for input mode. */
	/* Bias flags only allowed for input or output mode. */
	if (!(lflags & GPIOHANDLE_REQUEST_INPUT) &&
	if (!((lflags & GPIOHANDLE_REQUEST_INPUT) ||
	      (lflags & GPIOHANDLE_REQUEST_OUTPUT)) &&
	    ((lflags & GPIOHANDLE_REQUEST_BIAS_DISABLE) ||
	    ((lflags & GPIOHANDLE_REQUEST_BIAS_DISABLE) ||
	     (lflags & GPIOHANDLE_REQUEST_BIAS_PULL_UP) ||
	     (lflags & GPIOHANDLE_REQUEST_BIAS_PULL_UP) ||
	     (lflags & GPIOHANDLE_REQUEST_BIAS_PULL_DOWN)))
	     (lflags & GPIOHANDLE_REQUEST_BIAS_PULL_DOWN)))
@@ -3169,6 +3170,9 @@ int gpiod_direction_output(struct gpio_desc *desc, int value)
	}
	}


set_output_value:
set_output_value:
	ret = gpio_set_bias(gc, desc);
	if (ret)
		return ret;
	return gpiod_direction_output_raw_commit(desc, value);
	return gpiod_direction_output_raw_commit(desc, value);


set_output_flag:
set_output_flag: