uboot/include/stdio_dev.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * (C) Copyright 2000
   4 * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
   5 */
   6
   7#ifndef _STDIO_DEV_H_
   8#define _STDIO_DEV_H_
   9
  10#include <stdio.h>
  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#define DEV_FLAGS_DM     0x00000004     /* Device priv is a struct udevice * */
  20
  21/* Device information */
  22struct stdio_dev {
  23        int     flags;                  /* Device flags: input/output/system    */
  24        int     ext;                    /* Supported extensions                 */
  25        char    name[32];               /* Device name                          */
  26
  27/* GENERAL functions */
  28
  29        int (*start)(struct stdio_dev *dev);    /* To start the device */
  30        int (*stop)(struct stdio_dev *dev);     /* To stop the device */
  31
  32/* OUTPUT functions */
  33
  34        /* To put a char */
  35        void (*putc)(struct stdio_dev *dev, const char c);
  36        /* To put a string (accelerator) */
  37        void (*puts)(struct stdio_dev *dev, const char *s);
  38
  39/* INPUT functions */
  40
  41        /* To test if a char is ready... */
  42        int (*tstc)(struct stdio_dev *dev);
  43        int (*getc)(struct stdio_dev *dev);     /* To get that char */
  44
  45/* Other functions */
  46
  47        void *priv;                     /* Private extensions                   */
  48        struct list_head list;
  49};
  50
  51/*
  52 * VARIABLES
  53 */
  54extern struct stdio_dev *stdio_devices[];
  55extern char *stdio_names[MAX_FILES];
  56
  57/*
  58 * PROTOTYPES
  59 */
  60int stdio_register(struct stdio_dev *dev);
  61int stdio_register_dev(struct stdio_dev *dev, struct stdio_dev **devp);
  62
  63/**
  64 * stdio_init_tables() - set up stdio tables ready for devices
  65 *
  66 * This does not add any devices, but just prepares stdio for use.
  67 */
  68int stdio_init_tables(void);
  69
  70/**
  71 * stdio_add_devices() - Add stdio devices to the table
  72 *
  73 * This makes calls to all the various subsystems that use stdio, to make
  74 * them register with stdio.
  75 */
  76int stdio_add_devices(void);
  77
  78/**
  79 * stdio_init() - Sets up stdio ready for use
  80 *
  81 * This calls stdio_init_tables() and stdio_add_devices()
  82 */
  83int stdio_init(void);
  84
  85void stdio_print_current_devices(void);
  86int stdio_deregister(const char *devname, int force);
  87
  88/**
  89 * stdio_deregister_dev() - deregister the device "devname".
  90 *
  91 * @dev: Stdio device to deregister
  92 * @force: true to force deregistration even if in use
  93 *
  94 * returns 0 on success, -EBUSY if device is assigned
  95 */
  96int stdio_deregister_dev(struct stdio_dev *dev, int force);
  97struct list_head *stdio_get_list(void);
  98struct stdio_dev *stdio_get_by_name(const char *name);
  99struct stdio_dev *stdio_clone(struct stdio_dev *dev);
 100
 101int drv_lcd_init(void);
 102int drv_video_init(void);
 103int drv_keyboard_init(void);
 104int drv_usbtty_init(void);
 105int drv_nc_init(void);
 106int drv_jtag_console_init(void);
 107int cbmemc_init(void);
 108
 109#endif
 110