Message ID | 20191104153841.16911-5-warthog618@gmail.com |
---|---|
State | New |
Headers | show |
Series | gpio: expose line bias flags to userspace | expand |
pon., 4 lis 2019 o 16:39 Kent Gibson <warthog618@gmail.com> 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@gmail.com> > --- > 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. Bart > } > EXPORT_SYMBOL_GPL(gpiod_direction_output); > -- > 2.23.0 >
On Mon, Nov 04, 2019 at 04:50:30PM +0100, Bartosz Golaszewski wrote: > pon., 4 lis 2019 o 16:39 Kent Gibson <warthog618@gmail.com> 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@gmail.com> > > --- > > 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.
pon., 4 lis 2019 o 16:59 Kent Gibson <warthog618@gmail.com> napisał(a): > > On Mon, Nov 04, 2019 at 04:50:30PM +0100, Bartosz Golaszewski wrote: > > pon., 4 lis 2019 o 16:39 Kent Gibson <warthog618@gmail.com> 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@gmail.com> > > > --- > > > 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. > > No problem, it can wait until tomorrow. Please use the following branch - gpio/for-kent - from my tree. Bart
On Mon, Nov 04, 2019 at 05:19:14PM +0100, Bartosz Golaszewski wrote: > pon., 4 lis 2019 o 16:59 Kent Gibson <warthog618@gmail.com> napisał(a): > > > > > 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. > > > > > > No problem, it can wait until tomorrow. Please use the following > branch - gpio/for-kent - from my tree. > That was a lot simpler than I expected - it rebased cleanly onto the new branch. And fixed the gpiod test errors I was trying to track down. Will submit v6 shortly. Cheers, Kent.
On Tue, Nov 05, 2019 at 10:03:42AM +0800, Kent Gibson wrote: > On Mon, Nov 04, 2019 at 05:19:14PM +0100, Bartosz Golaszewski wrote: > > pon., 4 lis 2019 o 16:59 Kent Gibson <warthog618@gmail.com> napisał(a): > > > > > > > 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. > > > > > > > > > > No problem, it can wait until tomorrow. Please use the following > > branch - gpio/for-kent - from my tree. > > > > That was a lot simpler than I expected - it rebased cleanly onto the > new branch. And fixed the gpiod test errors I was trying to track down. > Will submit v6 shortly. > Maybe I'm missing something, but given that the rebase was clean, was there actually any need for v6? i.e. anyone can rebase the v5 patch onto gpio/for-kent: $ git checkout -b pud_rebase brgl/gpio/for-next Branch 'pud_rebase' set up to track remote branch 'gpio/for-next' from 'brgl'. Switched to a new branch 'pud_rebase' $ git am PATCH-v5-0-7-gpio-expose-line-bias-flags-to-userspace.mbox Applying: gpio: expose pull-up/pull-down line flags to userspace Applying: gpiolib: add support for pull up/down to lineevent_create Applying: gpiolib: add support for disabling line bias Applying: gpiolib: add support for biasing output lines Applying: gpio: mockup: add set_config to support pull up/down Applying: gpiolib: move validation of line handle flags into helper function Applying: gpio: add new SET_CONFIG ioctl() to gpio chardev $ git rebase brgl/gpio/for-kent First, rewinding head to replay your work on top of it... Applying: gpio: expose pull-up/pull-down line flags to userspace Applying: gpiolib: add support for pull up/down to lineevent_create Applying: gpiolib: add support for disabling line bias Applying: gpiolib: add support for biasing output lines Using index info to reconstruct a base tree... M drivers/gpio/gpiolib.c Falling back to patching base and 3-way merge... Auto-merging drivers/gpio/gpiolib.c Applying: gpio: mockup: add set_config to support pull up/down Applying: gpiolib: move validation of line handle flags into helper function Applying: gpio: add new SET_CONFIG ioctl() to gpio chardev Or was it more about eyeballing and retesting the rebase in case the 3-way merge went haywire? Cheers, Kent.
wt., 5 lis 2019 o 07:06 Kent Gibson <warthog618@gmail.com> napisał(a): > > On Tue, Nov 05, 2019 at 10:03:42AM +0800, Kent Gibson wrote: > > On Mon, Nov 04, 2019 at 05:19:14PM +0100, Bartosz Golaszewski wrote: > > > pon., 4 lis 2019 o 16:59 Kent Gibson <warthog618@gmail.com> napisał(a): > > > > > > > > > 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. > > > > > > > > > > > > > > No problem, it can wait until tomorrow. Please use the following > > > branch - gpio/for-kent - from my tree. > > > > > > > That was a lot simpler than I expected - it rebased cleanly onto the > > new branch. And fixed the gpiod test errors I was trying to track down. > > Will submit v6 shortly. > > > > Maybe I'm missing something, but given that the rebase was clean, was > there actually any need for v6? > i.e. anyone can rebase the v5 patch onto gpio/for-kent: > > $ git checkout -b pud_rebase brgl/gpio/for-next > Branch 'pud_rebase' set up to track remote branch 'gpio/for-next' from 'brgl'. > Switched to a new branch 'pud_rebase' > $ git am PATCH-v5-0-7-gpio-expose-line-bias-flags-to-userspace.mbox > Applying: gpio: expose pull-up/pull-down line flags to userspace > Applying: gpiolib: add support for pull up/down to lineevent_create > Applying: gpiolib: add support for disabling line bias > Applying: gpiolib: add support for biasing output lines > Applying: gpio: mockup: add set_config to support pull up/down > Applying: gpiolib: move validation of line handle flags into helper function > Applying: gpio: add new SET_CONFIG ioctl() to gpio chardev > $ git rebase brgl/gpio/for-kent > First, rewinding head to replay your work on top of it... > Applying: gpio: expose pull-up/pull-down line flags to userspace > Applying: gpiolib: add support for pull up/down to lineevent_create > Applying: gpiolib: add support for disabling line bias > Applying: gpiolib: add support for biasing output lines > Using index info to reconstruct a base tree... > M drivers/gpio/gpiolib.c > Falling back to patching base and 3-way merge... > Auto-merging drivers/gpio/gpiolib.c > Applying: gpio: mockup: add set_config to support pull up/down > Applying: gpiolib: move validation of line handle flags into helper function > Applying: gpio: add new SET_CONFIG ioctl() to gpio chardev > > Or was it more about eyeballing and retesting the rebase in case the > 3-way merge went haywire? > Exactly. :) Thanks for the patches, I'll have time to review them around 3:00pm and I'll take them through my branch for v5.5. Bart > Cheers, > Kent.
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); } EXPORT_SYMBOL_GPL(gpiod_direction_output);
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> --- drivers/gpio/gpiolib.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)