blob: 432f892b6ccea1519b1b266f22bc3d1afe716641 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Simon Glassa73bda42015-11-08 23:47:45 -07002/*
3 * (C) Copyright 2000-2009
4 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
Simon Glassa73bda42015-11-08 23:47:45 -07005 */
6
7#ifndef __CONSOLE_H
8#define __CONSOLE_H
9
Simon Glass66ee8172020-07-02 21:12:13 -060010#include <stdbool.h>
Simon Glassdc357ef2020-07-28 19:41:11 -060011#include <linux/errno.h>
Simon Glass66ee8172020-07-02 21:12:13 -060012
Simon Glassa73bda42015-11-08 23:47:45 -070013extern char console_buffer[];
14
15/* common/console.c */
16int console_init_f(void); /* Before relocation; uses the serial stuff */
17int console_init_r(void); /* After relocation; uses the console stuff */
18int console_assign(int file, const char *devname); /* Assign the console */
19int ctrlc(void);
20int had_ctrlc(void); /* have we had a Control-C since last clear? */
21void clear_ctrlc(void); /* clear the Control-C condition */
22int disable_ctrlc(int); /* 1 to disable, 0 to enable Control-C detect */
23int confirm_yesno(void); /* 1 if input is "y", "Y", "yes" or "YES" */
24
Simon Glassdc357ef2020-07-28 19:41:11 -060025#ifdef CONFIG_CONSOLE_RECORD
Simon Glass1bb49232015-11-08 23:47:48 -070026/**
27 * console_record_init() - set up the console recording buffers
28 *
29 * This should be called as soon as malloc() is available so that the maximum
30 * amount of console output can be recorded.
Simon Glassdc357ef2020-07-28 19:41:11 -060031 *
32 * @return 0 if OK, -ENOMEM if out of memory
Simon Glass1bb49232015-11-08 23:47:48 -070033 */
34int console_record_init(void);
35
36/**
37 * console_record_reset() - reset the console recording buffers
38 *
39 * Removes any data in the buffers
40 */
41void console_record_reset(void);
42
43/**
44 * console_record_reset_enable() - reset and enable the console buffers
45 *
46 * This should be called to enable the console buffer.
Simon Glassdc357ef2020-07-28 19:41:11 -060047 *
48 * @return 0 (always)
Simon Glass1bb49232015-11-08 23:47:48 -070049 */
Simon Glassdc357ef2020-07-28 19:41:11 -060050int console_record_reset_enable(void);
Simon Glass1bb49232015-11-08 23:47:48 -070051
Simon Glassc9c5c9f2017-06-15 21:37:50 -060052/**
Simon Glassb17c1582020-01-27 08:49:54 -070053 * console_record_readline() - Read a line from the console output
54 *
55 * This reads the next available line from the console output previously
56 * recorded.
57 *
58 * @str: Place to put string
59 * @maxlen: Maximum length of @str including nul terminator
60 * @return length of string returned
61 */
62int console_record_readline(char *str, int maxlen);
63
64/**
65 * console_record_avail() - Get the number of available bytes in console output
66 *
67 * @return available bytes (0 if empty)
68 */
69int console_record_avail(void);
Simon Glassdc357ef2020-07-28 19:41:11 -060070#else
71static inline int console_record_init(void)
72{
73 /* Always succeed, since it is not enabled */
74
75 return 0;
76}
77
78static inline void console_record_reset(void)
79{
80 /* Nothing to do here */
81}
82
83static inline int console_record_reset_enable(void)
84{
85 /* Cannot enable it as it is not supported */
86 return -ENOSYS;
87}
88
89static inline int console_record_readline(char *str, int maxlen)
90{
91 /* Nothing to read */
92 return 0;
93}
94
95static inline int console_record_avail(void)
96{
97 /* There is never anything available */
98 return 0;
99}
100
101#endif /* !CONFIG_CONSOLE_RECORD */
Simon Glassb17c1582020-01-27 08:49:54 -0700102
103/**
Simon Glassc9c5c9f2017-06-15 21:37:50 -0600104 * console_announce_r() - print a U-Boot console on non-serial consoles
105 *
106 * When U-Boot starts up with a display it generally does not announce itself
107 * on the display. The banner is instead emitted on the UART before relocation.
108 * This function prints a banner on devices which (we assume) did not receive
109 * it before relocation.
110 *
111 * @return 0 (meaning no errors)
112 */
113int console_announce_r(void);
114
Simon Glass66ee8172020-07-02 21:12:13 -0600115/**
116 * console_puts_select_stderr() - Output a string to selected console devices
117 *
118 * This writes to stderr only. It is useful for outputting errors
119 *
120 * @serial_only: true to output only to serial, false to output to everything
121 * else
122 * @s: String to output
123 */
124void console_puts_select_stderr(bool serial_only, const char *s);
125
Simon Glassa73bda42015-11-08 23:47:45 -0700126/*
127 * CONSOLE multiplexing.
128 */
129#ifdef CONFIG_CONSOLE_MUX
130#include <iomux.h>
131#endif
132
133#endif