xref: /freebsd/share/man/man4/gpioled.4 (revision 2e36db147e0edeb1b213f283f9b41a8d1a902a88)
18ce07fe7SLuiz Otavio O Souza.\" Copyright (c) 2013, Luiz Otavio O Souza <loos@FreeBSD.org>
28ce07fe7SLuiz Otavio O Souza.\" All rights reserved.
38ce07fe7SLuiz Otavio O Souza.\"
48ce07fe7SLuiz Otavio O Souza.\" Redistribution and use in source and binary forms, with or without
58ce07fe7SLuiz Otavio O Souza.\" modification, are permitted provided that the following conditions
68ce07fe7SLuiz Otavio O Souza.\" are met:
78ce07fe7SLuiz Otavio O Souza.\" 1. Redistributions of source code must retain the above copyright
88ce07fe7SLuiz Otavio O Souza.\"    notice, this list of conditions and the following disclaimer.
98ce07fe7SLuiz Otavio O Souza.\" 2. Redistributions in binary form must reproduce the above copyright
108ce07fe7SLuiz Otavio O Souza.\"    notice, this list of conditions and the following disclaimer in the
118ce07fe7SLuiz Otavio O Souza.\"    documentation and/or other materials provided with the distribution.
128ce07fe7SLuiz Otavio O Souza.\"
138ce07fe7SLuiz Otavio O Souza.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
148ce07fe7SLuiz Otavio O Souza.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
158ce07fe7SLuiz Otavio O Souza.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
168ce07fe7SLuiz Otavio O Souza.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
178ce07fe7SLuiz Otavio O Souza.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
188ce07fe7SLuiz Otavio O Souza.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
198ce07fe7SLuiz Otavio O Souza.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
208ce07fe7SLuiz Otavio O Souza.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
218ce07fe7SLuiz Otavio O Souza.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
228ce07fe7SLuiz Otavio O Souza.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
238ce07fe7SLuiz Otavio O Souza.\" SUCH DAMAGE.
248ce07fe7SLuiz Otavio O Souza.\"
258ce07fe7SLuiz Otavio O Souza.\" $FreeBSD$
268ce07fe7SLuiz Otavio O Souza.\"
27452ccc02SAdrian Chadd.Dd July 30, 2016
288ce07fe7SLuiz Otavio O Souza.Dt GPIOLED 4
298ce07fe7SLuiz Otavio O Souza.Os
308ce07fe7SLuiz Otavio O Souza.Sh NAME
318ce07fe7SLuiz Otavio O Souza.Nm gpioled
326a6ce390SChristian Brueffer.Nd GPIO LED generic device driver
338ce07fe7SLuiz Otavio O Souza.Sh SYNOPSIS
346a6ce390SChristian BruefferTo compile this driver into the kernel,
356a6ce390SChristian Bruefferplace the following lines in your
366a6ce390SChristian Bruefferkernel configuration file:
376a6ce390SChristian Brueffer.Bd -ragged -offset indent
388ce07fe7SLuiz Otavio O Souza.Cd "device gpio"
398ce07fe7SLuiz Otavio O Souza.Cd "device gpioled"
406a6ce390SChristian Brueffer.Ed
418ce07fe7SLuiz Otavio O Souza.Sh DESCRIPTION
428ce07fe7SLuiz Otavio O SouzaThe
436a6ce390SChristian Brueffer.Nm
446a6ce390SChristian Bruefferdriver provides glue to attach a
458ce07fe7SLuiz Otavio O Souza.Xr led 4
468ce07fe7SLuiz Otavio O Souzacompatible device to a GPIO pin.
476a6ce390SChristian BruefferEach LED in the system has a
488ce07fe7SLuiz Otavio O Souza.Pa name
496a6ce390SChristian Bruefferwhich is used to export a device as
508ce07fe7SLuiz Otavio O Souza.Pa /dev/led/<name> .
518ce07fe7SLuiz Otavio O SouzaThe GPIO pin can then be controlled by writing to this device as described
526a6ce390SChristian Bruefferin
538ce07fe7SLuiz Otavio O Souza.Xr led 4 .
548ce07fe7SLuiz Otavio O Souza.Pp
556a6ce390SChristian BruefferOn a
566a6ce390SChristian Brueffer.Xr device.hints 5
576a6ce390SChristian Bruefferbased system, like
586a6ce390SChristian Brueffer.Li MIPS ,
596a6ce390SChristian Bruefferthese values are configurable for
608ce07fe7SLuiz Otavio O Souza.Nm :
618ce07fe7SLuiz Otavio O Souza.Bl -tag -width ".Va hint.gpioiic.%d.atXXX"
628ce07fe7SLuiz Otavio O Souza.It Va hint.gpioled.%d.at
638ce07fe7SLuiz Otavio O SouzaThe gpiobus you are attaching to.
648ce07fe7SLuiz Otavio O SouzaNormally assigned to gpiobus0.
658ce07fe7SLuiz Otavio O Souza.It Va hint.gpioled.%d.name
668ce07fe7SLuiz Otavio O SouzaArbitrary name of device in
678ce07fe7SLuiz Otavio O Souza.Pa /dev/led/
688ce07fe7SLuiz Otavio O Souzato create for
698ce07fe7SLuiz Otavio O Souza.Xr led 4 .
708ce07fe7SLuiz Otavio O Souza.It Va hint.gpioled.%d.pins
718ce07fe7SLuiz Otavio O SouzaWhich pin on the GPIO interface to map to this instance.
728ce07fe7SLuiz Otavio O SouzaPlease note that this mask should only ever have one bit set
736a6ce390SChristian Brueffer(any other bits - i.e., pins - will be ignored).
74452ccc02SAdrian Chadd.It Va hint.gpioled.%d.invert
75452ccc02SAdrian ChaddIf set to 1, the pin will be set to 0 to light the LED, and 1 to clear it.
768ce07fe7SLuiz Otavio O Souza.El
779a2a079aSLuiz Otavio O Souza.Pp
789a2a079aSLuiz Otavio O SouzaOn a
799a2a079aSLuiz Otavio O Souza.Xr FDT 4
809a2a079aSLuiz Otavio O Souzabased system, like
816a6ce390SChristian Brueffer.Li ARM ,
826a6ce390SChristian Bruefferthe DTS part for a
839a2a079aSLuiz Otavio O Souza.Nm gpioled
849a2a079aSLuiz Otavio O Souzadevice usually looks like:
859a2a079aSLuiz Otavio O Souza.Bd -literal
869a2a079aSLuiz Otavio O Souzagpio: gpio {
879a2a079aSLuiz Otavio O Souza
889a2a079aSLuiz Otavio O Souza	gpio-controller;
899a2a079aSLuiz Otavio O Souza	...
909a2a079aSLuiz Otavio O Souza
919a2a079aSLuiz Otavio O Souza	led0 {
929a2a079aSLuiz Otavio O Souza		compatible = "gpioled";
939a2a079aSLuiz Otavio O Souza		gpios = <&gpio 16 2 0>;		/* GPIO pin 16. */
949a2a079aSLuiz Otavio O Souza		name = "ok";
959a2a079aSLuiz Otavio O Souza	};
969a2a079aSLuiz Otavio O Souza
979a2a079aSLuiz Otavio O Souza	led1 {
989a2a079aSLuiz Otavio O Souza		compatible = "gpioled";
999a2a079aSLuiz Otavio O Souza		gpios = <&gpio 17 2 0>;		/* GPIO pin 17. */
1009a2a079aSLuiz Otavio O Souza		name = "user-led1";
1019a2a079aSLuiz Otavio O Souza	};
1029a2a079aSLuiz Otavio O Souza};
1039a2a079aSLuiz Otavio O Souza.Ed
1049a2a079aSLuiz Otavio O Souza.Pp
1056a6ce390SChristian BruefferOptionally, you can choose to combine all the LEDs under a single
1069a2a079aSLuiz Otavio O Souza.Dq gpio-leds
1079a2a079aSLuiz Otavio O Souzacompatible node:
1089a2a079aSLuiz Otavio O Souza.Bd -literal
1099a2a079aSLuiz Otavio O Souzasimplebus0 {
1109a2a079aSLuiz Otavio O Souza
1119a2a079aSLuiz Otavio O Souza	...
1129a2a079aSLuiz Otavio O Souza
1139a2a079aSLuiz Otavio O Souza	leds {
1149a2a079aSLuiz Otavio O Souza		compatible = "gpio-leds";
1159a2a079aSLuiz Otavio O Souza
1169a2a079aSLuiz Otavio O Souza		led0 {
1179a2a079aSLuiz Otavio O Souza			gpios = <&gpio 16 2 0>;
1189a2a079aSLuiz Otavio O Souza			name = "ok"
1199a2a079aSLuiz Otavio O Souza		};
1209a2a079aSLuiz Otavio O Souza
1219a2a079aSLuiz Otavio O Souza		led1 {
1229a2a079aSLuiz Otavio O Souza			gpios = <&gpio 17 2 0>;
1239a2a079aSLuiz Otavio O Souza			name = "user-led1"
1249a2a079aSLuiz Otavio O Souza		};
1259a2a079aSLuiz Otavio O Souza	};
1269a2a079aSLuiz Otavio O Souza};
1279a2a079aSLuiz Otavio O Souza.Ed
1289a2a079aSLuiz Otavio O Souza.Pp
1296a6ce390SChristian BruefferBoth methods are equally supported and it is possible to have the LEDs
1309a2a079aSLuiz Otavio O Souzadefined with any sort of mix between the methods.
1319a2a079aSLuiz Otavio O SouzaThe only restriction is that a GPIO pin cannot be mapped by two different
1329a2a079aSLuiz Otavio O Souza(gpio)leds.
1339a2a079aSLuiz Otavio O Souza.Pp
1349a2a079aSLuiz Otavio O SouzaFor more details about the
1359a2a079aSLuiz Otavio O Souza.Va gpios
1369a2a079aSLuiz Otavio O Souzaproperty, please consult
137*2e36db14SWarner Losh.Pa /usr/src/sys/dts/bindings-gpio.txt .
1389a2a079aSLuiz Otavio O Souza.Pp
1399a2a079aSLuiz Otavio O SouzaThe property
1409a2a079aSLuiz Otavio O Souza.Va name
1416a6ce390SChristian Bruefferis the arbitrary name of the device in
1429a2a079aSLuiz Otavio O Souza.Pa /dev/led/
1439a2a079aSLuiz Otavio O Souzato create for
1449a2a079aSLuiz Otavio O Souza.Xr led 4 .
1458ce07fe7SLuiz Otavio O Souza.Sh SEE ALSO
1469a2a079aSLuiz Otavio O Souza.Xr fdt 4 ,
1478ce07fe7SLuiz Otavio O Souza.Xr gpio 4 ,
1486a6ce390SChristian Brueffer.Xr gpioiic 4 ,
1496a6ce390SChristian Brueffer.Xr led 4
1508ce07fe7SLuiz Otavio O Souza.Sh HISTORY
1518ce07fe7SLuiz Otavio O SouzaThe
1528ce07fe7SLuiz Otavio O Souza.Nm
1538ce07fe7SLuiz Otavio O Souzamanual page first appeared in
154b6d2fa3eSLuiz Otavio O Souza.Fx 10.1 .
1558ce07fe7SLuiz Otavio O Souza.Sh AUTHORS
1568ce07fe7SLuiz Otavio O SouzaThis
1578ce07fe7SLuiz Otavio O Souzamanual page was written by
1588ce07fe7SLuiz Otavio O Souza.An Luiz Otavio O Souza .
159