]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/cmd_vfd.c
* Patch by Martin Krause, 11 Sep 2003:
[karo-tx-uboot.git] / common / cmd_vfd.c
index ac0224c087e2fae0dc4e34558013e3e9bf20b19e..118c50dcbc0591e48d45967bdb468db7781b836e 100644 (file)
@@ -54,34 +54,55 @@ int do_vfd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                return 1;
        }
 
-       if (argv[1][0] == '#') {        /* select bitmap by number */
+       if (argv[1][0] == '/') {        /* select bitmap by number */
                bitmap = simple_strtoul(argv[1]+1, NULL, 10);
                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);
+       transfer_pic(3, (uchar *)bitmap, VFD_LOGO_HEIGHT, VFD_LOGO_WIDTH);
        return 0;
 }
+
+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 /* CFG_CMD_VFD */
 
 #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 */