#include <common.h>
#include <command.h>
-#if (CONFIG_COMMANDS & CFG_CMD_VFD)
-#ifdef VFD_TEST_LOGO
+#if defined(CONFIG_CMD_VFD)
+
#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);
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(3, (uchar *)bitmap, VFD_LOGO_HEIGHT, VFD_LOGO_WIDTH);
+ return 0;
}
-#endif /* CFG_CMD_VFD */
+
+U_BOOT_CMD(
+ vfd, 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"
+ "vfd ADDR\n"
+ " - load bitmap at address ADDR\n"
+);
+#endif
#ifdef CONFIG_VFD
int trab_vfd (ulong bitmap)
{
+ uchar *addr;
+ char *s;
+
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_TEST_LOGO_HEIGHT, VFD_TEST_LOGO_WIDTH);
- return 0;
-#endif
- default:
- printf("Unknown bitmap %ld\n", bitmap);
- return 1;
+ case VFD_TEST_LOGO_BMPNR:
+ 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:
+ 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 */