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