GPIOLED(4)

NAME
gpioled - GPIO LED generic device driver

SYNOPSIS
To compile this driver into the kernel, place the following lines in your kernel configuration file:

device gpio
device gpioled

DESCRIPTION
The gpioled driver provides glue to attach a led(4) compatible device to a GPIO pin. Each LED in the system has a name which is used to export a device as /dev/led/<name>. The GPIO pin can then be controlled by writing to this device as described in led(4).

On a device.hints(5) based system, like MIPS, these values are configurable for gpioled:

hint.gpioled.%d.at
    The gpiobus you are attaching to. Normally assigned to gpiobus0.

hint.gpioled.%d.name
    Arbitrary name of device in /dev/led/ to create for led(4).

hint.gpioled.%d.pins
    Which pin on the GPIO interface to map to this instance. Please note that this mask should only ever have one bit set (any other bits - i.e., pins - will be ignored).

hint.gpioled.%d.invert
    Use pin inversion. If set to 1, the pin will be set to 0 to light the LED, and 1 to clear it.

hint.gpioled.%d.invmode
    Whether or not to use hardware support when pin inversion is requested. Must be one of:

    auto
        Use hardware pin inversion if available, else fallback to software pin inversion. This is the default.

    hw  Use hardware pin inversion.

    sw  Use software pin inversion.

hint.gpioled.%d.state
    The initial state of the LED when the driver takes control over it. If set to 1 or 0, the LED will be on or off correspondingly. If set to -1, the LED will be kept in its original state.

On a FDT(4) based system, like ARM, the DTS part for a gpioled device usually looks like:

    gpio: gpio {
    	gpio-controller;
    	...
    	led0 {
    		compatible = "gpioled";
    		gpios = <&gpio 16 2 0>;		/* GPIO pin 16. */
    		name = "ok";
    	};
    	led1 {
    		compatible = "gpioled";
    		gpios = <&gpio 17 2 0>;		/* GPIO pin 17. */
    		name = "user-led1";
    	};
    };

Optionally, you can choose to combine all the LEDs under a single “gpio-leds” compatible node:

    simplebus0 {
    	...
    	leds {
    		compatible = "gpio-leds";
    		led0 {
    			gpios = <&gpio 16 2 0>;
    			name = "ok"
    		};
    		led1 {
    			gpios = <&gpio 17 2 0>;
    			name = "user-led1"
    		};
    	};
    };

Both methods are equally supported and it is possible to have the LEDs defined with any sort of mix between the methods. The only restriction is that a GPIO pin cannot be mapped by two different (gpio)leds.

For more details about the gpios property, please consult /usr/src/sys/dts/bindings-gpio.txt.

The property name is the arbitrary name of the device in /dev/led/ to create for led(4).

SEE ALSO
fdt(4), gpio(4), gpioiic(4), led(4)

HISTORY
The gpioled manual page first appeared in FreeBSD 10.1.

AUTHORS
This manual page was written by Luiz Otavio O Souza.