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 * 51a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 652cb4d4fSJean-Christophe PLAGNIOL-VILLARD */ 752cb4d4fSJean-Christophe PLAGNIOL-VILLARD 852cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifndef _STDIO_DEV_H_ 952cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define _STDIO_DEV_H_ 1052cb4d4fSJean-Christophe PLAGNIOL-VILLARD 1152cb4d4fSJean-Christophe PLAGNIOL-VILLARD #include <linux/list.h> 1252cb4d4fSJean-Christophe PLAGNIOL-VILLARD 1352cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* 1452cb4d4fSJean-Christophe PLAGNIOL-VILLARD * STDIO DEVICES 1552cb4d4fSJean-Christophe PLAGNIOL-VILLARD */ 1652cb4d4fSJean-Christophe PLAGNIOL-VILLARD 1752cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define DEV_FLAGS_INPUT 0x00000001 /* Device can be used as input console */ 1852cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define DEV_FLAGS_OUTPUT 0x00000002 /* Device can be used as output console */ 1952cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define DEV_FLAGS_SYSTEM 0x80000000 /* Device is a system device */ 2052cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define DEV_EXT_VIDEO 0x00000001 /* Video extensions supported */ 2152cb4d4fSJean-Christophe PLAGNIOL-VILLARD 2252cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* Device information */ 2352cb4d4fSJean-Christophe PLAGNIOL-VILLARD struct stdio_dev { 2452cb4d4fSJean-Christophe PLAGNIOL-VILLARD int flags; /* Device flags: input/output/system */ 2552cb4d4fSJean-Christophe PLAGNIOL-VILLARD int ext; /* Supported extensions */ 2652cb4d4fSJean-Christophe PLAGNIOL-VILLARD char name[16]; /* Device name */ 2752cb4d4fSJean-Christophe PLAGNIOL-VILLARD 2852cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* GENERAL functions */ 2952cb4d4fSJean-Christophe PLAGNIOL-VILLARD 30709ea543SSimon Glass int (*start)(struct stdio_dev *dev); /* To start the device */ 31709ea543SSimon Glass int (*stop)(struct stdio_dev *dev); /* To stop the device */ 3252cb4d4fSJean-Christophe PLAGNIOL-VILLARD 3352cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* OUTPUT functions */ 3452cb4d4fSJean-Christophe PLAGNIOL-VILLARD 35709ea543SSimon Glass /* To put a char */ 36709ea543SSimon Glass void (*putc)(struct stdio_dev *dev, const char c); 37709ea543SSimon Glass /* To put a string (accelerator) */ 38709ea543SSimon Glass void (*puts)(struct stdio_dev *dev, const char *s); 3952cb4d4fSJean-Christophe PLAGNIOL-VILLARD 4052cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* INPUT functions */ 4152cb4d4fSJean-Christophe PLAGNIOL-VILLARD 42709ea543SSimon Glass /* To test if a char is ready... */ 43709ea543SSimon Glass int (*tstc)(struct stdio_dev *dev); 44709ea543SSimon Glass int (*getc)(struct stdio_dev *dev); /* To get that char */ 4552cb4d4fSJean-Christophe PLAGNIOL-VILLARD 4652cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* Other functions */ 4752cb4d4fSJean-Christophe PLAGNIOL-VILLARD 4852cb4d4fSJean-Christophe PLAGNIOL-VILLARD void *priv; /* Private extensions */ 4952cb4d4fSJean-Christophe PLAGNIOL-VILLARD struct list_head list; 5052cb4d4fSJean-Christophe PLAGNIOL-VILLARD }; 5152cb4d4fSJean-Christophe PLAGNIOL-VILLARD 5252cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* 5352cb4d4fSJean-Christophe PLAGNIOL-VILLARD * VIDEO EXTENSIONS 5452cb4d4fSJean-Christophe PLAGNIOL-VILLARD */ 5552cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define VIDEO_FORMAT_RGB_INDEXED 0x0000 5652cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define VIDEO_FORMAT_RGB_DIRECTCOLOR 0x0001 5752cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define VIDEO_FORMAT_YUYV_4_4_4 0x0010 5852cb4d4fSJean-Christophe PLAGNIOL-VILLARD #define VIDEO_FORMAT_YUYV_4_2_2 0x0011 5952cb4d4fSJean-Christophe PLAGNIOL-VILLARD 6052cb4d4fSJean-Christophe PLAGNIOL-VILLARD typedef struct { 6152cb4d4fSJean-Christophe PLAGNIOL-VILLARD void *address; /* Address of framebuffer */ 6252cb4d4fSJean-Christophe PLAGNIOL-VILLARD ushort width; /* Horizontal resolution */ 6352cb4d4fSJean-Christophe PLAGNIOL-VILLARD ushort height; /* Vertical resolution */ 6452cb4d4fSJean-Christophe PLAGNIOL-VILLARD uchar format; /* Format */ 6552cb4d4fSJean-Christophe PLAGNIOL-VILLARD uchar colors; /* Colors number or color depth */ 6652cb4d4fSJean-Christophe PLAGNIOL-VILLARD void (*setcolreg) (int, int, int, int); 6752cb4d4fSJean-Christophe PLAGNIOL-VILLARD void (*getcolreg) (int, void *); 6852cb4d4fSJean-Christophe PLAGNIOL-VILLARD } video_ext_t; 6952cb4d4fSJean-Christophe PLAGNIOL-VILLARD 7052cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* 7152cb4d4fSJean-Christophe PLAGNIOL-VILLARD * VARIABLES 7252cb4d4fSJean-Christophe PLAGNIOL-VILLARD */ 7352cb4d4fSJean-Christophe PLAGNIOL-VILLARD extern struct stdio_dev *stdio_devices[]; 7452cb4d4fSJean-Christophe PLAGNIOL-VILLARD extern char *stdio_names[MAX_FILES]; 7552cb4d4fSJean-Christophe PLAGNIOL-VILLARD 7652cb4d4fSJean-Christophe PLAGNIOL-VILLARD /* 7752cb4d4fSJean-Christophe PLAGNIOL-VILLARD * PROTOTYPES 7852cb4d4fSJean-Christophe PLAGNIOL-VILLARD */ 7952cb4d4fSJean-Christophe PLAGNIOL-VILLARD int stdio_register (struct stdio_dev * dev); 80d97143a6SSimon Glass int stdio_register_dev(struct stdio_dev *dev, struct stdio_dev **devp); 81*9fb02491SSimon Glass 82*9fb02491SSimon Glass /** 83*9fb02491SSimon Glass * stdio_init_tables() - set up stdio tables ready for devices 84*9fb02491SSimon Glass * 85*9fb02491SSimon Glass * This does not add any devices, but just prepares stdio for use. 86*9fb02491SSimon Glass */ 87*9fb02491SSimon Glass int stdio_init_tables(void); 88*9fb02491SSimon Glass 89*9fb02491SSimon Glass /** 90*9fb02491SSimon Glass * stdio_add_devices() - Add stdio devices to the table 91*9fb02491SSimon Glass * 92*9fb02491SSimon Glass * This makes calls to all the various subsystems that use stdio, to make 93*9fb02491SSimon Glass * them register with stdio. 94*9fb02491SSimon Glass */ 95*9fb02491SSimon Glass int stdio_add_devices(void); 96*9fb02491SSimon Glass 97*9fb02491SSimon Glass /** 98*9fb02491SSimon Glass * stdio_init() - Sets up stdio ready for use 99*9fb02491SSimon Glass * 100*9fb02491SSimon Glass * This calls stdio_init_tables() and stdio_add_devices() 101*9fb02491SSimon Glass */ 10252cb4d4fSJean-Christophe PLAGNIOL-VILLARD int stdio_init(void); 103*9fb02491SSimon Glass 1047e3be7cfSJean-Christophe PLAGNIOL-VILLARD void stdio_print_current_devices(void); 10552cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_STDIO_DEREGISTER 106d7be3056SMike Frysinger int stdio_deregister(const char *devname); 107d97143a6SSimon Glass int stdio_deregister_dev(struct stdio_dev *dev); 10852cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif 10952cb4d4fSJean-Christophe PLAGNIOL-VILLARD struct list_head* stdio_get_list(void); 110d7be3056SMike Frysinger struct stdio_dev* stdio_get_by_name(const char* name); 11152cb4d4fSJean-Christophe PLAGNIOL-VILLARD struct stdio_dev* stdio_clone(struct stdio_dev *dev); 11252cb4d4fSJean-Christophe PLAGNIOL-VILLARD 11352cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_LCD 11452cb4d4fSJean-Christophe PLAGNIOL-VILLARD int drv_lcd_init (void); 11552cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif 11652cb4d4fSJean-Christophe PLAGNIOL-VILLARD #if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE) 11752cb4d4fSJean-Christophe PLAGNIOL-VILLARD int drv_video_init (void); 11852cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif 11952cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_KEYBOARD 12052cb4d4fSJean-Christophe PLAGNIOL-VILLARD int drv_keyboard_init (void); 12152cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif 12252cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_USB_TTY 12352cb4d4fSJean-Christophe PLAGNIOL-VILLARD int drv_usbtty_init (void); 12452cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif 12552cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_NETCONSOLE 12652cb4d4fSJean-Christophe PLAGNIOL-VILLARD int drv_nc_init (void); 12752cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif 12852cb4d4fSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_JTAG_CONSOLE 12952cb4d4fSJean-Christophe PLAGNIOL-VILLARD int drv_jtag_console_init (void); 13052cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif 13198ab435fSVadim Bendebury #ifdef CONFIG_CBMEM_CONSOLE 13298ab435fSVadim Bendebury int cbmemc_init(void); 13398ab435fSVadim Bendebury #endif 13452cb4d4fSJean-Christophe PLAGNIOL-VILLARD 13552cb4d4fSJean-Christophe PLAGNIOL-VILLARD #endif 136