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