summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorwdenk <wdenk>2003-04-20 14:04:18 +0000
committerwdenk <wdenk>2003-04-20 14:04:18 +0000
commitd791b1dc3e64a6a6317293245d884589bc5c6277 (patch)
tree32f7bfaa5f3112cae01cf78252b1f3c66fcc4354 /common
parent4a6fd34b267dbf4a72080ab9a085bb45c63660fb (diff)
downloadu-boot-imx-d791b1dc3e64a6a6317293245d884589bc5c6277.zip
u-boot-imx-d791b1dc3e64a6a6317293245d884589bc5c6277.tar.gz
u-boot-imx-d791b1dc3e64a6a6317293245d884589bc5c6277.tar.bz2
* Make sure Block Lock Bits get cleared in R360MPI flash driver
* MPC823 LCD driver: Fill color map backwards, to allow for steady display when Linux takes over * Patch by Erwin Rol, 27 Feb 2003: Add support for RTEMS (this time for real). * Add support for "bmp info" and "bmp display" commands to load bitmap images; this can be used (for example in a "preboot" command) to display a splash screen very quickly after poweron. * Add support for 133 MHz clock on INCA-IP board
Diffstat (limited to 'common')
-rw-r--r--common/Makefile2
-rw-r--r--common/cmd_bootm.c31
-rw-r--r--common/command.c2
-rw-r--r--common/console.c9
-rw-r--r--common/devices.c5
5 files changed, 46 insertions, 3 deletions
diff --git a/common/Makefile b/common/Makefile
index 123871c..6f95d4f 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -28,7 +28,7 @@ LIB = libcommon.a
AOBJS =
COBJS = main.o altera.o bedbug.o \
- cmd_autoscript.o cmd_bedbug.o cmd_boot.o \
+ cmd_autoscript.o cmd_bedbug.o cmd_bmp.o cmd_boot.o \
cmd_bootm.o cmd_cache.o cmd_console.o cmd_date.o \
cmd_dcr.o cmd_diag.o cmd_doc.o cmd_nand.o cmd_dtt.o \
cmd_eeprom.o cmd_elf.o cmd_fdc.o cmd_fdos.o cmd_flash.o \
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 8b32f1c..c3d62cb 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -98,6 +98,7 @@ static boot_os_Fcn do_bootm_linux;
extern boot_os_Fcn do_bootm_linux;
#endif
static boot_os_Fcn do_bootm_netbsd;
+static boot_os_Fcn do_bootm_rtems;
#if (CONFIG_COMMANDS & CFG_CMD_ELF)
static boot_os_Fcn do_bootm_vxworks;
static boot_os_Fcn do_bootm_qnxelf;
@@ -321,6 +322,12 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
do_bootm_netbsd (cmdtp, flag, argc, argv,
addr, len_ptr, verify);
break;
+
+ case IH_OS_RTEMS:
+ do_bootm_rtems (cmdtp, flag, argc, argv,
+ addr, len_ptr, verify);
+ break;
+
#if (CONFIG_COMMANDS & CFG_CMD_ELF)
case IH_OS_VXWORKS:
do_bootm_vxworks (cmdtp, flag, argc, argv,
@@ -831,6 +838,7 @@ print_type (image_header_t *hdr)
case IH_OS_VXWORKS: os = "VxWorks"; break;
case IH_OS_QNX: os = "QNX"; break;
case IH_OS_U_BOOT: os = "U-Boot"; break;
+ case IH_OS_RTEMS: os = "RTEMS"; break;
default: os = "Unknown OS"; break;
}
@@ -953,6 +961,29 @@ int gunzip(void *dst, int dstlen, unsigned char *src, int *lenp)
return (0);
}
+static void
+do_bootm_rtems (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
+ ulong addr, ulong *len_ptr, int verify)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+ image_header_t *hdr = &header;
+ void (*entry_point)(bd_t *);
+
+ entry_point = (void (*)(bd_t *)) hdr->ih_ep;
+
+ printf ("## Transferring control to RTEMS (at address %08lx) ...\n",
+ (ulong)entry_point);
+
+ SHOW_BOOT_PROGRESS (15);
+
+ /*
+ * RTEMS Parameters:
+ * r3: ptr to board info data
+ */
+
+ (*entry_point ) ( gd->bd );
+}
+
#if (CONFIG_COMMANDS & CFG_CMD_ELF)
static void
do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
diff --git a/common/command.c b/common/command.c
index 1008925..dc2fcb1 100644
--- a/common/command.c
+++ b/common/command.c
@@ -72,6 +72,7 @@
#include <cmd_vfd.h> /* load a bitmap to the VFDs on TRAB */
#include <cmd_log.h>
#include <cmd_fdos.h>
+#include <cmd_bmp.h>
#ifdef CONFIG_AMIGAONEG3SE
#include <cmd_menu.h>
@@ -231,6 +232,7 @@ cmd_tbl_t cmd_tbl[] = {
CMD_TBL_AUTOSCRIPT
CMD_TBL_BASE
CMD_TBL_BDINFO
+ CMD_TBL_BMP
#ifdef CONFIG_AMIGAONEG3SE
CMD_TBL_BOOTA
#endif
diff --git a/common/console.c b/common/console.c
index 13ba63b..86ed584 100644
--- a/common/console.c
+++ b/common/console.c
@@ -355,7 +355,7 @@ int console_init_f (void)
return (0);
}
-#ifdef CFG_CONSOLE_IS_IN_ENV
+#if defined(CFG_CONSOLE_IS_IN_ENV) || defined(CONFIG_SPLASH_SCREEN)
/* search a device */
device_t *search_device (int flags, char *name)
{
@@ -374,7 +374,7 @@ device_t *search_device (int flags, char *name)
}
return dev;
}
-#endif /* CFG_CONSOLE_IS_IN_ENV */
+#endif /* CFG_CONSOLE_IS_IN_ENV || CONFIG_SPLASH_SCREEN */
#ifdef CFG_CONSOLE_IS_IN_ENV
/* Called after the relocation - use desired console functions */
@@ -469,6 +469,11 @@ int console_init_r (void)
device_t *inputdev = NULL, *outputdev = NULL;
int i, items = ListNumItems (devlist);
+#ifdef CONFIG_SPLASH_SCREEN
+ /* suppress all output if splash screen is enabled */
+ outputdev = search_device (DEV_FLAGS_OUTPUT, "nulldev");
+#endif
+
/* Scan devices looking for input and output devices */
for (i = 1;
(i <= items) && ((inputdev == NULL) || (outputdev == NULL));
diff --git a/common/devices.c b/common/devices.c
index 8bd0e64..615b217 100644
--- a/common/devices.c
+++ b/common/devices.c
@@ -37,6 +37,11 @@ list_t devlist = 0;
device_t *stdio_devices[] = { NULL, NULL, NULL };
char *stdio_names[MAX_FILES] = { "stdin", "stdout", "stderr" };
+#if defined(CONFIG_SPLASH_SCREEN) && !defined(CFG_DEVICE_NULLDEV)
+#define CFG_DEVICE_NULLDEV 1
+#endif
+
+
#ifdef CFG_DEVICE_NULLDEV
void nulldev_putc(const char c)
{