aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/linux
diff options
context:
space:
mode:
authorRob Herring <robh@kernel.org>2014-05-20 14:22:54 -0500
committerRob Herring <robh@kernel.org>2014-05-20 14:22:54 -0500
commit6e87b7030e3ef2c7ad01fcaa1b46d3ebe6c261e7 (patch)
treee01eaf5fcfed6767da9fcfd8f5120ef667c81bb8 /include/linux
parentMerge branch 'dt-bus-name' into for-next (diff)
parenttty/serial: fix generic earlycon option parsing (diff)
downloadwireguard-linux-6e87b7030e3ef2c7ad01fcaa1b46d3ebe6c261e7.tar.xz
wireguard-linux-6e87b7030e3ef2c7ad01fcaa1b46d3ebe6c261e7.zip
Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty into for-next
Conflicts: arch/arm64/kernel/early_printk.c
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/serial_core.h16
-rw-r--r--include/linux/tty_ldisc.h5
2 files changed, 20 insertions, 1 deletions
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index f729be981da0..7a15b5b24c0b 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -285,6 +285,22 @@ static inline int uart_poll_timeout(struct uart_port *port)
/*
* Console helpers.
*/
+struct earlycon_device {
+ struct console *con;
+ struct uart_port port;
+ char options[16]; /* e.g., 115200n8 */
+ unsigned int baud;
+};
+int setup_earlycon(char *buf, const char *match,
+ int (*setup)(struct earlycon_device *, const char *));
+
+#define EARLYCON_DECLARE(name, func) \
+static int __init name ## _setup_earlycon(char *buf) \
+{ \
+ return setup_earlycon(buf, __stringify(name), func); \
+} \
+early_param("earlycon", name ## _setup_earlycon);
+
struct uart_port *uart_get_console(struct uart_port *ports, int nr,
struct console *c);
void uart_parse_options(char *options, int *baud, int *parity, int *bits,
diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h
index add26da2faeb..00c9d688d7b7 100644
--- a/include/linux/tty_ldisc.h
+++ b/include/linux/tty_ldisc.h
@@ -92,7 +92,10 @@
* This function is called by the low-level tty driver to signal
* that line discpline should try to send more characters to the
* low-level driver for transmission. If the line discpline does
- * not have any more data to send, it can just return.
+ * not have any more data to send, it can just return. If the line
+ * discipline does have some data to send, please arise a tasklet
+ * or workqueue to do the real data transfer. Do not send data in
+ * this hook, it may leads to a deadlock.
*
* int (*hangup)(struct tty_struct *)
*