Re: [PATCH 3/3] gpiolib: use chip->names for symlinks, always use gpioN for device names

Jani Nikula
2009-12-14T11:17:11Z

Hi David and Ben -

On Fri, 2009-12-11 at 06:12 +0100, ext Ben Nizette wrote:
> On Thu, 2009-12-10 at 19:47 -0800, Greg KH wrote:
> > As a sysfs file within the device directory called 'name'? Then just
> > grep through the tree to find the right device, that also handles
> > duplicates just fine, right?
>
> Well it bunts the handling of duplicates to who ever is grepping but
> yea, sounds good. The user script can sanity-check it's results against
> the controlling gpio-chip if need be. In fact, maybe symlink from
> gpioN/chip back to gpio-chipY could be useful? A bit redundant though,
> as you can check using the number ranges..
>
> In fact I thought I had a patch to create /sys/class/gpio/gpioN/name at
> some stage.. Can't find it though, oh well.

Ben, could you please look harder? ;)

If we were to add /sys/class/gpio/gpioN/name attribute, what would be
the optimal source for the names?

I'd prefer a scheme where a) the name could be set in both board files
and drivers, the latter overriding the former as necessary, and b) the
name could be set without actually requesting the gpio, so you could set
all known names in board files without interfering with the drivers.

AFAICS this would pretty much lead to adding a pair of new functions
gpio_set_name() and gpio_get_name(), which would work also for gpios
that haven't been requested. (IDR lookup Ben mentioned in another mail
sounds good, though there's the problem you can't specify the id - this
is why gpio_setup_irq() uses the flags for storing the id.)

Here are some other alternatives I could think of, but none of them
sound good to me:

1) Add new function gpio_export_name() to export with a certain name
attribute. Leads to two ways of exporting.

2) Add 'name' parameter to gpio_export() to export with a certain name
attribute. Changes an existing interface.

3) Use 'label' in gpio_request() for name attribute. Stores names also
for gpios that are never exported, wastes a pointer per gpio in
gpio_desc.

4) Use chip->names. Wastes a pointer per gpio even if one name is used,
almost the same as adding char *name to struct gpio_desc. Not convenient
to use, at least in OMAP.

Opinions?

BR,
Jani.