On Mon, Nov 04, 2019 at 04:50:30PM +0100, Bartosz Golaszewski wrote: > pon., 4 lis 2019 o 16:39 Kent Gibson <warthog618@xxxxxxxxx> napisał(a): > > > > 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@xxxxxxxxx> > > --- > > drivers/gpio/gpiolib.c | 8 ++++++-- > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c > > index 7d8ff52ada42..de08d1a4a3fb 100644 > > --- a/drivers/gpio/gpiolib.c > > +++ b/drivers/gpio/gpiolib.c > > @@ -555,8 +555,9 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip) > > (lflags & GPIOHANDLE_REQUEST_OPEN_SOURCE))) > > return -EINVAL; > > > > - /* Bias flags only allowed for input mode. */ > > - if (!(lflags & GPIOHANDLE_REQUEST_INPUT) && > > + /* Bias flags only allowed for input or output mode. */ > > + if (!((lflags & GPIOHANDLE_REQUEST_INPUT) || > > + (lflags & GPIOHANDLE_REQUEST_OUTPUT)) && > > ((lflags & GPIOHANDLE_REQUEST_BIAS_DISABLE) || > > (lflags & GPIOHANDLE_REQUEST_BIAS_PULL_UP) || > > (lflags & GPIOHANDLE_REQUEST_BIAS_PULL_DOWN))) > > @@ -3144,6 +3145,9 @@ int gpiod_direction_output(struct gpio_desc *desc, int value) > > } > > > > set_output_value: > > + ret = gpio_set_bias(gc, desc); > > + if (ret) > > + return ret; > > return gpiod_direction_output_raw_commit(desc, value); > > Ugh, I missed one thing here - my for-next branch doesn't contain the > following commit e735244e2cf0 ("gpiolib: don't clear FLAG_IS_OUT when > emulating open-drain/open-source") which happens to modify this > function. > > If I provided you with a branch containing it - would it be a lot of > effort on your part to rebase it on top of it? If so - I can do it > myself. > I can do a rebase - though not until tomorrow (it is getting late here). I would like that commit in as well - I suspect it being missing is the reason a couple of the gpiod tests I was working on are failing. I was in the process of tracking that down when I switched back to this. Cheers, Kent.