gpioled(4)

gpioled4

Gpio led generic device driver

Usage

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

device gpio device gpioled

Overview

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).

Releases

29 releases since FreeBSD 10.1-RELEASE; the text changed 16 times.

  1. 10.1
  2. 10.2
  3. 10.3
  4. 10.4
  5. 11.0
  6. 11.1
  7. 11.2
  8. 11.3
  9. 11.4
  10. 12.0
  11. 12.1
  12. 12.2
  13. 12.3
  14. 12.4
  15. 13.0–13.2
  16. 13.3–15.1
  17. 16.0

History

The gpioled manual page first appeared in FreeBSD 10.1.

Authors

This manual page was written by Luiz Otavio O Souza.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.