summaryrefslogtreecommitdiffstats
path: root/recipes-bsp/u-boot/u-boot/0039-Add-led-command.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-bsp/u-boot/u-boot/0039-Add-led-command.patch')
-rw-r--r--recipes-bsp/u-boot/u-boot/0039-Add-led-command.patch256
1 files changed, 256 insertions, 0 deletions
diff --git a/recipes-bsp/u-boot/u-boot/0039-Add-led-command.patch b/recipes-bsp/u-boot/u-boot/0039-Add-led-command.patch
new file mode 100644
index 00000000..6adbe2f7
--- /dev/null
+++ b/recipes-bsp/u-boot/u-boot/0039-Add-led-command.patch
@@ -0,0 +1,256 @@
1From 609524ecd54526b3f3c7d52cc43a3c9795970f6b Mon Sep 17 00:00:00 2001
2From: Jason Kridner <jkridner@beagleboard.org>
3Date: Thu, 20 May 2010 05:41:26 -0500
4Subject: [PATCH] Add 'led' command
5
6This patch allows any board implementing the coloured LED API
7to control the LEDs from the console.
8
9led [green | yellow | red | all ] [ on | off ]
10
11or
12
13led [ 1 | 2 | 3 | all ] [ on | off ]
14
15Adds configuration item CONFIG_CMD_LED enabling the command.
16
17Partially based on patch from Ulf Samuelsson:
18http://www.mail-archive.com/u-boot@lists.denx.de/msg09593.html.
19(cherry picked from commit aaf47f8d6af81393b7d3275d69b5dbdf07a3d6fb)
20(cherry picked from commit 3d314bf59a48c2ee93d06d50b81f109af6a6c1ec)
21
22Signed-off-by: Jason Kridner <jkridner@beagleboard.org>
23---
24 common/Makefile | 1 +
25 common/cmd_led.c | 207 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
26 2 files changed, 208 insertions(+), 0 deletions(-)
27 create mode 100644 common/cmd_led.c
28
29diff --git a/common/Makefile b/common/Makefile
30index dbf7a05..1d717ca 100644
31--- a/common/Makefile
32+++ b/common/Makefile
33@@ -106,6 +106,7 @@ COBJS-$(CONFIG_CMD_IRQ) += cmd_irq.o
34 COBJS-$(CONFIG_CMD_ITEST) += cmd_itest.o
35 COBJS-$(CONFIG_CMD_JFFS2) += cmd_jffs2.o
36 COBJS-$(CONFIG_CMD_CRAMFS) += cmd_cramfs.o
37+COBJS-$(CONFIG_CMD_LED) += cmd_led.o
38 COBJS-$(CONFIG_CMD_LICENSE) += cmd_license.o
39 COBJS-y += cmd_load.o
40 COBJS-$(CONFIG_LOGBUFFER) += cmd_log.o
41diff --git a/common/cmd_led.c b/common/cmd_led.c
42new file mode 100644
43index 0000000..3b7b534
44--- /dev/null
45+++ b/common/cmd_led.c
46@@ -0,0 +1,207 @@
47+/*
48+ * (C) Copyright 2010
49+ * Jason Kridner <jkridner@beagleboard.org>
50+ *
51+ * Based on cmd_led.c patch from:
52+ * http://www.mail-archive.com/u-boot@lists.denx.de/msg06873.html
53+ * (C) Copyright 2008
54+ * Ulf Samuelsson <ulf.samuelsson@atmel.com>
55+ *
56+ * See file CREDITS for list of people who contributed to this
57+ * project.
58+ *
59+ * This program is free software; you can redistribute it and/or
60+ * modify it under the terms of the GNU General Public License as
61+ * published by the Free Software Foundation; either version 2 of
62+ * the License, or (at your option) any later version.
63+ *
64+ * This program is distributed in the hope that it will be useful,
65+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
66+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
67+ * GNU General Public License for more details.
68+ *
69+ * You should have received a copy of the GNU General Public License
70+ * along with this program; if not, write to the Free Software
71+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
72+ * MA 02111-1307 USA
73+ */
74+
75+/*
76+ * This file provides a shell like 'test' function to return
77+ * true/false from an integer or string compare of two memory
78+ * locations or a location and a scalar/literal.
79+ * A few parts were lifted from bash 'test' command
80+ */
81+
82+#include <common.h>
83+#include <config.h>
84+#include <command.h>
85+#include <status_led.h>
86+
87+int do_led ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[] )
88+{
89+#ifdef CONFIG_BOARD_SPECIFIC_LED
90+ led_id_t mask;
91+#endif
92+ int state;
93+
94+ /* Validate arguments */
95+ if ((argc != 3)){
96+ printf("Usage:\n%s\n", cmdtp->usage);
97+ return 1;
98+ }
99+
100+ if (strcmp(argv[2], "off") == 0) {
101+ state = 0;
102+ } else if (strcmp(argv[2], "on") == 0) {
103+ state = 1;
104+ } else {
105+ printf ("Usage:\n%s\n", cmdtp->usage);
106+ return 1;
107+ }
108+
109+#if defined(STATUS_LED_BIT) && defined(CONFIG_BOARD_SPECIFIC_LED)
110+ if (strcmp(argv[1], "0") == 0) {
111+ mask = STATUS_LED_BIT;
112+ __led_set(mask, state);
113+ }
114+ else
115+#endif
116+#if defined(STATUS_LED_BIT1) && defined(CONFIG_BOARD_SPECIFIC_LED)
117+ if (strcmp(argv[1], "1") == 0) {
118+ mask = STATUS_LED_BIT1;
119+ __led_set(mask, state);
120+ }
121+ else
122+#endif
123+#if defined(STATUS_LED_BIT2) && defined(CONFIG_BOARD_SPECIFIC_LED)
124+ if (strcmp(argv[1], "2") == 0) {
125+ mask = STATUS_LED_BIT2;
126+ __led_set(mask, state);
127+ }
128+ else
129+#endif
130+#if defined(STATUS_LED_BIT3) && defined(CONFIG_BOARD_SPECIFIC_LED)
131+ if (strcmp(argv[1], "3") == 0) {
132+ mask = STATUS_LED_BIT3;
133+ __led_set(mask, state);
134+ }
135+ else
136+#endif
137+#ifdef STATUS_LED_RED
138+ if (strcmp(argv[1], "red") == 0) {
139+ if (state == 0)
140+ red_LED_off();
141+ else
142+ red_LED_on();
143+ }
144+ else
145+#endif
146+#ifdef STATUS_LED_GREEN
147+ if (strcmp(argv[1], "green") == 0) {
148+ if (state == 0)
149+ green_LED_off();
150+ else
151+ green_LED_on();
152+ }
153+ else
154+#endif
155+#ifdef STATUS_LED_YELLOW
156+ if (strcmp(argv[1], "yellow") == 0) {
157+ if (state == 0)
158+ yellow_LED_off();
159+ else
160+ yellow_LED_on();
161+ }
162+ else
163+#endif
164+#ifdef STATUS_LED_BLUE
165+ if (strcmp(argv[1], "blue") == 0) {
166+ if (state == 0)
167+ blue_LED_off();
168+ else
169+ blue_LED_on();
170+ }
171+ else
172+#endif
173+ if (strcmp(argv[1], "all") == 0) {
174+ mask = 0
175+#if defined(STATUS_LED_BIT) && defined(CONFIG_BOARD_SPECIFIC_LED)
176+ | STATUS_LED_BIT
177+#endif
178+#if defined(STATUS_LED_BIT1) && defined(CONFIG_BOARD_SPECIFIC_LED)
179+ | STATUS_LED_BIT1
180+#endif
181+#if defined(STATUS_LED_BIT2) && defined(CONFIG_BOARD_SPECIFIC_LED)
182+ | STATUS_LED_BIT2
183+#endif
184+#if defined(STATUS_LED_BIT3) && defined(CONFIG_BOARD_SPECIFIC_LED)
185+ | STATUS_LED_BIT3
186+#endif
187+ ;
188+#ifdef CONFIG_BOARD_SPECIFIC_LED
189+ __led_set(mask, state);
190+#endif
191+#ifdef STATUS_LED_RED
192+ if (state == 0)
193+ red_LED_off();
194+ else
195+ red_LED_on();
196+#endif
197+#ifdef STATUS_LED_GREEN
198+ if (state == 0)
199+ green_LED_off();
200+ else
201+ green_LED_on();
202+#endif
203+#ifdef STATUS_LED_YELLOW
204+ if (state == 0)
205+ yellow_LED_off();
206+ else
207+ yellow_LED_on();
208+#endif
209+#ifdef STATUS_LED_BLUE
210+ if (state == 0)
211+ blue_LED_off();
212+ else
213+ blue_LED_on();
214+#endif
215+ } else {
216+ printf ("Usage:\n%s\n", cmdtp->usage);
217+ return 1;
218+ }
219+
220+ return 0;
221+}
222+
223+U_BOOT_CMD(
224+ led, 3, 1, do_led,
225+ "led\t- ["
226+#if defined(STATUS_LED_BIT) && defined(CONFIG_BOARD_SPECIFIC_LED)
227+ "0|"
228+#endif
229+#if defined(STATUS_LED_BIT1) && defined(CONFIG_BOARD_SPECIFIC_LED)
230+ "1|"
231+#endif
232+#if defined(STATUS_LED_BIT2) && defined(CONFIG_BOARD_SPECIFIC_LED)
233+ "2|"
234+#endif
235+#if defined(STATUS_LED_BIT3) && defined(CONFIG_BOARD_SPECIFIC_LED)
236+ "3|"
237+#endif
238+#ifdef STATUS_LED_GREEN
239+ "green|"
240+#endif
241+#ifdef STATUS_LED_YELLOW
242+ "yellow|"
243+#endif
244+#ifdef STATUS_LED_RED
245+ "red|"
246+#endif
247+#ifdef STATUS_LED_BLUE
248+ "blue|"
249+#endif
250+ "all] [on|off]\n",
251+ "led [led_name] [on|off] sets or clears led(s)\n"
252+);
253+
254--
2551.5.6.4
256