Das U-Boot: Universal Boot Loader
authorwdenk <wdenk>
Sat, 19 Oct 2002 19:42:10 +0000 (19:42 +0000)
committerwdenk <wdenk>
Sat, 19 Oct 2002 19:42:10 +0000 (19:42 +0000)
common/command.c [new file with mode: 0644]
include/cmd_vfd.h [new file with mode: 0644]

diff --git a/common/command.c b/common/command.c
new file mode 100644 (file)
index 0000000..2f50e6d
--- /dev/null
@@ -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 (file)
index 0000000..40a9b34
--- /dev/null
@@ -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 */