Merge branch '2020-10-08-misc-board-improvements'
[platform/kernel/u-boot.git] / include / console.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * (C) Copyright 2000-2009
4  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
5  */
6
7 #ifndef __CONSOLE_H
8 #define __CONSOLE_H
9
10 #include <stdbool.h>
11 #include <linux/errno.h>
12
13 extern char console_buffer[];
14
15 /* common/console.c */
16 int console_init_f(void);       /* Before relocation; uses the serial  stuff */
17 int console_init_r(void);       /* After  relocation; uses the console stuff */
18 int console_assign(int file, const char *devname);      /* Assign the console */
19 int ctrlc(void);
20 int had_ctrlc(void);    /* have we had a Control-C since last clear? */
21 void clear_ctrlc(void); /* clear the Control-C condition */
22 int disable_ctrlc(int); /* 1 to disable, 0 to enable Control-C detect */
23 int confirm_yesno(void);        /*  1 if input is "y", "Y", "yes" or "YES" */
24
25 #ifdef CONFIG_CONSOLE_RECORD
26 /**
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.
31  *
32  * @return 0 if OK, -ENOMEM if out of memory
33  */
34 int console_record_init(void);
35
36 /**
37  * console_record_reset() - reset the console recording buffers
38  *
39  * Removes any data in the buffers
40  */
41 void 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.
47  *
48  * @return 0 (always)
49  */
50 int console_record_reset_enable(void);
51
52 /**
53  * 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  */
62 int 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  */
69 int console_record_avail(void);
70 #else
71 static inline int console_record_init(void)
72 {
73         /* Always succeed, since it is not enabled */
74
75         return 0;
76 }
77
78 static inline void console_record_reset(void)
79 {
80         /* Nothing to do here */
81 }
82
83 static inline int console_record_reset_enable(void)
84 {
85         /* Cannot enable it as it is not supported */
86         return -ENOSYS;
87 }
88
89 static inline int console_record_readline(char *str, int maxlen)
90 {
91         /* Nothing to read */
92         return 0;
93 }
94
95 static inline int console_record_avail(void)
96 {
97         /* There is never anything available */
98         return 0;
99 }
100
101 #endif /* !CONFIG_CONSOLE_RECORD */
102
103 /**
104  * 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  */
113 int console_announce_r(void);
114
115 /**
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  */
124 void console_puts_select_stderr(bool serial_only, const char *s);
125
126 /*
127  * CONSOLE multiplexing.
128  */
129 #ifdef CONFIG_CONSOLE_MUX
130 #include <iomux.h>
131 #endif
132
133 #endif