xref: /rk3399_rockchip-uboot/include/stdio_dev.h (revision 98ab435f736f24b503c8a9dbacc3ee1556a58106)
152cb4d4fSJean-Christophe PLAGNIOL-VILLARD /*
252cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * (C) Copyright 2000
352cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
452cb4d4fSJean-Christophe PLAGNIOL-VILLARD  *
552cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * See file CREDITS for list of people who contributed to this
652cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * project.
752cb4d4fSJean-Christophe PLAGNIOL-VILLARD  *
852cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * This program is free software; you can redistribute it and/or
952cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * modify it under the terms of the GNU General Public License as
1052cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * published by the Free Software Foundation; either version 2 of
1152cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * the License, or (at your option) any later version.
1252cb4d4fSJean-Christophe PLAGNIOL-VILLARD  *
1352cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * This program is distributed in the hope that it will be useful,
1452cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1552cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1652cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * GNU General Public License for more details.
1752cb4d4fSJean-Christophe PLAGNIOL-VILLARD  *
1852cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * You should have received a copy of the GNU General Public License
1952cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * along with this program; if not, write to the Free Software
2052cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
2152cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * MA 02111-1307 USA
2252cb4d4fSJean-Christophe PLAGNIOL-VILLARD  */
2352cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
2452cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifndef _STDIO_DEV_H_
2552cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define _STDIO_DEV_H_
2652cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
2752cb4d4fSJean-Christophe PLAGNIOL-VILLARD #include <linux/list.h>
2852cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
2952cb4d4fSJean-Christophe PLAGNIOL-VILLARD /*
3052cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * STDIO DEVICES
3152cb4d4fSJean-Christophe PLAGNIOL-VILLARD  */
3252cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
3352cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define DEV_FLAGS_INPUT	 0x00000001	/* Device can be used as input	console */
3452cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define DEV_FLAGS_OUTPUT 0x00000002	/* Device can be used as output console */
3552cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define DEV_FLAGS_SYSTEM 0x80000000	/* Device is a system device		*/
3652cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define DEV_EXT_VIDEO	 0x00000001	/* Video extensions supported		*/
3752cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
3852cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* Device information */
3952cb4d4fSJean-Christophe PLAGNIOL-VILLARD struct stdio_dev {
4052cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	int	flags;			/* Device flags: input/output/system	*/
4152cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	int	ext;			/* Supported extensions			*/
4252cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	char	name[16];		/* Device name				*/
4352cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
4452cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* GENERAL functions */
4552cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
4652cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	int (*start) (void);		/* To start the device			*/
4752cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	int (*stop) (void);		/* To stop the device			*/
4852cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
4952cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* OUTPUT functions */
5052cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
5152cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	void (*putc) (const char c);	/* To put a char			*/
5252cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	void (*puts) (const char *s);	/* To put a string (accelerator)	*/
5352cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
5452cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* INPUT functions */
5552cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
5652cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	int (*tstc) (void);		/* To test if a char is ready...	*/
5752cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	int (*getc) (void);		/* To get that char			*/
5852cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
5952cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* Other functions */
6052cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
6152cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	void *priv;			/* Private extensions			*/
6252cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	struct list_head list;
6352cb4d4fSJean-Christophe PLAGNIOL-VILLARD };
6452cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
6552cb4d4fSJean-Christophe PLAGNIOL-VILLARD /*
6652cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * VIDEO EXTENSIONS
6752cb4d4fSJean-Christophe PLAGNIOL-VILLARD  */
6852cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define VIDEO_FORMAT_RGB_INDEXED	0x0000
6952cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define VIDEO_FORMAT_RGB_DIRECTCOLOR	0x0001
7052cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define VIDEO_FORMAT_YUYV_4_4_4		0x0010
7152cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define VIDEO_FORMAT_YUYV_4_2_2		0x0011
7252cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
7352cb4d4fSJean-Christophe PLAGNIOL-VILLARD typedef struct {
7452cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	void *address;			/* Address of framebuffer		*/
7552cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	ushort	width;			/* Horizontal resolution		*/
7652cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	ushort	height;			/* Vertical resolution			*/
7752cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	uchar	format;			/* Format				*/
7852cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	uchar	colors;			/* Colors number or color depth		*/
7952cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	void (*setcolreg) (int, int, int, int);
8052cb4d4fSJean-Christophe PLAGNIOL-VILLARD 	void (*getcolreg) (int, void *);
8152cb4d4fSJean-Christophe PLAGNIOL-VILLARD } video_ext_t;
8252cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
8352cb4d4fSJean-Christophe PLAGNIOL-VILLARD /*
8452cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * VARIABLES
8552cb4d4fSJean-Christophe PLAGNIOL-VILLARD  */
8652cb4d4fSJean-Christophe PLAGNIOL-VILLARD extern struct stdio_dev *stdio_devices[];
8752cb4d4fSJean-Christophe PLAGNIOL-VILLARD extern char *stdio_names[MAX_FILES];
8852cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
8952cb4d4fSJean-Christophe PLAGNIOL-VILLARD /*
9052cb4d4fSJean-Christophe PLAGNIOL-VILLARD  * PROTOTYPES
9152cb4d4fSJean-Christophe PLAGNIOL-VILLARD  */
9252cb4d4fSJean-Christophe PLAGNIOL-VILLARD int	stdio_register (struct stdio_dev * dev);
9352cb4d4fSJean-Christophe PLAGNIOL-VILLARD int	stdio_init (void);
947e3be7cfSJean-Christophe PLAGNIOL-VILLARD void	stdio_print_current_devices(void);
9552cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_STDIO_DEREGISTER
96d7be3056SMike Frysinger int	stdio_deregister(const char *devname);
9752cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif
9852cb4d4fSJean-Christophe PLAGNIOL-VILLARD struct list_head* stdio_get_list(void);
99d7be3056SMike Frysinger struct stdio_dev* stdio_get_by_name(const char* name);
10052cb4d4fSJean-Christophe PLAGNIOL-VILLARD struct stdio_dev* stdio_clone(struct stdio_dev *dev);
10152cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
10252cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_ARM_DCC_MULTI
10352cb4d4fSJean-Christophe PLAGNIOL-VILLARD int drv_arm_dcc_init(void);
10452cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif
10552cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_LCD
10652cb4d4fSJean-Christophe PLAGNIOL-VILLARD int	drv_lcd_init (void);
10752cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif
10852cb4d4fSJean-Christophe PLAGNIOL-VILLARD #if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
10952cb4d4fSJean-Christophe PLAGNIOL-VILLARD int	drv_video_init (void);
11052cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif
11152cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_KEYBOARD
11252cb4d4fSJean-Christophe PLAGNIOL-VILLARD int	drv_keyboard_init (void);
11352cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif
11452cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_USB_TTY
11552cb4d4fSJean-Christophe PLAGNIOL-VILLARD int	drv_usbtty_init (void);
11652cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif
11752cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_NETCONSOLE
11852cb4d4fSJean-Christophe PLAGNIOL-VILLARD int	drv_nc_init (void);
11952cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif
12052cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_JTAG_CONSOLE
12152cb4d4fSJean-Christophe PLAGNIOL-VILLARD int drv_jtag_console_init (void);
12252cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif
123*98ab435fSVadim Bendebury #ifdef CONFIG_CBMEM_CONSOLE
124*98ab435fSVadim Bendebury int cbmemc_init(void);
125*98ab435fSVadim Bendebury #endif
12652cb4d4fSJean-Christophe PLAGNIOL-VILLARD 
12752cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif
128