diff options
Diffstat (limited to 'recipes/u-boot/u-boot-git/beagleboard/0043-Add-led-command.patch')
-rw-r--r-- | recipes/u-boot/u-boot-git/beagleboard/0043-Add-led-command.patch | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/recipes/u-boot/u-boot-git/beagleboard/0043-Add-led-command.patch b/recipes/u-boot/u-boot-git/beagleboard/0043-Add-led-command.patch new file mode 100644 index 0000000000..8d19d1ed2a --- /dev/null +++ b/recipes/u-boot/u-boot-git/beagleboard/0043-Add-led-command.patch @@ -0,0 +1,256 @@ +From 1fc5c28bc260c72b4f9cefdf55bfd10504916457 Mon Sep 17 00:00:00 2001 +From: Jason Kridner <jkridner@beagleboard.org> +Date: Thu, 20 May 2010 05:41:26 -0500 +Subject: [PATCH 43/50] Add 'led' command + +This patch allows any board implementing the coloured LED API +to control the LEDs from the console. + +led [green | yellow | red | all ] [ on | off ] + +or + +led [ 1 | 2 | 3 | all ] [ on | off ] + +Adds configuration item CONFIG_CMD_LED enabling the command. + +Partially based on patch from Ulf Samuelsson: +http://www.mail-archive.com/u-boot@lists.denx.de/msg09593.html. +(cherry picked from commit aaf47f8d6af81393b7d3275d69b5dbdf07a3d6fb) +(cherry picked from commit 3d314bf59a48c2ee93d06d50b81f109af6a6c1ec) + +Signed-off-by: Jason Kridner <jkridner@beagleboard.org> +--- + common/Makefile | 1 + + common/cmd_led.c | 207 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 208 insertions(+), 0 deletions(-) + create mode 100644 common/cmd_led.c + +diff --git a/common/Makefile b/common/Makefile +index dbf7a05..1d717ca 100644 +--- a/common/Makefile ++++ b/common/Makefile +@@ -106,6 +106,7 @@ COBJS-$(CONFIG_CMD_IRQ) += cmd_irq.o + COBJS-$(CONFIG_CMD_ITEST) += cmd_itest.o + COBJS-$(CONFIG_CMD_JFFS2) += cmd_jffs2.o + COBJS-$(CONFIG_CMD_CRAMFS) += cmd_cramfs.o ++COBJS-$(CONFIG_CMD_LED) += cmd_led.o + COBJS-$(CONFIG_CMD_LICENSE) += cmd_license.o + COBJS-y += cmd_load.o + COBJS-$(CONFIG_LOGBUFFER) += cmd_log.o +diff --git a/common/cmd_led.c b/common/cmd_led.c +new file mode 100644 +index 0000000..3b7b534 +--- /dev/null ++++ b/common/cmd_led.c +@@ -0,0 +1,207 @@ ++/* ++ * (C) Copyright 2010 ++ * Jason Kridner <jkridner@beagleboard.org> ++ * ++ * Based on cmd_led.c patch from: ++ * http://www.mail-archive.com/u-boot@lists.denx.de/msg06873.html ++ * (C) Copyright 2008 ++ * Ulf Samuelsson <ulf.samuelsson@atmel.com> ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of ++ * the License, or (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++/* ++ * This file provides a shell like 'test' function to return ++ * true/false from an integer or string compare of two memory ++ * locations or a location and a scalar/literal. ++ * A few parts were lifted from bash 'test' command ++ */ ++ ++#include <common.h> ++#include <config.h> ++#include <command.h> ++#include <status_led.h> ++ ++int do_led ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[] ) ++{ ++#ifdef CONFIG_BOARD_SPECIFIC_LED ++ led_id_t mask; ++#endif ++ int state; ++ ++ /* Validate arguments */ ++ if ((argc != 3)){ ++ printf("Usage:\n%s\n", cmdtp->usage); ++ return 1; ++ } ++ ++ if (strcmp(argv[2], "off") == 0) { ++ state = 0; ++ } else if (strcmp(argv[2], "on") == 0) { ++ state = 1; ++ } else { ++ printf ("Usage:\n%s\n", cmdtp->usage); ++ return 1; ++ } ++ ++#if defined(STATUS_LED_BIT) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ if (strcmp(argv[1], "0") == 0) { ++ mask = STATUS_LED_BIT; ++ __led_set(mask, state); ++ } ++ else ++#endif ++#if defined(STATUS_LED_BIT1) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ if (strcmp(argv[1], "1") == 0) { ++ mask = STATUS_LED_BIT1; ++ __led_set(mask, state); ++ } ++ else ++#endif ++#if defined(STATUS_LED_BIT2) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ if (strcmp(argv[1], "2") == 0) { ++ mask = STATUS_LED_BIT2; ++ __led_set(mask, state); ++ } ++ else ++#endif ++#if defined(STATUS_LED_BIT3) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ if (strcmp(argv[1], "3") == 0) { ++ mask = STATUS_LED_BIT3; ++ __led_set(mask, state); ++ } ++ else ++#endif ++#ifdef STATUS_LED_RED ++ if (strcmp(argv[1], "red") == 0) { ++ if (state == 0) ++ red_LED_off(); ++ else ++ red_LED_on(); ++ } ++ else ++#endif ++#ifdef STATUS_LED_GREEN ++ if (strcmp(argv[1], "green") == 0) { ++ if (state == 0) ++ green_LED_off(); ++ else ++ green_LED_on(); ++ } ++ else ++#endif ++#ifdef STATUS_LED_YELLOW ++ if (strcmp(argv[1], "yellow") == 0) { ++ if (state == 0) ++ yellow_LED_off(); ++ else ++ yellow_LED_on(); ++ } ++ else ++#endif ++#ifdef STATUS_LED_BLUE ++ if (strcmp(argv[1], "blue") == 0) { ++ if (state == 0) ++ blue_LED_off(); ++ else ++ blue_LED_on(); ++ } ++ else ++#endif ++ if (strcmp(argv[1], "all") == 0) { ++ mask = 0 ++#if defined(STATUS_LED_BIT) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ | STATUS_LED_BIT ++#endif ++#if defined(STATUS_LED_BIT1) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ | STATUS_LED_BIT1 ++#endif ++#if defined(STATUS_LED_BIT2) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ | STATUS_LED_BIT2 ++#endif ++#if defined(STATUS_LED_BIT3) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ | STATUS_LED_BIT3 ++#endif ++ ; ++#ifdef CONFIG_BOARD_SPECIFIC_LED ++ __led_set(mask, state); ++#endif ++#ifdef STATUS_LED_RED ++ if (state == 0) ++ red_LED_off(); ++ else ++ red_LED_on(); ++#endif ++#ifdef STATUS_LED_GREEN ++ if (state == 0) ++ green_LED_off(); ++ else ++ green_LED_on(); ++#endif ++#ifdef STATUS_LED_YELLOW ++ if (state == 0) ++ yellow_LED_off(); ++ else ++ yellow_LED_on(); ++#endif ++#ifdef STATUS_LED_BLUE ++ if (state == 0) ++ blue_LED_off(); ++ else ++ blue_LED_on(); ++#endif ++ } else { ++ printf ("Usage:\n%s\n", cmdtp->usage); ++ return 1; ++ } ++ ++ return 0; ++} ++ ++U_BOOT_CMD( ++ led, 3, 1, do_led, ++ "led\t- [" ++#if defined(STATUS_LED_BIT) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ "0|" ++#endif ++#if defined(STATUS_LED_BIT1) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ "1|" ++#endif ++#if defined(STATUS_LED_BIT2) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ "2|" ++#endif ++#if defined(STATUS_LED_BIT3) && defined(CONFIG_BOARD_SPECIFIC_LED) ++ "3|" ++#endif ++#ifdef STATUS_LED_GREEN ++ "green|" ++#endif ++#ifdef STATUS_LED_YELLOW ++ "yellow|" ++#endif ++#ifdef STATUS_LED_RED ++ "red|" ++#endif ++#ifdef STATUS_LED_BLUE ++ "blue|" ++#endif ++ "all] [on|off]\n", ++ "led [led_name] [on|off] sets or clears led(s)\n" ++); ++ +-- +1.6.6.1 + |