wt., 5 lis 2019 o 03:04 Kent Gibson <warthog618@xxxxxxxxx> napisał(a): > > The changes from v5: > - rebased onto Bart's gpio/for-kent branch. > > The changes from v4: > Review changes: > - relocate restriction on applying bias to as-is from patch 2 to patch 1. > - propagate errors, other than ENOTSUPP, from gpio_set_bias. (squashed > into patches 3 and 4). > - include SET_CONFIG patch series v2 (patch 6 and 7 here). > > I've also fixed a few other nits I noticed along the way: > - rework gpio_set_bias as flags are mutually exclusive. > - remove input flag required to set bias restriction from > lineevent_create as events are implicitly assumed inputs anyway. > - reorder patches to group gpiolib bias patches together before the > gpio-mockup changes. > > > This series adds gross control of pull-up/pull-down to the GPIO uAPI. > Gross control means enabling and disabling of bias functionality, > not finer grained control such as setting biasing impedances. > > The support allows both input and output lines to have any one of the > following biases applied as part of the line handle or event request: > 0. As Is - bias is left alone. This is the default for ABI compatibility. > 1. Bias Disable - bias is explicitly disabled. > 2. Pull Down - pull-down bias is enabled. > 3. Pull Up - pull-up bias is enabled. > > The biases are set via three flags, BIAS_DISABLE, BIAS_PULL_DOWN > and BIAS_PULL_UP. These map directly to the similarly named > pinctrl pin_config_param flags. > As Is corresponds to none of the flags being set. > > The setting of biases on output lines may seem odd, but is to allow for > utilisation of internal pull-up/pull-down on open drain and open source > outputs, where supported in hardware. > > The series also adds the GPIOHANDLE_SET_CONFIG_IOCTL to the gpio chardev. > The ioctl allows some of the configuration of a requested handle to be > changed without having to release the line. > The primary use case is the changing of direction for bi-directional > lines. > > Patches are against Bart's gpio/for-kent branch[1]. > > The patch has been successfully tested against gpio-mockup, and > on a Raspberry Pi, in both cases using the feature/pud_set_config > branch of my Go gpiod library[2], as well as with my feature/pud > development branch of libgpiod[3]. Patch 7 has only been tested using > my gpiod library as libgpiod has not yet been updated to support the > SET_CONFIG ioctl. > > Patch 1 adds pull-up/pull-down support to line handle requests. > Patch 2 adds pull-up/pull-down support to line event requests. > Patch 3 adds support for disabling bias. > Patch 4 adds support for setting bias on output lines. > Patch 5 adds pull-up/down support to the gpio-mockup for uAPI testing. > Patch 6 refactors the flag validation from linehandle_create. > Patch 7 adds the SET_CONFIG ioctl. > > Drew Fustini (1): > gpio: expose pull-up/pull-down line flags to userspace > > Kent Gibson (6): > gpiolib: add support for pull up/down to lineevent_create > gpiolib: add support for disabling line bias > gpiolib: add support for biasing output lines > gpio: mockup: add set_config to support pull up/down > gpiolib: move validation of line handle flags into helper function > gpio: add new SET_CONFIG ioctl() to gpio chardev > > drivers/gpio/gpio-mockup.c | 94 ++++++++++------ > drivers/gpio/gpiolib.c | 213 +++++++++++++++++++++++++++++++------ > drivers/gpio/gpiolib.h | 1 + > include/uapi/linux/gpio.h | 24 +++++ > 4 files changed, 264 insertions(+), 68 deletions(-) > > -- > 2.23.0 > Ok, all looks good now and since Linus already said he's fine with this series, I'll take it through my tree for v5.5. Thanks! Bartosz