summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2011-09-04 21:12:18 +0200
committerWolfgang Denk <wd@denx.de>2011-09-04 21:12:18 +0200
commit6dfbf49c6dc3687efbc6d7f9e25bb46ed2d6c833 (patch)
tree154fe4abb74f5e03962506168c7d8c4869f7ac8a /common
parentdc344589ded4fb4d63ba7f0cdf670e2ffcf5e5a0 (diff)
parent38a77c3adb3ee559b135217769f5c49f3c8b62c9 (diff)
Merge branch 'master' of git://git.denx.de/u-boot-arm
* 'master' of git://git.denx.de/u-boot-arm: (145 commits) beagleboard: enable HUB power on all variants of the BeagleBoard dm3730: enable dpll5 ehci-hcd: Allow cleanups to happen gracefully on a timeout. OMAP3: Add DSS driver for OMAP3 led: Remove state-saving of led for toggle functionality and add toggle option to led command led: Fixed setting of STATUS_LED_BIT1 when led_name is 'all' led: correct off/on locations in structure led: added cmd_led to Makefile BeagleBoard: fix LED 0/1 in driver Corrected LED name match finding avoiding extraneous Usage printouts BeagleBoard: config: updated default configuration BeagleBoard: config: Enabled multibus support for I2C in configuration BeagleBoard: config: add optargs/buddy/camera BeagleBoard: config: increase command-line functionality BeagleBoard: config: make mtest run BeagleBoard: config: enable DSS BeagleBoard: config: enable asix driver and dhcp BeagleBoard: config: enable networking BeagleBoard: config: decrease bootdelay to 2 seconds BeagleBoard: config: use uImage.beagle for tftp BeagleBoard: config: hardcode MAC for onboard SMSC BeagleBoard: config: load kernel from MMC ext, not FAT BeagleBoard: Configure DVI/S-video BeagleBoard: Added userbutton command BeagleBoard: turn off clocks in ehci_stop USB: Remove __attribute__ ((packed)) for struct ehci_hccr and ehci_hcor beagleboard: add support for xM revision C beagle: pass expansionboard name in bootargs OMAP: Remove omapfb.debug=y from Beagle and Overo env settings OMAP3 Beagle Pin Mux initialization glitch fix da850: modifications for Logic PD Rev.3 AM18xx EVM da850: fix the channel number for EMAC teardown init da850: add support for Spectrum Digital AM18xx EVM da850: add support to wake up DSP during board init da850: modify the U-Boot prompt string da850: add NOR boot mode support da8xx: add support for multiple PLL controllers da850: indicate cache usage disable in config file dm365: modify boot prompt from dm365 to dm36x dm365: disable cache usage due to coherency issues dm6446: disable cache usage due to coherency issues OMAP3: Remove legacy mmc driver devkit8000: Use generic MMC driver TI OMAP3 SDP3430: Use generic MMC driver AM3517 CraneBoard: Use generic MMC driver OMAP3: pandora: Use generic MMC driver OMAP3: Zoom2: Use generic MMC driver OMAP3: Zoom1: Use generic MMC driver OMAP3: DIG297: Use generic MMC driver OMAP3: CM-T35: Use generic MMC driver am3517evm: Use generic MMC driver omap3evm: Use generic MMC driver omap3:clock: check cpu_family before enabling clks for IVA & CAM omap3:clock: configure GFX clock to 200MHz for AM/DM37x OMAP3/4: Increase console I/O buffer size PXA: vpac270: Remove re-defined CONFIG_SYS_TEXT_BASE PXA: Fix CSB226, fix monitor length PXA: Fix Lubbock, remove redundant parenthesis armv7: cache: remove flush on un-aligned invalidate armv7: stronger barrier for cache-maintenance operations omap: enable caches at system start-up arm: do not force d-cache enable on all boards ORIGEN: Add MMC SPL support ARMV7: Add support for Samsung ORIGEN board i2c:gpio:s5p: Enable I2C GPIO on the GONI target i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c) Tegra2: Use clock and pinmux functions to simplify code Tegra2: Add additional pin multiplexing features Tegra2: Add more clock support Tegra2: Add microsecond timer function ARM: remove broken "at91rm9200dk" board ARM: remove broken "m501sk" board ARM: remove broken "kb9202" board ARM: remove broken "csb637" board ARM: remove broken "cmc_pu2" board ARM: remove broken "at91cap9adk" board ARM: remove broken "voiceblue" board ARM: remove broken "smdk2400" board ARM: remove broken "sbc2410x" board ARM: remove broken "netstar" board ARM: remove broken "mx1fs2" board ARM: remove broken "lpd7a40x" boards ARM: remove broken "edb93xx" boards ARM: remove broken "B2" board ARM: remove broken "armadillo" board ARM: remove broken "assabet" board ARM: versatile: drop warnings IMX: scb9328: drop warnings MX31: imx31_litekit: make use of GPIO framework MX31: mx31ads: make use of GPIO framework MX5: mx51evk: make use of GPIO framework MX35: mx35pdk: make use of GPIO framework MX5: mx53loco: make use of GPIO framework MX5: mx53evk: make use of GPIO framework MX5: vision2: make use of GPIO framework MX5: mx53smd: make use of GPIO framework MX5: mx53ard: make use of GPIO framework MX25: zmx25: make use of GPIO framework MX5: efikamx: make use of GPIO framework MX31: QONG: make use of GPIO framework MX35: make use of GPIO framework for MX35 processor MX5: make use of GPIO framework for MX5 processor MX31: make use of GPIO framework for MX31 processor MX25: make use of GPIO framework for MX25 processor IMX: uniform GPIO interface using GPIO framework MX: MX35 / MX5: uniform clock command with powerpc MX35: MX35PDK: support additional RAM on CSD1 mx53: ddr3: Update DD3 initialization ARM: MX51: PLL errata workaround ARM: versatilepb : drop warnings due to double definitions omap4: increase SRAM budget to fix build error omap4: fix build warning due to signed unsigned comparison mkimage: Fix 'Unknown OMAP image type - 5' omap: fix gpio related build breaks gpio:samsung: s5p_ suffix add for GPIO functions (C210_universal) SMDKV310: MMC SPL: Remove unwanted dummy functions SMDKV310: Fix undefined reference error SMDKV310: Fix build error for smdkv310 board gpio:samsung s5p_ suffix add for GPIO functions mmc: S5P: Support DMA restarts at buffer boundaries SMDKV310: Fix host compilation of mkv310_image arm: fix bd pointer dereference prior initialization arm, lib/board.c: use gd->ram_size instead of bd->bi_memsize mx5: Remove CONFIG_L2_OFF and CONFIG_SYS_L2CACHE_OFF MX31: removed warnings due to clock.h integrator: convert to new build system integratorcp: make the board compile integratorap: remove hardcoded 32MB memory cmdline ...
Diffstat (limited to 'common')
-rw-r--r--common/Makefile1
-rw-r--r--common/cmd_led.c73
2 files changed, 47 insertions, 27 deletions
diff --git a/common/Makefile b/common/Makefile
index d66246823c..2edbd71474 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -106,6 +106,7 @@ COBJS-$(CONFIG_CMD_ITEST) += cmd_itest.o
COBJS-$(CONFIG_CMD_JFFS2) += cmd_jffs2.o
COBJS-$(CONFIG_CMD_CRAMFS) += cmd_cramfs.o
COBJS-$(CONFIG_CMD_LDRINFO) += cmd_ldrinfo.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
index c53195f1a3..0e4ebc59c0 100644
--- a/common/cmd_led.c
+++ b/common/cmd_led.c
@@ -34,8 +34,9 @@
struct led_tbl_s {
char *string; /* String for use in the command */
led_id_t mask; /* Mask used for calling __led_set() */
- void (*on)(void); /* Optional fucntion for turning LED on */
- void (*off)(void); /* Optional fucntion for turning LED on */
+ void (*off)(void); /* Optional function for turning LED off */
+ void (*on)(void); /* Optional function for turning LED on */
+ void (*toggle)(void);/* Optional function for toggling LED */
};
typedef struct led_tbl_s led_tbl_t;
@@ -43,76 +44,94 @@ typedef struct led_tbl_s led_tbl_t;
static const led_tbl_t led_commands[] = {
#ifdef CONFIG_BOARD_SPECIFIC_LED
#ifdef STATUS_LED_BIT
- { "0", STATUS_LED_BIT, NULL, NULL },
+ { "0", STATUS_LED_BIT, NULL, NULL, NULL },
#endif
#ifdef STATUS_LED_BIT1
- { "1", STATUS_LED_BIT1, NULL, NULL },
+ { "1", STATUS_LED_BIT1, NULL, NULL, NULL },
#endif
#ifdef STATUS_LED_BIT2
- { "2", STATUS_LED_BIT2, NULL, NULL },
+ { "2", STATUS_LED_BIT2, NULL, NULL, NULL },
#endif
#ifdef STATUS_LED_BIT3
- { "3", STATUS_LED_BIT3, NULL, NULL },
+ { "3", STATUS_LED_BIT3, NULL, NULL, NULL },
#endif
#endif
#ifdef STATUS_LED_GREEN
- { "green", STATUS_LED_GREEN, green_LED_off, green_LED_on },
+ { "green", STATUS_LED_GREEN, green_LED_off, green_LED_on, NULL },
#endif
#ifdef STATUS_LED_YELLOW
- { "yellow", STATUS_LED_YELLOW, yellow_LED_off, yellow_LED_on },
+ { "yellow", STATUS_LED_YELLOW, yellow_LED_off, yellow_LED_on, NULL },
#endif
#ifdef STATUS_LED_RED
- { "red", STATUS_LED_RED, red_LED_off, red_LED_on },
+ { "red", STATUS_LED_RED, red_LED_off, red_LED_on, NULL },
#endif
#ifdef STATUS_LED_BLUE
- { "blue", STATUS_LED_BLUE, blue_LED_off, blue_LED_on },
+ { "blue", STATUS_LED_BLUE, blue_LED_off, blue_LED_on, NULL },
#endif
- { NULL, 0, NULL, NULL }
+ { NULL, 0, NULL, NULL, NULL }
};
-int str_onoff (char *var)
+enum led_cmd { LED_ON, LED_OFF, LED_TOGGLE };
+
+enum led_cmd get_led_cmd(char *var)
{
if (strcmp(var, "off") == 0) {
- return 0;
+ return LED_OFF;
}
if (strcmp(var, "on") == 0) {
- return 1;
+ return LED_ON;
}
+ if (strcmp(var, "toggle") == 0)
+ return LED_TOGGLE;
return -1;
}
int do_led (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
- int state, i;
+ int i, match = 0;
+ enum led_cmd cmd;
/* Validate arguments */
if ((argc != 3)) {
return cmd_usage(cmdtp);
}
- state = str_onoff(argv[2]);
- if (state < 0) {
+ cmd = get_led_cmd(argv[2]);
+ if (cmd < 0) {
return cmd_usage(cmdtp);
}
for (i = 0; led_commands[i].string; i++) {
if ((strcmp("all", argv[1]) == 0) ||
(strcmp(led_commands[i].string, argv[1]) == 0)) {
- if (led_commands[i].on) {
- if (state) {
+ match = 1;
+ switch (cmd) {
+ case LED_ON:
+ if (led_commands[i].on)
led_commands[i].on();
- } else {
+ else
+ __led_set(led_commands[i].mask, 1);
+ break;
+ case LED_OFF:
+ if (led_commands[i].off)
led_commands[i].off();
- }
- } else {
- __led_set(led_commands[i].mask, state);
+ else
+ __led_set(led_commands[i].mask, 0);
+ break;
+ case LED_TOGGLE:
+ if (led_commands[i].toggle)
+ led_commands[i].toggle();
+ else
+ __led_toggle(led_commands[i].mask);
}
- break;
+ /* Need to set only 1 led if led_name wasn't 'all' */
+ if (strcmp("all", argv[1]) != 0)
+ break;
}
}
/* If we ran out of matches, print Usage */
- if (!led_commands[i].string && !(strcmp("all", argv[1]) == 0)) {
+ if (!match) {
return cmd_usage(cmdtp);
}
@@ -148,6 +167,6 @@ U_BOOT_CMD(
#ifdef STATUS_LED_BLUE
"blue|"
#endif
- "all] [on|off]\n",
- "led [led_name] [on|off] sets or clears led(s)\n"
+ "all] [on|off|toggle]\n",
+ "led [led_name] [on|off|toggle] sets or clears led(s)\n"
);