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#ifdef CONFIG_CONSOLE_FLUSH_SUPPORT
  41        /* To flush output queue */
  42        void (*flush)(struct stdio_dev *dev);
  43#define STDIO_DEV_ASSIGN_FLUSH(dev, flush_func) ((dev)->flush = (flush_func))
  44#else
  45#define STDIO_DEV_ASSIGN_FLUSH(dev, flush_func)
  46#endif
  47
  48/* INPUT functions */
  49
  50        /* To test if a char is ready... */
  51        int (*tstc)(struct stdio_dev *dev);
  52        int (*getc)(struct stdio_dev *dev);     /* To get that char */
  53
  54/* Other functions */
  55
  56        void *priv;                     /* Private extensions                   */
  57        struct list_head list;
  58};
  59
  60/*
  61 * VARIABLES
  62 */
  63extern struct stdio_dev *stdio_devices[];
  64extern char *stdio_names[MAX_FILES];
  65
  66/*
  67 * PROTOTYPES
  68 */
  69int stdio_register(struct stdio_dev *dev);
  70int stdio_register_dev(struct stdio_dev *dev, struct stdio_dev **devp);
  71
  72/**
  73 * stdio_init_tables() - set up stdio tables ready for devices
  74 *
  75 * This does not add any devices, but just prepares stdio for use.
  76 */
  77int stdio_init_tables(void);
  78
  79/**
  80 * stdio_add_devices() - Add stdio devices to the table
  81 *
  82 * This makes calls to all the various subsystems that use stdio, to make
  83 * them register with stdio.
  84 */
  85int stdio_add_devices(void);
  86
  87/**
  88 * stdio_init() - Sets up stdio ready for use
  89 *
  90 * This calls stdio_init_tables() and stdio_add_devices()
  91 */
  92int stdio_init(void);
  93
  94void stdio_print_current_devices(void);
  95
  96/**
  97 * stdio_deregister_dev() - deregister the device "devname".
  98 *
  99 * @dev: Stdio device to deregister
 100 * @force: true to force deregistration even if in use
 101 *
 102 * returns 0 on success, -EBUSY if device is assigned
 103 */
 104int stdio_deregister_dev(struct stdio_dev *dev, int force);
 105struct list_head *stdio_get_list(void);
 106struct stdio_dev *stdio_get_by_name(const char *name);
 107struct stdio_dev *stdio_clone(struct stdio_dev *dev);
 108
 109int drv_lcd_init(void);
 110int drv_video_init(void);
 111int drv_keyboard_init(void);
 112int drv_usbtty_init(void);
 113int drv_usbacm_init(void);
 114int drv_nc_init(void);
 115int drv_jtag_console_init(void);
 116int cbmemc_init(void);
 117
 118#endif
 119