xref: /openbmc/u-boot/include/stdio_dev.h (revision 5187d8dd)
1 /*
2  * (C) Copyright 2000
3  * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
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 #ifndef _STDIO_DEV_H_
25 #define _STDIO_DEV_H_
26 
27 #include <linux/list.h>
28 
29 /*
30  * STDIO DEVICES
31  */
32 
33 #define DEV_FLAGS_INPUT	 0x00000001	/* Device can be used as input	console */
34 #define DEV_FLAGS_OUTPUT 0x00000002	/* Device can be used as output console */
35 #define DEV_FLAGS_SYSTEM 0x80000000	/* Device is a system device		*/
36 #define DEV_EXT_VIDEO	 0x00000001	/* Video extensions supported		*/
37 
38 /* Device information */
39 struct stdio_dev {
40 	int	flags;			/* Device flags: input/output/system	*/
41 	int	ext;			/* Supported extensions			*/
42 	char	name[16];		/* Device name				*/
43 
44 /* GENERAL functions */
45 
46 	int (*start) (void);		/* To start the device			*/
47 	int (*stop) (void);		/* To stop the device			*/
48 
49 /* OUTPUT functions */
50 
51 	void (*putc) (const char c);	/* To put a char			*/
52 	void (*puts) (const char *s);	/* To put a string (accelerator)	*/
53 
54 /* INPUT functions */
55 
56 	int (*tstc) (void);		/* To test if a char is ready...	*/
57 	int (*getc) (void);		/* To get that char			*/
58 
59 /* Other functions */
60 
61 	void *priv;			/* Private extensions			*/
62 	struct list_head list;
63 };
64 
65 /*
66  * VIDEO EXTENSIONS
67  */
68 #define VIDEO_FORMAT_RGB_INDEXED	0x0000
69 #define VIDEO_FORMAT_RGB_DIRECTCOLOR	0x0001
70 #define VIDEO_FORMAT_YUYV_4_4_4		0x0010
71 #define VIDEO_FORMAT_YUYV_4_2_2		0x0011
72 
73 typedef struct {
74 	void *address;			/* Address of framebuffer		*/
75 	ushort	width;			/* Horizontal resolution		*/
76 	ushort	height;			/* Vertical resolution			*/
77 	uchar	format;			/* Format				*/
78 	uchar	colors;			/* Colors number or color depth		*/
79 	void (*setcolreg) (int, int, int, int);
80 	void (*getcolreg) (int, void *);
81 } video_ext_t;
82 
83 /*
84  * VARIABLES
85  */
86 extern struct stdio_dev *stdio_devices[];
87 extern char *stdio_names[MAX_FILES];
88 
89 /*
90  * PROTOTYPES
91  */
92 int	stdio_register (struct stdio_dev * dev);
93 int	stdio_init (void);
94 void	stdio_print_current_devices(void);
95 #ifdef CONFIG_SYS_STDIO_DEREGISTER
96 int	stdio_deregister(const char *devname);
97 #endif
98 struct list_head* stdio_get_list(void);
99 struct stdio_dev* stdio_get_by_name(const char* name);
100 struct stdio_dev* stdio_clone(struct stdio_dev *dev);
101 
102 #ifdef CONFIG_ARM_DCC_MULTI
103 int drv_arm_dcc_init(void);
104 #endif
105 #ifdef CONFIG_LCD
106 int	drv_lcd_init (void);
107 #endif
108 #if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
109 int	drv_video_init (void);
110 #endif
111 #ifdef CONFIG_KEYBOARD
112 int	drv_keyboard_init (void);
113 #endif
114 #ifdef CONFIG_USB_TTY
115 int	drv_usbtty_init (void);
116 #endif
117 #ifdef CONFIG_NETCONSOLE
118 int	drv_nc_init (void);
119 #endif
120 #ifdef CONFIG_JTAG_CONSOLE
121 int drv_jtag_console_init (void);
122 #endif
123 
124 #endif
125