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