x86: Add CBMEM console driver for coreboot
[karo-tx-uboot.git] / include / stdio_dev.h
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 #ifdef CONFIG_CBMEM_CONSOLE
124 int cbmemc_init(void);
125 #endif
126
127 #endif