[PATCH v3 0/9] gpiolib: Add GPIO name support

Markus Pargmann mpa at pengutronix.de
Mon Sep 21 03:58:25 PDT 2015


Hi,

On Fri, Aug 14, 2015 at 04:10:57PM +0200, Markus Pargmann wrote:
> Changes in v3:
> As discussed in the v2 thread, we are using the already existing gpiochip names
> now. To avoid races between kernel and userspace, the setup of gpio names in
> the gpio descriptors has to happen right before the gpiochip is added for use
> and after the gpio descriptors are available. Unfortunately this is exactly in
> the function gpiochip_add().
> 
> So we can't use a a function as proposed in the discussion like
> gpiochip_set_names(), as this function would only be possible after we executed
> gpiochip_add(). Before that point the gpio descriptors are not available. But
> this can potentially lead to races between userspace and the gpio chip.
> 
> That is the reason why I left the names array in the gpioscript. But this array
> is now only used to initialize the GPIO descriptors. The named sysfs
> directories are now created using the name stored in the gpio descriptor.
> 
> As the name is now directly represented through the sysfs directory name, I am
> not sure if it makes sense to keep the patch which adds a 'name' property to
> the sysfs GPIO directories. For the moment it is still in this series.

Any feedback on this series?

Thanks,

Markus

> 
> Other changes in v3:
>  - Renamed generic of_parse_gpio() to of_parse_own_gpio()
>  - Replaced pr_warn with dev_warn as the device is available in the parsing code
>    in gpiolib-of
>  - Introduced name collision checks when adding the names from gpiochip->names
>    to the gpio descriptors
>  - Added documentation about /sys/class/gpio/<GPIO>/name
>  - Added check for DT in case the GPIO already has a name. This may happen as
>    there are different ways to set a name, through 'line-name' property and
>    node name
> 
> Best Regards,
> 
> Markus
> 
> 
> Changes in v2:
>  - Removed patch 'gpiolib: Fix possible use of wrong name'
>  - Removed discussed patch 'gpio: Allow hogged gpios to be requested' from this
>    series
>  - Fixed show gpio name patch (locks, (null) printing, and getting the descriptor)
>  - Merged gpio name patch into gpio_name_to_desc() patch
> 
> Description from v1:
> 
> This is a proposal to add GPIO names to the kernel based on devicetree
> descriptions.
> 
> This series adds GPIO name support. Until now it is only possible to use names
> for already requested GPIOs (for example what they are used for). It is not
> possible to identify GPIOs by a name although most of them have a name for
> example in the schematics of the board. This makes it difficult to identify
> a specific GPIO from userspace.
> 
> As the GPIO name information is a hardware description this series uses the
> devicetree bindings introduced by the GPIO hogging mechanism, specifically
> 'line-name', to identify GPIOs. The sysfs 'export' file is changed to accept
> names as fallback. The gpio numbers still have a higher priority to ensure
> backwards compatibility.
> 
> Exported GPIOs are still using their number as directory name (gpio<ID>). But the
> directories now contain a 'name' file which is '' for non-existent names and
> the name otherwise.
> 
> This series can be used to have an easy name mapping for udev with a quite
> simple rule similar to this:
> 	SUBSYSTEM=="gpio", KERNEL=="gpio*", ATTR{name}!="(null)", ACTION=="add", \
> 	PROGRAM+="/bin/sh -c 'mkdir -p /dev/gpios; rm -f /dev/gpios/$attr{name}; ln -s /sys%p/ /dev/gpios/$attr{name}"
> With this rule udev adds a link for each exported GPIO with a name into
> /dev/gpios/. This way it is not necessary to know the number of a GPIO to use
> it.
> 
> 
> Markus Pargmann (9):
>   gpiolib-of: Rename gpio_hog functions to be generic
>   gpio: Introduce gpio descriptor 'name'
>   gpiolib: Use GPIO name from names array for gpio descriptor
>   gpio-sysfs: Use gpio descriptor name instead of gpiochip names array
>   gpiolib: Add gpio name information to /sys/kernel/debug/gpio
>   gpiolib-sysfs: Show gpio-name in /sys/class/gpio/gpio*/name
>   gpiolib-sysfs: Add gpio name parsing for sysfs export
>   gpiolib-of: Reuse 'line-name' from DT as gpio descriptor name
>   gpiolib-of: Use dev_warn instead of pr_warn
> 
>  Documentation/ABI/testing/sysfs-gpio |  1 +
>  drivers/gpio/gpiolib-of.c            | 50 +++++++++++++---------
>  drivers/gpio/gpiolib-sysfs.c         | 67 +++++++++++++++++++++---------
>  drivers/gpio/gpiolib.c               | 80 ++++++++++++++++++++++++++++++++++--
>  drivers/gpio/gpiolib.h               |  3 ++
>  include/linux/gpio/consumer.h        |  7 ++++
>  6 files changed, 166 insertions(+), 42 deletions(-)
> 
> -- 
> 2.4.6
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150921/3eecdc29/attachment-0001.sig>


More information about the linux-arm-kernel mailing list