xref: /OK3568_Linux_fs/u-boot/include/stdio_dev.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * (C) Copyright 2000
3*4882a593Smuzhiyun  * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef _STDIO_DEV_H_
9*4882a593Smuzhiyun #define _STDIO_DEV_H_
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #include <linux/list.h>
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun /*
14*4882a593Smuzhiyun  * STDIO DEVICES
15*4882a593Smuzhiyun  */
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #define DEV_FLAGS_INPUT	 0x00000001	/* Device can be used as input	console */
18*4882a593Smuzhiyun #define DEV_FLAGS_OUTPUT 0x00000002	/* Device can be used as output console */
19*4882a593Smuzhiyun #define DEV_FLAGS_DM     0x00000004	/* Device priv is a struct udevice * */
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun /* Device information */
22*4882a593Smuzhiyun struct stdio_dev {
23*4882a593Smuzhiyun 	int	flags;			/* Device flags: input/output/system	*/
24*4882a593Smuzhiyun 	int	ext;			/* Supported extensions			*/
25*4882a593Smuzhiyun 	char	name[32];		/* Device name				*/
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun /* GENERAL functions */
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun 	int (*start)(struct stdio_dev *dev);	/* To start the device */
30*4882a593Smuzhiyun 	int (*stop)(struct stdio_dev *dev);	/* To stop the device */
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun /* OUTPUT functions */
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun 	/* To put a char */
35*4882a593Smuzhiyun 	void (*putc)(struct stdio_dev *dev, const char c);
36*4882a593Smuzhiyun 	/* To put a string (accelerator) */
37*4882a593Smuzhiyun 	void (*puts)(struct stdio_dev *dev, const char *s);
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun /* Clear functions */
40*4882a593Smuzhiyun 	void (*clear)(struct stdio_dev *dev);
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun /* INPUT functions */
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun 	/* To test if a char is ready... */
45*4882a593Smuzhiyun 	int (*tstc)(struct stdio_dev *dev);
46*4882a593Smuzhiyun 	int (*getc)(struct stdio_dev *dev);	/* To get that char */
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun /* Other functions */
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun 	void *priv;			/* Private extensions			*/
51*4882a593Smuzhiyun 	struct list_head list;
52*4882a593Smuzhiyun };
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun /*
55*4882a593Smuzhiyun  * VIDEO EXTENSIONS
56*4882a593Smuzhiyun  */
57*4882a593Smuzhiyun #define VIDEO_FORMAT_RGB_INDEXED	0x0000
58*4882a593Smuzhiyun #define VIDEO_FORMAT_RGB_DIRECTCOLOR	0x0001
59*4882a593Smuzhiyun #define VIDEO_FORMAT_YUYV_4_4_4		0x0010
60*4882a593Smuzhiyun #define VIDEO_FORMAT_YUYV_4_2_2		0x0011
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun typedef struct {
63*4882a593Smuzhiyun 	void *address;			/* Address of framebuffer		*/
64*4882a593Smuzhiyun 	ushort	width;			/* Horizontal resolution		*/
65*4882a593Smuzhiyun 	ushort	height;			/* Vertical resolution			*/
66*4882a593Smuzhiyun 	uchar	format;			/* Format				*/
67*4882a593Smuzhiyun 	uchar	colors;			/* Colors number or color depth		*/
68*4882a593Smuzhiyun 	void (*setcolreg) (int, int, int, int);
69*4882a593Smuzhiyun 	void (*getcolreg) (int, void *);
70*4882a593Smuzhiyun } video_ext_t;
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun /*
73*4882a593Smuzhiyun  * VARIABLES
74*4882a593Smuzhiyun  */
75*4882a593Smuzhiyun extern struct stdio_dev *stdio_devices[];
76*4882a593Smuzhiyun extern char *stdio_names[MAX_FILES];
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun /*
79*4882a593Smuzhiyun  * PROTOTYPES
80*4882a593Smuzhiyun  */
81*4882a593Smuzhiyun int	stdio_register (struct stdio_dev * dev);
82*4882a593Smuzhiyun int stdio_register_dev(struct stdio_dev *dev, struct stdio_dev **devp);
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun /**
85*4882a593Smuzhiyun  * stdio_init_tables() - set up stdio tables ready for devices
86*4882a593Smuzhiyun  *
87*4882a593Smuzhiyun  * This does not add any devices, but just prepares stdio for use.
88*4882a593Smuzhiyun  */
89*4882a593Smuzhiyun int stdio_init_tables(void);
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun /**
92*4882a593Smuzhiyun  * stdio_add_devices() - Add stdio devices to the table
93*4882a593Smuzhiyun  *
94*4882a593Smuzhiyun  * This makes calls to all the various subsystems that use stdio, to make
95*4882a593Smuzhiyun  * them register with stdio.
96*4882a593Smuzhiyun  */
97*4882a593Smuzhiyun int stdio_add_devices(void);
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun /**
100*4882a593Smuzhiyun  * stdio_init() - Sets up stdio ready for use
101*4882a593Smuzhiyun  *
102*4882a593Smuzhiyun  * This calls stdio_init_tables() and stdio_add_devices()
103*4882a593Smuzhiyun  */
104*4882a593Smuzhiyun int stdio_init(void);
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun void	stdio_print_current_devices(void);
107*4882a593Smuzhiyun #if CONFIG_IS_ENABLED(SYS_STDIO_DEREGISTER)
108*4882a593Smuzhiyun int stdio_deregister(const char *devname, int force);
109*4882a593Smuzhiyun int stdio_deregister_dev(struct stdio_dev *dev, int force);
110*4882a593Smuzhiyun #endif
111*4882a593Smuzhiyun struct list_head* stdio_get_list(void);
112*4882a593Smuzhiyun struct stdio_dev* stdio_get_by_name(const char* name);
113*4882a593Smuzhiyun struct stdio_dev* stdio_clone(struct stdio_dev *dev);
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun #ifdef CONFIG_LCD
116*4882a593Smuzhiyun int	drv_lcd_init (void);
117*4882a593Smuzhiyun #endif
118*4882a593Smuzhiyun #if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
119*4882a593Smuzhiyun int	drv_video_init (void);
120*4882a593Smuzhiyun #endif
121*4882a593Smuzhiyun #ifdef CONFIG_KEYBOARD
122*4882a593Smuzhiyun int	drv_keyboard_init (void);
123*4882a593Smuzhiyun #endif
124*4882a593Smuzhiyun #ifdef CONFIG_USB_TTY
125*4882a593Smuzhiyun int	drv_usbtty_init (void);
126*4882a593Smuzhiyun #endif
127*4882a593Smuzhiyun #ifdef CONFIG_NETCONSOLE
128*4882a593Smuzhiyun int	drv_nc_init (void);
129*4882a593Smuzhiyun #endif
130*4882a593Smuzhiyun #ifdef CONFIG_JTAG_CONSOLE
131*4882a593Smuzhiyun int drv_jtag_console_init (void);
132*4882a593Smuzhiyun #endif
133*4882a593Smuzhiyun #ifdef CONFIG_CBMEM_CONSOLE
134*4882a593Smuzhiyun int cbmemc_init(void);
135*4882a593Smuzhiyun #endif
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun #endif
138