* Add support for arbitrary bitmaps for TRAB's  VFD command
* Patch by Christian Geißinger, 19 May 2002:
  On TRAB: wait until the dummy byte has been completely sent
diff --git a/CHANGELOG b/CHANGELOG
index 2a1ce93..6341f28 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,11 @@
 Changes since U-Boot 0.3.1:
 ======================================================================
 
+* Add support for arbitrary bitmaps for TRAB's  VFD command
+
+* Patch by Christian Geißinger, 19 May 2002:
+  On TRAB: wait until the dummy byte has been completely sent
+
 * Patch by David Updegraff, 22 Apr 2003:
   update for CrayL1 board
 
diff --git a/board/trab/trab.c b/board/trab/trab.c
index e3e8553..6c9971f 100644
--- a/board/trab/trab.c
+++ b/board/trab/trab.c
@@ -33,7 +33,7 @@
 #ifdef CFG_BRIGHTNESS
 static void spi_init(void);
 static void wait_transmit_done(void);
-static void tsc2000_write(unsigned int page, unsigned int reg, 
+static void tsc2000_write(unsigned int page, unsigned int reg,
 						  unsigned int data);
 static void tsc2000_set_brightness(void);
 #endif
@@ -328,6 +328,7 @@
 	for (i = 0; i < 10; i++) {
 		rSPTDAT = 0xFF;
 	}
+	wait_transmit_done();
 }
 
 static void wait_transmit_done(void)
@@ -335,7 +336,7 @@
 	while (!(rSPSTA & 0x01)); /* wait until transfer is done */
 }
 
-static void tsc2000_write(unsigned int page, unsigned int reg, 
+static void tsc2000_write(unsigned int page, unsigned int reg,
 						  unsigned int data)
 {
 	unsigned int command;
diff --git a/common/cmd_vfd.c b/common/cmd_vfd.c
index 49df56c..ac0224c 100644
--- a/common/cmd_vfd.c
+++ b/common/cmd_vfd.c
@@ -36,11 +36,10 @@
 #include <command.h>
 
 #if (CONFIG_COMMANDS & CFG_CMD_VFD)
-#ifdef VFD_TEST_LOGO
+
 #include <vfd_logo.h>
 #define VFD_TEST_LOGO_BMPNR 0
 #define VFD_REMOTE_LOGO_BMPNR 1
-#endif
 
 extern int transfer_pic(unsigned char, unsigned char *, int, int);
 
@@ -55,9 +54,15 @@
 		return 1;
 	}
 
-	bitmap = simple_strtoul(argv[1], NULL, 10);
+	if (argv[1][0] == '#') {	/* select bitmap by number */
+		bitmap = simple_strtoul(argv[1]+1, NULL, 10);
+		return (trab_vfd(bitmap));
+	}
 
-	return (trab_vfd(bitmap));
+	/* display bitmap at given address */
+	bitmap = simple_strtoul(argv[1], NULL, 16);
+	transfer_pic(1, (uchar *)bitmap, VFD_LOGO_HEIGHT, VFD_LOGO_WIDTH);
+	return 0;
 }
 #endif	/* CFG_CMD_VFD */
 
@@ -65,19 +70,17 @@
 int trab_vfd (ulong bitmap)
 {
 	switch (bitmap) {
-#ifdef VFD_TEST_LOGO
-		case VFD_TEST_LOGO_BMPNR:
-			transfer_pic(1, &vfd_test_logo_bitmap[0],
-				VFD_TEST_LOGO_HEIGHT, VFD_TEST_LOGO_WIDTH);
-			return 0;
-		case VFD_REMOTE_LOGO_BMPNR:
-			transfer_pic(1, &vfd_remote_logo_bitmap[0],
-				VFD_REMOTE_LOGO_HEIGHT, VFD_REMOTE_LOGO_WIDTH);
-			return 0;
-#endif
-		default:
-			printf("Unknown bitmap %ld\n", bitmap);
-			return 1;
+	case VFD_TEST_LOGO_BMPNR:
+		transfer_pic(1, &vfd_test_logo_bitmap[0],
+			VFD_LOGO_HEIGHT, VFD_LOGO_WIDTH);
+		return 0;
+	case VFD_REMOTE_LOGO_BMPNR:
+		transfer_pic(1, &vfd_remote_logo_bitmap[0],
+			VFD_LOGO_HEIGHT, VFD_LOGO_WIDTH);
+		return 0;
+	default:
+		printf("Unknown bitmap %ld\n", bitmap);
+		return 1;
 	}
 	/* NOTREACHED */
 }
diff --git a/include/cmd_vfd.h b/include/cmd_vfd.h
index 40a9b34..ad6f21a 100644
--- a/include/cmd_vfd.h
+++ b/include/cmd_vfd.h
@@ -29,10 +29,12 @@
 
 #if (CONFIG_COMMANDS & CFG_CMD_VFD)
 #define	CMD_TBL_VFD	MK_CMD_TBL_ENTRY(					\
-	"vfd",	3,	2,	0,	do_vfd,			\
+	"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"\
+	"#N\n"								\
+	"    - load bitmap no. N to the VFDs (N is _decimal_ !!!)\n"	\
+	"vfd addr\n"							\
+	"    - load bitmap at address _addr_ to the VFDs\n"		\
 ),
 
 /* Implemented in common/cmd_misc.c */
diff --git a/include/vfd_logo.h b/include/vfd_logo.h
index bda20cd..c41867a 100644
--- a/include/vfd_logo.h
+++ b/include/vfd_logo.h
@@ -6,13 +6,13 @@
  */
 
 
-#ifndef __VFD_TEST_LOGO_H__
-#define __VFD_TEST_LOGO_H__
+#ifndef __VFD_LOGO_H__
+#define __VFD_LOGO_H__
 
-#define VFD_TEST_LOGO_WIDTH		112
-#define VFD_TEST_LOGO_HEIGHT		72
-#define VFD_TEST_LOGO_COLORS		0
-#define VFD_TEST_LOGO_OFFSET		0
+#define VFD_LOGO_WIDTH		112
+#define VFD_LOGO_HEIGHT		72
+#define VFD_LOGO_COLORS		0
+#define VFD_LOGO_OFFSET		0
 
 
 unsigned char vfd_test_logo_bitmap[] = {
@@ -522,12 +522,6 @@
 	0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xDD, 0xDD, 0xDD,
 };
 
-#define VFD_REMOTE_LOGO_WIDTH		112
-#define VFD_REMOTE_LOGO_HEIGHT		72
-#define VFD_REMOTE_LOGO_COLORS		0
-#define VFD_REMOTE_LOGO_OFFSET		0
-
-
 unsigned char vfd_remote_logo_bitmap[] = {
 	0x99, 0x99, 0x99, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF,
 	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -1035,4 +1029,4 @@
 	0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x99, 0x99, 0x99,
 };
 
-#endif /* __VFD_TEST_LOGO_H__ */
+#endif /* __VFD_LOGO_H__ */