diff options
| author | wdenk <wdenk> | 2002-10-19 19:42:10 +0000 | 
|---|---|---|
| committer | wdenk <wdenk> | 2002-10-19 19:42:10 +0000 | 
| commit | 5dfa25f25b0b791150485502e611a86d06a89e37 (patch) | |
| tree | 5546db3e81e332a638adb2fcaad8e248420f26f8 | |
| parent | e831ad54aa7524d977f89fbd1056f902ff8a9b05 (diff) | |
| download | olio-uboot-2014.01-5dfa25f25b0b791150485502e611a86d06a89e37.tar.xz olio-uboot-2014.01-5dfa25f25b0b791150485502e611a86d06a89e37.zip | |
Initial revision
| -rw-r--r-- | common/command.c | 328 | ||||
| -rw-r--r-- | include/cmd_vfd.h | 44 | 
2 files changed, 372 insertions, 0 deletions
| diff --git a/common/command.c b/common/command.c new file mode 100644 index 000000000..2f50e6d1f --- /dev/null +++ b/common/command.c @@ -0,0 +1,328 @@ +/* + * (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 + */ + +/* + *  Command Processor Table + */ + +#include <common.h> +#include <command.h> +#include <cmd_cache.h> +#include <cmd_mem.h> +#include <cmd_boot.h> +#include <cmd_flash.h> +#include <cmd_bootm.h> +#include <cmd_net.h> +#include <cmd_nvedit.h> +#include <cmd_misc.h> +#include <cmd_kgdb.h> +#include <cmd_ide.h> +#include <cmd_disk.h> +#include <cmd_console.h> +#include <cmd_reginfo.h> +#include <cmd_pcmcia.h> +#include <cmd_autoscript.h> +#include <cmd_diag.h> + +#include <cmd_eeprom.h> +#include <cmd_i2c.h> +#include <cmd_immap.h> +#include <cmd_rtc.h> + +#include <cmd_elf.h> +#include <cmd_fdc.h>		/* Floppy support */ +#include <cmd_usb.h>		/* USB support */ +#include <cmd_scsi.h> +#include <cmd_pci.h> +#include <cmd_mii.h> +#include <cmd_dcr.h>		/* 4xx DCR register access */ +#include <cmd_doc.h> +#include <cmd_jffs2.h> +#include <cmd_fpga.h> + +#include <cmd_bsp.h>		/* board special functions */ + +#include <cmd_bedbug.h> +#include <cmd_elf.h> + +#include <cmd_dtt.h> + +#include <cmd_vfd.h>		/* load a bitmap to the VFDs on TRAB */ + +/* + * HELP command + */ +#define	CMD_TBL_HELP	MK_CMD_TBL_ENTRY(					\ +	"help",		1,	CFG_MAXARGS,	1,	do_help,		\ +	"help    - print online help\n",					\ +	"[command ...]\n"							\ +	"    - show help information (for 'command')\n"				\ +	"'help' prints online help for the monitor commands.\n\n"		\ +	"Without arguments, it prints a short usage message for all commands.\n\n" \ +	"To get detailed help information for specific commands you can type\n"	\ +	"'help' with one or more command names as arguments.\n"			\ +    ), + +#define	CMD_TBL_QUES	MK_CMD_TBL_ENTRY(					\ +	"?",		1,	CFG_MAXARGS,	1,	do_help,		\ +	"?       - alias for 'help'\n",						\ +	NULL									\ +    ), + +#define CMD_TBL_VERS	MK_CMD_TBL_ENTRY(					\ +	"version",	4,	1,		1,	do_version,		\ +	"version - print monitor version\n",					\ +	NULL									\ +    ), + +#define CMD_TBL_ECHO	MK_CMD_TBL_ENTRY(					\ +	"echo",		4,	CFG_MAXARGS,	1,	do_echo,		\ +	"echo    - echo args to console\n",					\ +	"[args..]\n"								\ +	"    - echo args to console; \\c suppresses newline\n"			\ +    ), + +int +do_version (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ +	extern char version_string[]; +	printf ("\n%s\n", version_string); +	return 0; +} + +int +do_echo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ +	int i, putnl = 1; + +	for (i = 1; i < argc; i++) { +		char *p = argv[i], c; + +		if (i > 1) +			putc(' '); +		while ((c = *p++) != '\0') +			if (c == '\\' && *p == 'c') { +				putnl = 0; +				p++; +			} +			else +				putc(c); +	} + +	if (putnl) +		putc('\n'); +	return 0; +} + +/* + * Use puts() instead of printf() to avoid printf buffer overflow + * for long help messages + */ +int +do_help (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ +	int i; +	int rcode = 0; + +	if (argc == 1) {	/* print short help (usage) */ + +		for (cmdtp=&cmd_tbl[0]; cmdtp->name; cmdtp++) { +			/* allow user abort */ +			if (ctrlc()) +				return 1; + +			if (cmdtp->usage == NULL) +				continue; +			puts (cmdtp->usage); +		} + +		return 0; +	} + +	/* +	 * command help (long version) +	 */ +	for (i=1; i<argc; ++i) { +		if ((cmdtp = find_cmd(argv[i])) != NULL) { +#ifdef	CFG_LONGHELP +			/* found - print (long) help info */ +			puts (cmdtp->name); +			putc (' '); +			if (cmdtp->help) { +				puts (cmdtp->help); +			} else { +				puts ("- No help available.\n"); +				rcode = 1; +			} +			putc ('\n'); +#else	/* no long help available */ +			if (cmdtp->usage) +				puts (cmdtp->usage); +#endif	/* CFG_LONGHELP */ +		} +		else { +			printf ("Unknown command '%s' - try 'help'" +				" without arguments for list of all" +				" known commands\n\n", +				argv[i] +			); +			rcode = 1; +		} +	} +	return rcode; +} + +/*************************************************************************** + * find command table entry for a command + */ +cmd_tbl_t *find_cmd(const char *cmd) +{ +	cmd_tbl_t *cmdtp; + +	/* Search command table - Use linear search - it's a small table */ +	for (cmdtp = &cmd_tbl[0]; cmdtp->name; cmdtp++) { +		if (strncmp (cmd, cmdtp->name, cmdtp->lmin) == 0) +			return cmdtp; +	} +	return NULL;	/* not found */ +} + +/* + * The commands in this table are sorted alphabetically by the + * command name and in descending order by the command name string + * length. This is to prevent conflicts in command name parsing. + * Please ensure that new commands are added according to that rule. + * Please use $(TOPDIR)/doc/README.commands as a reference AND make + * sure it gets updated. + */ + +cmd_tbl_t cmd_tbl[] = { +	CMD_TBL_ASKENV +	CMD_TBL_ASM +	CMD_TBL_AUTOSCRIPT +	CMD_TBL_BASE +	CMD_TBL_BDINFO +	CMD_TBL_BOOTELF +	CMD_TBL_BOOTM +	CMD_TBL_BOOTP +	CMD_TBL_BOOTVX +	CMD_TBL_BOOTD +	CMD_TBL_BREAK +	CMD_TBL_BRGINFO +	CMD_TBL_CARINFO +	CMD_TBL_JFFS2_CHPART +	CMD_TBL_CMP +	CMD_TBL_CONINFO +	CMD_TBL_CONTINUE +	CMD_TBL_CP +	CMD_TBL_CRC +	CMD_TBL_DATE +	CMD_TBL_DCACHE +	CMD_TBL_DHCP +	CMD_TBL_DIAG +	CMD_TBL_DISK +	CMD_TBL_DMAINFO +	CMD_TBL_DIS +	CMD_TBL_DOCBOOT +	CMD_TBL_DOC +	CMD_TBL_DTT +	CMD_TBL_ECHO +	CMD_TBL_EEPROM +	CMD_TBL_FCCINFO +	CMD_TBL_FLERASE +	CMD_TBL_FDC +	CMD_TBL_FLINFO +	CMD_TBL_FPGA +	CMD_TBL_JFFS2_FSINFO +	CMD_TBL_JFFS2_FSLOAD +	CMD_TBL_GETDCR +	CMD_TBL_GO +	CMD_TBL_HELP +	CMD_TBL_HWFLOW +	CMD_TBL_I2CINFO +	CMD_TBL_ICACHE +#ifdef CONFIG_8260 +	CMD_TBL_ICINFO +#endif +	CMD_TBL_IMD +	CMD_TBL_IMM +	CMD_TBL_INM +	CMD_TBL_IMW +	CMD_TBL_ICRC +	CMD_TBL_IPROBE +	CMD_TBL_ILOOP +	CMD_TBL_ISDRAM +	CMD_TBL_IDE +	CMD_TBL_IMINFO +	CMD_TBL_IOPINFO +	CMD_TBL_IOPSET +	CMD_TBL_IRQINFO +	CMD_TBL_KGDB +	CMD_TBL_LOADB +	CMD_TBL_LOADS +	CMD_TBL_LOOP +	CMD_TBL_JFFS2_LS +	CMD_TBL_MCCINFO +	CMD_TBL_MD +	CMD_TBL_MEMCINFO +	CMD_TBL_MII +	CMD_TBL_MM +	CMD_TBL_MTEST +	CMD_TBL_MUXINFO +	CMD_TBL_MW +	CMD_TBL_NEXT +	CMD_TBL_NM +	CMD_TBL_PCI +	CMD_TBL_PRINTENV +	CMD_TBL_PROTECT +	CMD_TBL_RARPB +	CMD_TBL_RDUMP +	CMD_TBL_PINIT +	CMD_TBL_REGINFO +	CMD_TBL_RESET +	CMD_TBL_RUN +	CMD_TBL_SAVEENV +	CMD_TBL_SAVES +	CMD_TBL_SCCINFO +	CMD_TBL_SCSIBOOT +	CMD_TBL_SCSI +	CMD_TBL_SETDCR +	CMD_TBL_SETENV +	CMD_TBL_SIINFO +	CMD_TBL_SITINFO +	CMD_TBL_SIUINFO +	CMD_TBL_MISC		/* sleep */ +	CMD_TBL_SMCINFO +	CMD_TBL_SPIINFO +	CMD_TBL_STACK +	CMD_TBL_STEP +	CMD_TBL_TFTPB +	CMD_TBL_USBBOOT +	CMD_TBL_USB +	CMD_TBL_VERS +	CMD_TBL_BSP +	CMD_TBL_VFD +	CMD_TBL_QUES		/* keep this ("help") the last entry */ +	/* the following entry terminates this table */ +	MK_CMD_TBL_ENTRY( NULL, 0, 0, 0, NULL, NULL, NULL ) +}; diff --git a/include/cmd_vfd.h b/include/cmd_vfd.h new file mode 100644 index 000000000..40a9b3432 --- /dev/null +++ b/include/cmd_vfd.h @@ -0,0 +1,44 @@ +/* + * (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 + */ + +/* + * Miscellanious commands + */ +#ifndef	_CMD_VFD_H +#define	_CMD_VFD_H + +#if (CONFIG_COMMANDS & CFG_CMD_VFD) +#define	CMD_TBL_VFD	MK_CMD_TBL_ENTRY(					\ +	"vfd",	3,	2,	0,	do_vfd,			\ +	"vfd     - load a bitmap to the VFDs on TRAB\n",		\ +	"N\n"							\ +	"    - load bitmap N to the VFDs (N is _decimal_ !!!)\n"\ +), + +/* Implemented in common/cmd_misc.c */ +int do_vfd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); +#else +#define CMD_TBL_VFD +#endif	/* CFG_CMD_VFD */ + +#endif	/* _CMD_VFD_H */ |