X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=common%2Fcmd_vfd.c;h=18c14d1f3bc9456eac24618b5492ef910310e022;hb=d13ffa66aff1d9aed9081986492fb74c1a61a4a9;hp=49df56c9f04875befbfc88c7d415a0ff4f78a9cd;hpb=e95b61cfb0c7203964c1a3f163e16a65f04d87ec;p=karo-tx-uboot.git diff --git a/common/cmd_vfd.c b/common/cmd_vfd.c index 49df56c9f0..18c14d1f3b 100644 --- a/common/cmd_vfd.c +++ b/common/cmd_vfd.c @@ -35,50 +35,68 @@ #include #include -#if (CONFIG_COMMANDS & CFG_CMD_VFD) -#ifdef VFD_TEST_LOGO +#if defined(CONFIG_CMD_VFD) + #include #define VFD_TEST_LOGO_BMPNR 0 #define VFD_REMOTE_LOGO_BMPNR 1 -#endif extern int transfer_pic(unsigned char, unsigned char *, int, int); int trab_vfd (ulong bitmap); -int do_vfd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +int do_vfd (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { ulong bitmap; - if (argc != 2) { - printf ("Usage:\n%s\n", cmdtp->usage); - return 1; - } + if (argc != 2) + return cmd_usage(cmdtp); - 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 */ -#ifdef CONFIG_VFD +U_BOOT_CMD( + vfd, 2, 0, do_vfd, + "load a bitmap to the VFDs on TRAB", + "/N\n" + " - load bitmap N to the VFDs (N is _decimal_ !!!)\n" + "vfd ADDR\n" + " - load bitmap at address ADDR" +); +#endif + 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_REMOTE_LOGO_HEIGHT, VFD_REMOTE_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 */