Re: [PATCH v2 2/4] gpio - Add EXAR XRA1403 SPI GPIO expander driver

From: Linus Walleij
Date: Wed Apr 26 2017 - 10:42:38 EST


On Tue, Apr 25, 2017 at 9:07 AM, Benjamin Henrion <zoobab@xxxxxxxxx> wrote:

> I doubt you will be able to convince the majority of people toggling
> GPIOs via a simple shell script to switch to write a complex C
> program. Not to mention cross compilation and the libraries
> dependencies here.

I do not need to convince anyone, I'm not into politics.

The way to attract users to the character device is by offering better
features... so we smack in the following goodies:

- Need a userspace ABI? No more need to select CONFIG_GPIO_SYSFS!
The chardev is always there for any gpio chip in newer kernels!
Board vendors would have to actively delete core code to disable it!

- Need open drain? The chardev will support that, the sysfs will never.

- Need to set/get multiple lines with a single context switch? Chardev
does this. Also the set operation will turn into a single register write
if your driver implements .set_multiple()

- All future needs: line biasing? Schmitt triggers? Drive strengths?
All that will use the character device, and the sysfs ABI will never
support any of it.

> Is there some good cli tools to access the new char device? If they
> are shipped with most distros, that would reduce the pain.

I have those that come with the kernel:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/gpio

Then libgpiod as mentioned:
https://github.com/brgl/libgpiod/tree/master/src/tools

Yours,
Linus Walleij