blob: f2e7e880628cf450e4d582994717a52e71af3656 [file] [log] [blame]
Wolfgang Denk9f96ae42005-08-30 13:04:12 +02001/*
2 * (C) Copyright 2005
3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4 *
5 * See file CREDITS for list of people who contributed to this
6 * project.
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as
10 * published by the Free Software Foundation; either version 2 of
11 * the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21 * MA 02111-1307 USA
22 */
23
24#include <common.h>
25#include <command.h>
26
Jon Loeligera76adc82007-06-11 19:01:43 -050027#if (CONFIG_COMMANDS & CFG_CMD_DISPLAY) || defined(CONFIG_CMD_DISPLAY)
Wolfgang Denk9f96ae42005-08-30 13:04:12 +020028
29#undef DEBUG_DISP
30
31#define DISP_SIZE 8
32#define CWORD_CLEAR 0x80
33#define CLEAR_DELAY (110 * 2)
34
35int do_display (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
36{
37 int i;
38 int pos;
39
40 /* Clear display */
41 *((volatile char*)(CFG_DISP_CWORD)) = CWORD_CLEAR;
42 udelay(1000 * CLEAR_DELAY);
43
44 if (argc < 2)
45 return (0);
46
47 for (pos = 0, i = 1; i < argc && pos < DISP_SIZE; i++) {
48 char *p = argv[i], c;
49
50 if (i > 1) {
51 *((volatile uchar *) (CFG_DISP_CHR_RAM + pos++)) = ' ';
52#ifdef DEBUG_DISP
53 putc(' ');
54#endif
55 }
56
57 while ((c = *p++) != '\0' && pos < DISP_SIZE) {
58 *((volatile uchar *) (CFG_DISP_CHR_RAM + pos++)) = c;
59#ifdef DEBUG_DISP
60 putc(c);
61#endif
62 }
63 }
64
65#ifdef DEBUG_DISP
66 putc('\n');
67#endif
68
69 return (0);
70}
71
72/***************************************************/
73
74U_BOOT_CMD(
75 display, CFG_MAXARGS, 1, do_display,
76 "display- display string on dot matrix display\n",
77 "[<string>]\n"
78 " - with <string> argument: display <string> on dot matrix display\n"
79 " - without arguments: clear dot matrix display\n"
80);
81
82#endif /* CFG_CMD_DISPLAY */