Merge branch 'master' of git://www.denx.de/git/u-boot-sh
[platform/kernel/u-boot.git] / include / devices.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 #include <lists.h>
25
26 #ifndef _DEVICES_H_
27 #define _DEVICES_H_
28
29 /*
30  * CONSOLE 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 typedef struct {
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 } device_t;
63
64 /*
65  * VIDEO EXTENSIONS
66  */
67 #define VIDEO_FORMAT_RGB_INDEXED        0x0000
68 #define VIDEO_FORMAT_RGB_DIRECTCOLOR    0x0001
69 #define VIDEO_FORMAT_YUYV_4_4_4         0x0010
70 #define VIDEO_FORMAT_YUYV_4_2_2         0x0011
71
72 typedef struct {
73         void *address;                  /* Address of framebuffer               */
74         ushort  width;                  /* Horizontal resolution                */
75         ushort  height;                 /* Vertical resolution                  */
76         uchar   format;                 /* Format                               */
77         uchar   colors;                 /* Colors number or color depth         */
78         void (*setcolreg) (int, int, int, int);
79         void (*getcolreg) (int, void *);
80 } video_ext_t;
81
82 /*
83  * VARIABLES
84  */
85 extern list_t devlist;
86 extern device_t *stdio_devices[];
87 extern char *stdio_names[MAX_FILES];
88
89 /*
90  * PROTOTYPES
91  */
92 int     device_register (device_t * dev);
93 int     devices_init (void);
94 int     devices_done (void);
95 int     device_deregister(char *devname);
96 #ifdef CONFIG_LCD
97 int     drv_lcd_init (void);
98 #endif
99 #ifdef CONFIG_VFD
100 int     drv_vfd_init (void);
101 #endif
102 #if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
103 int     drv_video_init (void);
104 #endif
105 #ifdef CONFIG_KEYBOARD
106 int     drv_keyboard_init (void);
107 #endif
108 #ifdef CONFIG_USB_TTY
109 int     drv_usbtty_init (void);
110 #endif
111 #ifdef CONFIG_NETCONSOLE
112 int     drv_nc_init (void);
113 #endif
114
115 #endif  /* _DEVICES_H_ */