Message ID | 20191104153841.16911-1-warthog618@gmail.com |
---|---|
Headers | show |
Series | gpio: expose line bias flags to userspace | expand |
On Mon, Nov 04, 2019 at 11:38:34PM +0800, Kent Gibson wrote: > 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. Hi Kent, thanks for continuing pushing this patch series forward. I've not used gpiomockup before and I was hoping you might be able to share the commands you use to run it to test the patches. thanks, drew
On Mon, Nov 04, 2019 at 11:58:38AM -0800, Drew Fustini wrote: > On Mon, Nov 04, 2019 at 11:38:34PM +0800, Kent Gibson wrote: > > 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. > > Hi Kent, thanks for continuing pushing this patch series forward. > > I've not used gpiomockup before and I was hoping you might be able to share > the commands you use to run it to test the patches. > I refer you to the libgpiod tests, particularly libgpiod/tests/mockup/gpio-mockup.c as well as gpio/gpio-mockup.c itself. If you run the libgpiod tests they will load and manipulate the module themselves. My gpiod tests do similarly. I run them in a VM to ensure they can't interfere with real hardware by accident. Here is a quick guide to using the mockup manually. Load the module with two chips with 4 and 8 lines respectively: modprobe gpio-mockup gpio_mockup_named_lines gpio_mockup_ranges=-1,4,-1,8 $ gpiodetect gpiochip0 [gpio-mockup-A] (4 lines) gpiochip1 [gpio-mockup-B] (8 lines) You add a -1,N pair for each chip you want mocked. The -1s is there for historical reasons. The gpio_mockup_named_lines is optional and creates labels for the lines based on chip and line number (the labels are quoted here): $ gpioinfo gpiochip0 - 4 lines: line 0: "gpio-mockup-A-0" unused input active-high line 1: "gpio-mockup-A-1" unused input active-high line 2: "gpio-mockup-A-2" unused input active-high line 3: "gpio-mockup-A-3" unused input active-high gpiochip1 - 8 lines: line 0: "gpio-mockup-B-0" unused input active-high line 1: "gpio-mockup-B-1" unused input active-high line 2: "gpio-mockup-B-2" unused input active-high line 3: "gpio-mockup-B-3" unused input active-high line 4: "gpio-mockup-B-4" unused input active-high line 5: "gpio-mockup-B-5" unused input active-high line 6: "gpio-mockup-B-6" unused input active-high line 7: "gpio-mockup-B-7" unused input active-high You manipulate the lines using debugfs as per these examples. Pull line 1 of chip 0 high: echo 1 > /sys/kernel/debug/gpio-mockup/gpiochip0/1 Pull line 2 of chip 1 low: echo 0 > /sys/kernel/debug/gpio-mockup/gpiochip1/2 Check the value of a line, which can be set from the kernel side for gpio output lines: cat /sys/kernel/debug/gpio-mockup/gpiochip0/1 Cheers, Kent.
On Tue, Nov 05, 2019 at 08:12:13AM +0800, Kent Gibson wrote: > On Mon, Nov 04, 2019 at 11:58:38AM -0800, Drew Fustini wrote: > > On Mon, Nov 04, 2019 at 11:38:34PM +0800, Kent Gibson wrote: > > > 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. > > > > Hi Kent, thanks for continuing pushing this patch series forward. > > > > I've not used gpiomockup before and I was hoping you might be able to share > > the commands you use to run it to test the patches. > > > > I refer you to the libgpiod tests, particularly > libgpiod/tests/mockup/gpio-mockup.c as well as gpio/gpio-mockup.c > itself. > > If you run the libgpiod tests they will load and manipulate the module > themselves. My gpiod tests do similarly. I run them in a VM to ensure > they can't interfere with real hardware by accident. > It occurs to me that you might want to know how to run the Go tests that I'm refering to when I say I've tested against gpio-mockup using gpiod. While that is probably obvious for Go developers, it probably isn't so obvious for kernel developers. So here is a quick guide for running the gpiod tests: 1. Install Go[1]. 2. Checkout gpiod: git clone https://github.com/warthog618/gpiod.git 3. The uapi sub-package contains the tests for the uapi itself so cd gpiod/uapi 4. Checkout the appropriate branch - in this case git checkout feature/pud_set_config 5. Build the tests go test -c 6. Run the tests (requires modprobe rights hence the sudo) sudo ./uapi.test You can get a list of the tests being run by adding a --test.v parameter to uapi.test, or run particular tests with uapi.test --test.run [pattern] The tests themselves are in uapi_test.go, in case you get errors or want to see what they do. The gpio-mockup wrapper is in gpiod/mockup. There are also tests for gpiod itself in gpiod/*_test.go, though those focus on the gpiod library rather than the uapi and kernel. Cheers, Kent. [1] https://golang.org/doc/install