On Thu, Oct 10, 2019 at 1:59 AM Kent Gibson <warthog618@xxxxxxxxx> wrote: > It is basically working for me on my Pi4: > > pi@quoll:~ $ ./gpiodctl get gpiochip0 7 > 0 > pi@quoll:~ $ ./gpiodctl get -u gpiochip0 7 > 1 > pi@quoll:~ $ ./gpiodctl get gpiochip0 7 > 1 > pi@quoll:~ $ ./gpiodctl get -d gpiochip0 7 > 0 > pi@quoll:~ $ ./gpiodctl get gpiochip0 7 > 0 > > That is using the gpiodctl tool from my gpiod library. > My gpiod test suite also passes, but it doesn't do much to > exercise the UAPI. > I was intending to run my uapi test suite, which is more thorough, > but it turns out that only targets gpio-mockup, whereas my gpiod > test suite can target either. > Something else for the todo list. > > Hopefully it is obvious what gpiodctl is doing. (-u sets the > pull-up flag, -d sets the pull-down flag) > Looks like the pulls stick when the line is released, and the > subsequent get, without pull-up set, either doesn't clear the > pull-up/down or the line stays floating at the old pull level. > More investigation required, but that will have to wait til > I get back to this later in the day. > > Oh, and that is running on the rpi-5.3.3 kernel patched with everything > on my topic/gpio-uapi-config branch from 5.4-rc2 onward. Thanks for sharing your results. My Pi 3 had been running 5.3.0-v7+ from September 20th with my pull-up/down patch (82fc38f6ab59). I removed that patch and just cross-compiled 5.4-rc2 with multi_v7_defconfig for the Pi3. Are these the commits that I should apply from your topic branch? bdc9696a27ed pull up/down requires explicit input mode in lineevent_create 14ee636232d4 disallow pull up/down on outputs ce03bf5af1ec implement SET_CONFIG_IOCTL f38b7554eb52 pull common validation code into linehandle_validate_flags 31c0aa53ffc3 Add default values for setting output 3c7ec03efcd9 add support for pull up/down to lineevent_create 99b85d1c26ea gpio: add new ioctl() to gpio chardev 82fc38f6ab59 gpio: expose pull-up/pull-down line flags to userspace f6cfbbe2950b gpiolib: sanitize flags before allocating memory in lineevent_create() Thanks, Drew