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: Kent Gibson <warthog618@gmail.com> Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
This commit is contained in:
Родитель
2148ad7790
Коммит
2821ae5f30
|
@ -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:
|
||||||
|
|
Загрузка…
Ссылка в новой задаче