Re: [PATCH v5 0/7] gpio: expose line bias flags to userspace

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.




[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux