Add support for arbitrary bitmaps for TRAB's  VFD command;
allow to pass boot bitmap addresses in environment variables;
allow for zero boot delay
diff --git a/CHANGELOG b/CHANGELOG
index 6341f28..fec7362 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,7 +2,9 @@
 Changes since U-Boot 0.3.1:
 ======================================================================
 
-* Add support for arbitrary bitmaps for TRAB's  VFD command
+* Add support for arbitrary bitmaps for TRAB's  VFD command;
+  allow to pass boot bitmap addresses in environment variables;
+  allow for zero boot delay
 
 * Patch by Christian Geißinger, 19 May 2002:
   On TRAB: wait until the dummy byte has been completely sent
diff --git a/board/trab/vfd.c b/board/trab/vfd.c
index d0dcedc..e00294f 100644
--- a/board/trab/vfd.c
+++ b/board/trab/vfd.c
@@ -346,9 +346,10 @@
 				}
 			}
 		}
-		display++;
-		if (display > 3)
-			display = 0;
+		if (display > 0)
+			display--;
+		else
+			display = 3;
 	}
 }
 
diff --git a/common/cmd_vfd.c b/common/cmd_vfd.c
index ac0224c..3ef1395 100644
--- a/common/cmd_vfd.c
+++ b/common/cmd_vfd.c
@@ -61,7 +61,7 @@
 
 	/* display bitmap at given address */
 	bitmap = simple_strtoul(argv[1], NULL, 16);
-	transfer_pic(1, (uchar *)bitmap, VFD_LOGO_HEIGHT, VFD_LOGO_WIDTH);
+	transfer_pic(3, (uchar *)bitmap, VFD_LOGO_HEIGHT, VFD_LOGO_WIDTH);
 	return 0;
 }
 #endif	/* CFG_CMD_VFD */
@@ -69,19 +69,31 @@
 #ifdef CONFIG_VFD
 int trab_vfd (ulong bitmap)
 {
+	uchar *addr;
+	char *s;
+
 	switch (bitmap) {
 	case VFD_TEST_LOGO_BMPNR:
-		transfer_pic(1, &vfd_test_logo_bitmap[0],
-			VFD_LOGO_HEIGHT, VFD_LOGO_WIDTH);
-		return 0;
+		if ((s = getenv ("bitmap0")) != NULL) {
+			addr = (uchar *)simple_strtoul (s, NULL, 16);
+		} else {
+			addr = &vfd_test_logo_bitmap[0];
+		}
+		break;
 	case VFD_REMOTE_LOGO_BMPNR:
-		transfer_pic(1, &vfd_remote_logo_bitmap[0],
+		transfer_pic(3, &vfd_remote_logo_bitmap[0],
 			VFD_LOGO_HEIGHT, VFD_LOGO_WIDTH);
-		return 0;
+		if ((s = getenv ("bitmap1")) != NULL) {
+			addr = (uchar *)simple_strtoul (s, NULL, 16);
+		} else {
+			addr = &vfd_remote_logo_bitmap[0];
+		}
+		break;
 	default:
 		printf("Unknown bitmap %ld\n", bitmap);
 		return 1;
 	}
-	/* NOTREACHED */
+	transfer_pic(3, addr, VFD_LOGO_HEIGHT, VFD_LOGO_WIDTH);
+	return 0;
 }
 #endif	/* CONFIG_VFD */
diff --git a/include/configs/trab.h b/include/configs/trab.h
index 4ac9cc4..2466189 100644
--- a/include/configs/trab.h
+++ b/include/configs/trab.h
@@ -118,6 +118,7 @@
 #include <cmd_confdefs.h>
 
 #define CONFIG_BOOTDELAY	5
+#define CONFIG_ZERO_BOOTDELAY_CHECK	/* allow to break in always */
 #define CONFIG_PREBOOT		"echo;echo *** booting ***;echo"
 #define CONFIG_BOOTARGS    	"console=ttyS0"
 #define CONFIG_NETMASK          255.255.0.0