diff options
-rw-r--r-- | README | 4 | ||||
-rw-r--r-- | arch/blackfin/cpu/Makefile | 1 | ||||
-rw-r--r-- | arch/blackfin/cpu/cmd_gpio.c | 118 | ||||
-rw-r--r-- | arch/blackfin/include/asm/gpio.h | 53 | ||||
-rw-r--r-- | common/Makefile | 4 | ||||
-rw-r--r-- | common/cmd_boot.c | 4 | ||||
-rw-r--r-- | common/cmd_gpio.c | 89 | ||||
-rw-r--r-- | common/cmd_md5sum.c | 53 | ||||
-rw-r--r-- | common/cmd_mem.c | 108 | ||||
-rw-r--r-- | common/cmd_nvedit.c | 8 | ||||
-rw-r--r-- | common/cmd_sha1sum.c | 53 | ||||
-rw-r--r-- | common/cmd_unzip.c | 59 | ||||
-rw-r--r-- | include/config_cmd_defaults.h | 6 | ||||
-rw-r--r-- | include/config_defaults.h | 1 |
14 files changed, 338 insertions, 223 deletions
@@ -625,6 +625,7 @@ The following options need to be configured: CONFIG_CMD_BOOTD bootd CONFIG_CMD_CACHE * icache, dcache CONFIG_CMD_CONSOLE coninfo + CONFIG_CMD_CRC32 * crc32 CONFIG_CMD_DATE * support for RTC, date/time... CONFIG_CMD_DHCP * DHCP support CONFIG_CMD_DIAG * Diagnostics @@ -637,18 +638,21 @@ The following options need to be configured: CONFIG_CMD_EDITENV edit env variable CONFIG_CMD_EEPROM * EEPROM read/write support CONFIG_CMD_ELF * bootelf, bootvx + CONFIG_CMD_EXPORTENV * export the environment CONFIG_CMD_SAVEENV saveenv CONFIG_CMD_FDC * Floppy Disk Support CONFIG_CMD_FAT * FAT partition support CONFIG_CMD_FDOS * Dos diskette Support CONFIG_CMD_FLASH flinfo, erase, protect CONFIG_CMD_FPGA FPGA device initialization support + CONFIG_CMD_GO * the 'go' command (exec code) CONFIG_CMD_HWFLOW * RTS/CTS hw flow control CONFIG_CMD_I2C * I2C serial bus support CONFIG_CMD_IDE * IDE harddisk support CONFIG_CMD_IMI iminfo CONFIG_CMD_IMLS List all found images CONFIG_CMD_IMMAP * IMMR dump support + CONFIG_CMD_IMPORTENV * import an environment CONFIG_CMD_IRQ * irqinfo CONFIG_CMD_ITEST Integer/string test of 2 values CONFIG_CMD_JFFS2 * JFFS2 Support diff --git a/arch/blackfin/cpu/Makefile b/arch/blackfin/cpu/Makefile index 4a9e577..df10f1b 100644 --- a/arch/blackfin/cpu/Makefile +++ b/arch/blackfin/cpu/Makefile @@ -18,7 +18,6 @@ CEXTRA := initcode.o SEXTRA := start.o SOBJS := interrupt.o cache.o COBJS-$(CONFIG_BOOTCOUNT_LIMIT) += bootcount.o -COBJS-$(CONFIG_CMD_GPIO) += cmd_gpio.o COBJS-y += cpu.o COBJS-y += gpio.o COBJS-y += interrupts.o diff --git a/arch/blackfin/cpu/cmd_gpio.c b/arch/blackfin/cpu/cmd_gpio.c deleted file mode 100644 index e96413b..0000000 --- a/arch/blackfin/cpu/cmd_gpio.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Control GPIO pins on the fly - * - * Copyright (c) 2008-2010 Analog Devices Inc. - * - * Licensed under the GPL-2 or later. - */ - -#include <common.h> -#include <command.h> -#include <linux/ctype.h> - -#include <asm/blackfin.h> -#include <asm/gpio.h> - -enum { - GPIO_INPUT, - GPIO_SET, - GPIO_CLEAR, - GPIO_TOGGLE, -}; - -int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) -{ - if (argc == 2 && !strcmp(argv[1], "status")) { - bfin_gpio_labels(); - return 0; - } - - if (argc != 3) - show_usage: - return cmd_usage(cmdtp); - - /* parse the behavior */ - ulong sub_cmd; - switch (argv[1][0]) { - case 'i': sub_cmd = GPIO_INPUT; break; - case 's': sub_cmd = GPIO_SET; break; - case 'c': sub_cmd = GPIO_CLEAR; break; - case 't': sub_cmd = GPIO_TOGGLE; break; - default: goto show_usage; - } - - /* parse the pin with format: [p][port]<#> */ - const char *str_pin = argv[2]; - - /* grab the [p]<port> portion */ - ulong port_base; - if (tolower(*str_pin) == 'p') ++str_pin; - switch (tolower(*str_pin)) { -#ifdef GPIO_PA0 - case 'a': port_base = GPIO_PA0; break; -#endif -#ifdef GPIO_PB0 - case 'b': port_base = GPIO_PB0; break; -#endif -#ifdef GPIO_PC0 - case 'c': port_base = GPIO_PC0; break; -#endif -#ifdef GPIO_PD0 - case 'd': port_base = GPIO_PD0; break; -#endif -#ifdef GPIO_PE0 - case 'e': port_base = GPIO_PE0; break; -#endif -#ifdef GPIO_PF0 - case 'f': port_base = GPIO_PF0; break; -#endif -#ifdef GPIO_PG0 - case 'g': port_base = GPIO_PG0; break; -#endif -#ifdef GPIO_PH0 - case 'h': port_base = GPIO_PH0; break; -#endif -#ifdef GPIO_PI0 - case 'i': port_base = GPIO_PI0; break; -#endif -#ifdef GPIO_PJ - case 'j': port_base = GPIO_PJ0; break; -#endif - default: goto show_usage; - } - - /* grab the <#> portion */ - ulong pin = simple_strtoul(str_pin + 1, NULL, 10); - if (pin > 15) - goto show_usage; - - /* grab the pin before we tweak it */ - ulong gpio = port_base + pin; - gpio_request(gpio, "cmd_gpio"); - - /* finally, let's do it: set direction and exec command */ - ulong value; - if (sub_cmd == GPIO_INPUT) { - gpio_direction_input(gpio); - value = gpio_get_value(gpio); - } else { - switch (sub_cmd) { - case GPIO_SET: value = 1; break; - case GPIO_CLEAR: value = 0; break; - case GPIO_TOGGLE: value = !gpio_get_value(gpio); break; - default: goto show_usage; - } - gpio_direction_output(gpio, value); - } - printf("gpio: pin %lu on port %c (gpio %lu) value is %lu\n", - pin, *str_pin, gpio, value); - - gpio_free(gpio); - - return value; -} - -U_BOOT_CMD(gpio, 3, 0, do_gpio, - "input/set/clear/toggle gpio output pins", - "<input|set|clear|toggle> <port><pin>\n" - " - input/set/clear/toggle the specified pin (e.g. PF10)"); diff --git a/arch/blackfin/include/asm/gpio.h b/arch/blackfin/include/asm/gpio.h index b650ef0..9c0e5d1 100644 --- a/arch/blackfin/include/asm/gpio.h +++ b/arch/blackfin/include/asm/gpio.h @@ -196,6 +196,59 @@ static inline int gpio_is_valid(int number) return number >= 0 && number < MAX_BLACKFIN_GPIOS; } +#include <linux/ctype.h> + +static inline int name_to_gpio(const char *name) +{ + int port_base; + + if (tolower(*name) == 'p') { + ++name; + + switch (tolower(*name)) { +#ifdef GPIO_PA0 + case 'a': port_base = GPIO_PA0; break; +#endif +#ifdef GPIO_PB0 + case 'b': port_base = GPIO_PB0; break; +#endif +#ifdef GPIO_PC0 + case 'c': port_base = GPIO_PC0; break; +#endif +#ifdef GPIO_PD0 + case 'd': port_base = GPIO_PD0; break; +#endif +#ifdef GPIO_PE0 + case 'e': port_base = GPIO_PE0; break; +#endif +#ifdef GPIO_PF0 + case 'f': port_base = GPIO_PF0; break; +#endif +#ifdef GPIO_PG0 + case 'g': port_base = GPIO_PG0; break; +#endif +#ifdef GPIO_PH0 + case 'h': port_base = GPIO_PH0; break; +#endif +#ifdef GPIO_PI0 + case 'i': port_base = GPIO_PI0; break; +#endif +#ifdef GPIO_PJ + case 'j': port_base = GPIO_PJ0; break; +#endif + default: return -1; + } + + ++name; + } else + port_base = 0; + + return port_base + simple_strtoul(name, NULL, 10); +} +#define name_to_gpio(n) name_to_gpio(n) + +#define gpio_status() bfin_gpio_labels() + #endif /* __ASSEMBLY__ */ #endif /* __ARCH_BLACKFIN_GPIO_H__ */ diff --git a/common/Makefile b/common/Makefile index 6f41ce4..4fb050e 100644 --- a/common/Makefile +++ b/common/Makefile @@ -98,6 +98,7 @@ COBJS-$(CONFIG_CMD_FLASH) += cmd_flash.o ifdef CONFIG_FPGA COBJS-$(CONFIG_CMD_FPGA) += cmd_fpga.o endif +COBJS-$(CONFIG_CMD_GPIO) += cmd_gpio.o COBJS-$(CONFIG_CMD_I2C) += cmd_i2c.o COBJS-$(CONFIG_CMD_IDE) += cmd_ide.o COBJS-$(CONFIG_CMD_IMMAP) += cmd_immap.o @@ -110,6 +111,7 @@ COBJS-$(CONFIG_CMD_LICENSE) += cmd_license.o COBJS-y += cmd_load.o COBJS-$(CONFIG_LOGBUFFER) += cmd_log.o COBJS-$(CONFIG_ID_EEPROM) += cmd_mac.o +COBJS-$(CONFIG_CMD_MD5SUM) += cmd_md5sum.o COBJS-$(CONFIG_CMD_MEMORY) += cmd_mem.o COBJS-$(CONFIG_CMD_MFSL) += cmd_mfsl.o COBJS-$(CONFIG_CMD_MG_DISK) += cmd_mgdisk.o @@ -135,6 +137,7 @@ COBJS-$(CONFIG_CMD_REISER) += cmd_reiser.o COBJS-$(CONFIG_CMD_SATA) += cmd_sata.o COBJS-$(CONFIG_CMD_SF) += cmd_sf.o COBJS-$(CONFIG_CMD_SCSI) += cmd_scsi.o +COBJS-$(CONFIG_CMD_SHA1SUM) += cmd_sha1sum.o COBJS-$(CONFIG_CMD_SETEXPR) += cmd_setexpr.o COBJS-$(CONFIG_CMD_SPI) += cmd_spi.o COBJS-$(CONFIG_CMD_SPIBOOTLDR) += cmd_spibootldr.o @@ -145,6 +148,7 @@ COBJS-$(CONFIG_CMD_TSI148) += cmd_tsi148.o COBJS-$(CONFIG_CMD_UBI) += cmd_ubi.o COBJS-$(CONFIG_CMD_UBIFS) += cmd_ubifs.o COBJS-$(CONFIG_CMD_UNIVERSE) += cmd_universe.o +COBJS-$(CONFIG_CMD_UNZIP) += cmd_unzip.o ifdef CONFIG_CMD_USB COBJS-y += cmd_usb.o COBJS-y += usb.o diff --git a/common/cmd_boot.c b/common/cmd_boot.c index 7b603d3..0afd939 100644 --- a/common/cmd_boot.c +++ b/common/cmd_boot.c @@ -28,6 +28,8 @@ #include <command.h> #include <net.h> +#ifdef CONFIG_CMD_GO + /* Allow ports to override the default behavior */ __attribute__((weak)) unsigned long do_go_exec (ulong (*entry)(int, char * const []), int argc, char * const argv[]) @@ -67,6 +69,8 @@ U_BOOT_CMD( " passing 'arg' as arguments" ); +#endif + U_BOOT_CMD( reset, 1, 0, do_reset, "Perform RESET of the CPU", diff --git a/common/cmd_gpio.c b/common/cmd_gpio.c new file mode 100644 index 0000000..9cc790a --- /dev/null +++ b/common/cmd_gpio.c @@ -0,0 +1,89 @@ +/* + * Control GPIO pins on the fly + * + * Copyright (c) 2008-2011 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#include <common.h> +#include <command.h> + +#include <asm/gpio.h> + +#ifndef name_to_gpio +#define name_to_gpio(name) simple_strtoul(name, NULL, 10) +#endif + +enum gpio_cmd { + GPIO_INPUT, + GPIO_SET, + GPIO_CLEAR, + GPIO_TOGGLE, +}; + +static int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + int gpio; + enum gpio_cmd sub_cmd; + ulong value; + const char *str_cmd, *str_gpio; + +#ifdef gpio_status + if (argc == 2 && !strcmp(argv[1], "status")) { + gpio_status(); + return 0; + } +#endif + + if (argc != 3) + show_usage: + return cmd_usage(cmdtp); + str_cmd = argv[1]; + str_gpio = argv[2]; + + /* parse the behavior */ + switch (*str_cmd) { + case 'i': sub_cmd = GPIO_INPUT; break; + case 's': sub_cmd = GPIO_SET; break; + case 'c': sub_cmd = GPIO_CLEAR; break; + case 't': sub_cmd = GPIO_TOGGLE; break; + default: goto show_usage; + } + + /* turn the gpio name into a gpio number */ + gpio = name_to_gpio(str_gpio); + if (gpio < 0) + goto show_usage; + + /* grab the pin before we tweak it */ + if (gpio_request(gpio, "cmd_gpio")) { + printf("gpio: requesting pin %u failed\n", gpio); + return -1; + } + + /* finally, let's do it: set direction and exec command */ + if (sub_cmd == GPIO_INPUT) { + gpio_direction_input(gpio); + value = gpio_get_value(gpio); + } else { + switch (sub_cmd) { + case GPIO_SET: value = 1; break; + case GPIO_CLEAR: value = 0; break; + case GPIO_TOGGLE: value = !gpio_get_value(gpio); break; + default: goto show_usage; + } + gpio_direction_output(gpio, value); + } + printf("gpio: pin %s (gpio %i) value is %lu\n", + str_gpio, gpio, value); + + gpio_free(gpio); + + return value; +} + +U_BOOT_CMD(gpio, 3, 0, do_gpio, + "input/set/clear/toggle gpio pins", + "<input|set|clear|toggle> <pin>\n" + " - input/set/clear/toggle the specified pin"); diff --git a/common/cmd_md5sum.c b/common/cmd_md5sum.c new file mode 100644 index 0000000..d6ebb80 --- /dev/null +++ b/common/cmd_md5sum.c @@ -0,0 +1,53 @@ +/* + * (C) Copyright 2000 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * 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 + */ + +#include <common.h> +#include <command.h> +#include <u-boot/md5.h> + +static int do_md5sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + unsigned long addr, len; + unsigned int i; + u8 output[16]; + + if (argc < 3) + return cmd_usage(cmdtp); + + addr = simple_strtoul(argv[1], NULL, 16); + len = simple_strtoul(argv[2], NULL, 16); + + md5((unsigned char *) addr, len, output); + printf("md5 for %08lx ... %08lx ==> ", addr, addr + len - 1); + for (i = 0; i < 16; i++) + printf("%02x", output[i]); + printf("\n"); + + return 0; +} + +U_BOOT_CMD( + md5sum, 3, 1, do_md5sum, + "compute MD5 message digest", + "address count" +); diff --git a/common/cmd_mem.c b/common/cmd_mem.c index 4b524cf..a5576aa 100644 --- a/common/cmd_mem.c +++ b/common/cmd_mem.c @@ -34,9 +34,6 @@ #endif #include <watchdog.h> -#include <u-boot/md5.h> -#include <sha1.h> - #ifdef CMD_MEM_DEBUG #define PRINTF(fmt,args...) printf (fmt ,##args) #else @@ -1077,6 +1074,8 @@ mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const argv[]) return 0; } +#ifdef CONFIG_CMD_CRC32 + #ifndef CONFIG_CRC32_VERIFY int do_mem_crc (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) @@ -1161,83 +1160,8 @@ usage: } #endif /* CONFIG_CRC32_VERIFY */ -#ifdef CONFIG_CMD_MD5SUM -int do_md5sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) -{ - unsigned long addr, len; - unsigned int i; - u8 output[16]; - - if (argc < 3) - return cmd_usage(cmdtp); - - addr = simple_strtoul(argv[1], NULL, 16); - len = simple_strtoul(argv[2], NULL, 16); - - md5((unsigned char *) addr, len, output); - printf("md5 for %08lx ... %08lx ==> ", addr, addr + len - 1); - for (i = 0; i < 16; i++) - printf("%02x", output[i]); - printf("\n"); - - return 0; -} -#endif - -#ifdef CONFIG_CMD_SHA1SUM -int do_sha1sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) -{ - unsigned long addr, len; - unsigned int i; - u8 output[20]; - - if (argc < 3) - return cmd_usage(cmdtp); - - addr = simple_strtoul(argv[1], NULL, 16); - len = simple_strtoul(argv[2], NULL, 16); - - sha1_csum((unsigned char *) addr, len, output); - printf("SHA1 for %08lx ... %08lx ==> ", addr, addr + len - 1); - for (i = 0; i < 20; i++) - printf("%02x", output[i]); - printf("\n"); - - return 0; -} #endif -#ifdef CONFIG_CMD_UNZIP -int do_unzip ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) -{ - unsigned long src, dst; - unsigned long src_len = ~0UL, dst_len = ~0UL; - char buf[32]; - - switch (argc) { - case 4: - dst_len = simple_strtoul(argv[3], NULL, 16); - /* fall through */ - case 3: - src = simple_strtoul(argv[1], NULL, 16); - dst = simple_strtoul(argv[2], NULL, 16); - break; - default: - return cmd_usage(cmdtp); - } - - if (gunzip((void *) dst, dst_len, (void *) src, &src_len) != 0) - return 1; - - printf("Uncompressed size: %ld = 0x%lX\n", src_len, src_len); - sprintf(buf, "%lX", src_len); - setenv("filesize", buf); - - return 0; -} -#endif /* CONFIG_CMD_UNZIP */ - - /**************************************************/ U_BOOT_CMD( md, 3, 1, do_mem_md, @@ -1277,6 +1201,8 @@ U_BOOT_CMD( "[.b, .w, .l] addr1 addr2 count" ); +#ifdef CONFIG_CMD_CRC32 + #ifndef CONFIG_CRC32_VERIFY U_BOOT_CMD( @@ -1296,6 +1222,8 @@ U_BOOT_CMD( #endif /* CONFIG_CRC32_VERIFY */ +#endif + U_BOOT_CMD( base, 2, 1, do_mem_base, "print or set address offset", @@ -1336,27 +1264,3 @@ U_BOOT_CMD( "[.b, .w, .l] address value delay(ms)" ); #endif /* CONFIG_MX_CYCLIC */ - -#ifdef CONFIG_CMD_MD5SUM -U_BOOT_CMD( - md5sum, 3, 1, do_md5sum, - "compute MD5 message digest", - "address count" -); -#endif - -#ifdef CONFIG_CMD_SHA1SUM -U_BOOT_CMD( - sha1sum, 3, 1, do_sha1sum, - "compute SHA1 message digest", - "address count" -); -#endif /* CONFIG_CMD_SHA1SUM */ - -#ifdef CONFIG_CMD_UNZIP -U_BOOT_CMD( - unzip, 4, 1, do_unzip, - "unzip a memory region", - "srcaddr dstaddr [dstsize]" -); -#endif /* CONFIG_CMD_UNZIP */ diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c index 6d8512a..204a094 100644 --- a/common/cmd_nvedit.c +++ b/common/cmd_nvedit.c @@ -559,6 +559,7 @@ static int do_env_delete(cmd_tbl_t * cmdtp, int flag, int argc, char * const arg return 0; } +#ifdef CONFIG_CMD_EXPORTENV /* * env export [-t | -b | -c] addr [size] * -t: export as text format; if size is given, data will be @@ -695,7 +696,9 @@ sep_err: cmd); return 1; } +#endif +#ifdef CONFIG_CMD_IMPORTENV /* * env import [-d] [-t | -b | -c] addr [size] * -d: delete existing environment before importing; @@ -805,6 +808,7 @@ sep_err: cmd); return 1; } +#endif #if defined(CONFIG_CMD_RUN) extern int do_run (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); @@ -822,8 +826,12 @@ static cmd_tbl_t cmd_env_sub[] = { #if defined(CONFIG_CMD_EDITENV) U_BOOT_CMD_MKENT(edit, 2, 0, do_env_edit, "", ""), #endif +#if defined(CONFIG_CMD_EXPORTENV) U_BOOT_CMD_MKENT(export, 4, 0, do_env_export, "", ""), +#endif +#if defined(CONFIG_CMD_IMPORTENV) U_BOOT_CMD_MKENT(import, 5, 0, do_env_import, "", ""), +#endif U_BOOT_CMD_MKENT(print, CONFIG_SYS_MAXARGS, 1, do_env_print, "", ""), #if defined(CONFIG_CMD_RUN) U_BOOT_CMD_MKENT(run, CONFIG_SYS_MAXARGS, 1, do_run, "", ""), diff --git a/common/cmd_sha1sum.c b/common/cmd_sha1sum.c new file mode 100644 index 0000000..bb3cff0 --- /dev/null +++ b/common/cmd_sha1sum.c @@ -0,0 +1,53 @@ +/* + * (C) Copyright 2000 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * 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 + */ + +#include <common.h> +#include <command.h> +#include <sha1.h> + +static int do_sha1sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + unsigned long addr, len; + unsigned int i; + u8 output[20]; + + if (argc < 3) + return cmd_usage(cmdtp); + + addr = simple_strtoul(argv[1], NULL, 16); + len = simple_strtoul(argv[2], NULL, 16); + + sha1_csum((unsigned char *) addr, len, output); + printf("SHA1 for %08lx ... %08lx ==> ", addr, addr + len - 1); + for (i = 0; i < 20; i++) + printf("%02x", output[i]); + printf("\n"); + + return 0; +} + +U_BOOT_CMD( + sha1sum, 3, 1, do_sha1sum, + "compute SHA1 message digest", + "address count" +); diff --git a/common/cmd_unzip.c b/common/cmd_unzip.c new file mode 100644 index 0000000..6483b92 --- /dev/null +++ b/common/cmd_unzip.c @@ -0,0 +1,59 @@ +/* + * (C) Copyright 2000 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * 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 + */ + +#include <common.h> +#include <command.h> + +static int do_unzip(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + unsigned long src, dst; + unsigned long src_len = ~0UL, dst_len = ~0UL; + char buf[32]; + + switch (argc) { + case 4: + dst_len = simple_strtoul(argv[3], NULL, 16); + /* fall through */ + case 3: + src = simple_strtoul(argv[1], NULL, 16); + dst = simple_strtoul(argv[2], NULL, 16); + break; + default: + return cmd_usage(cmdtp); + } + + if (gunzip((void *) dst, dst_len, (void *) src, &src_len) != 0) + return 1; + + printf("Uncompressed size: %ld = 0x%lX\n", src_len, src_len); + sprintf(buf, "%lX", src_len); + setenv("filesize", buf); + + return 0; +} + +U_BOOT_CMD( + unzip, 4, 1, do_unzip, + "unzip a memory region", + "srcaddr dstaddr [dstsize]" +); diff --git a/include/config_cmd_defaults.h b/include/config_cmd_defaults.h index 9283daa..a55b268 100644 --- a/include/config_cmd_defaults.h +++ b/include/config_cmd_defaults.h @@ -1,7 +1,7 @@ /* * config_cmd_defaults.h - sane defaults for everyone * - * Copyright (c) 2010 Analog Devices Inc. + * Copyright (c) 2010-2011 Analog Devices Inc. * * Licensed under the GPL-2 or later. */ @@ -10,5 +10,9 @@ #define _CONFIG_CMD_DEFAULTS_H_ #define CONFIG_CMD_BOOTM 1 +#define CONFIG_CMD_CRC32 1 +#define CONFIG_CMD_EXPORTENV 1 +#define CONFIG_CMD_GO 1 +#define CONFIG_CMD_IMPORTENV 1 #endif diff --git a/include/config_defaults.h b/include/config_defaults.h index abdf3be..0337163 100644 --- a/include/config_defaults.h +++ b/include/config_defaults.h @@ -12,7 +12,6 @@ /* Support bootm-ing different OSes */ #define CONFIG_BOOTM_LINUX 1 #define CONFIG_BOOTM_NETBSD 1 -#define CONFIG_BOOTM_OSE 1 #define CONFIG_BOOTM_RTEMS 1 #define CONFIG_GZIP 1 |