On Mon, Jun 3, 2013 at 11:42 AM, Christian Ruppert <christian.ruppert@xxxxxxxxxx> wrote: > Ease of use is also the reason why I added the gpio-base property to the > original driver: Finding out the global GPIO number to use in > /sys/class/gpio for a given GPIO of a given bank seems to be a recurring > headache for our customers and the definition of the bank's base number > in the device tree is an attempt to improve this situation. What you need to do in that case is to find a way to name the pins in sysfs (creating symbolic links with the GPIO pin name) so they can use these names in sysfs instead. There is no ambition from my side to try to correlate the GPIO sysfs interface and device trees. This is because the GPIO sysfs is not universally liked. And when you say you want to make the sysfs ABI easy to use that lights a big red light on my panel. I will explain why. What is very important is that your customers understand that the GPIO sysfs shall not be used for things like: - LEDs - Switches - Regulators - Camera muxes - etc >From the kernel community we have tried (or atleast I have tried) that this kind of hardware shall be handled by the apropriate linux subsystems, and not by obscure userspace code. In a fight between device tree and GPIO sysfs device tree *wins*. Consider this example from the Snowball device tree: en_3v3_reg: en_3v3 { compatible = "regulator-fixed"; regulator-name = "en-3v3-fixed-supply"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpios = <&gpio0 26 0x4>; // 26 startup-delay-us = <5000>; enable-active-high; }; gpio_keys { compatible = "gpio-keys"; #address-cells = <1>; #size-cells = <0>; button@1 { debounce_interval = <50>; wakeup = <1>; linux,code = <2>; label = "userpb"; gpios = <&gpio1 0 0x4>; }; button@2 { debounce_interval = <50>; wakeup = <1>; linux,code = <3>; label = "extkb1"; gpios = <&gpio4 23 0x4>; }; button@3 { debounce_interval = <50>; wakeup = <1>; linux,code = <4>; label = "extkb2"; gpios = <&gpio4 24 0x4>; }; button@4 { debounce_interval = <50>; wakeup = <1>; linux,code = <5>; label = "extkb3"; gpios = <&gpio5 1 0x4>; }; button@5 { debounce_interval = <50>; wakeup = <1>; linux,code = <6>; label = "extkb4"; gpios = <&gpio5 2 0x4>; }; }; leds { compatible = "gpio-leds"; used-led { label = "user_led"; gpios = <&gpio4 14 0x4>; default-state = "on"; linux,default-trigger = "heartbeat"; }; }; As you immediately realize, if people don't know how to specify the above and start writing a userspace daemon to do the same thing by hammering on sysfs files, they are doing the wrong thing. What you need to make sure is that before your customers start to do userspace tricks in GPIO sysfs they need to answer the question "why?". If the GPIO sysfs is encouraging people to do things like the above from userspace, it needs to be actively discouraged, because that is hurting the people doing that. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html