xref: /openbmc/linux/arch/um/drivers/chan.h (revision c8b2c268)
1dbddf429SAlex Dewar /* SPDX-License-Identifier: GPL-2.0 */
2510c72a3SAl Viro /*
3510c72a3SAl Viro  * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com)
4510c72a3SAl Viro  */
5510c72a3SAl Viro 
6510c72a3SAl Viro #ifndef __CHAN_KERN_H__
7510c72a3SAl Viro #define __CHAN_KERN_H__
8510c72a3SAl Viro 
9510c72a3SAl Viro #include <linux/tty.h>
10510c72a3SAl Viro #include <linux/list.h>
11510c72a3SAl Viro #include <linux/console.h>
12510c72a3SAl Viro #include "chan_user.h"
13510c72a3SAl Viro #include "line.h"
14510c72a3SAl Viro 
15510c72a3SAl Viro struct chan {
16510c72a3SAl Viro 	struct list_head list;
17510c72a3SAl Viro 	struct list_head free_list;
18510c72a3SAl Viro 	struct line *line;
19510c72a3SAl Viro 	char *dev;
20510c72a3SAl Viro 	unsigned int primary:1;
21510c72a3SAl Viro 	unsigned int input:1;
22510c72a3SAl Viro 	unsigned int output:1;
23510c72a3SAl Viro 	unsigned int opened:1;
24510c72a3SAl Viro 	unsigned int enabled:1;
25510c72a3SAl Viro 	int fd;
26510c72a3SAl Viro 	const struct chan_ops *ops;
27510c72a3SAl Viro 	void *data;
28510c72a3SAl Viro };
29510c72a3SAl Viro 
302e124b4aSJiri Slaby extern void chan_interrupt(struct line *line, int irq);
31510c72a3SAl Viro extern int parse_chan_pair(char *str, struct line *line, int device,
32510c72a3SAl Viro 			   const struct chan_opts *opts, char **error_out);
33bed5e39cSAl Viro extern int write_chan(struct chan *chan, const char *buf, int len,
34510c72a3SAl Viro 			     int write_irq);
35bed5e39cSAl Viro extern int console_write_chan(struct chan *chan, const char *buf,
36510c72a3SAl Viro 			      int len);
37510c72a3SAl Viro extern int console_open_chan(struct line *line, struct console *co);
38bed5e39cSAl Viro extern void deactivate_chan(struct chan *chan, int irq);
392116bda6SRichard Weinberger extern void chan_enable_winch(struct chan *chan, struct tty_port *port);
40510c72a3SAl Viro extern int enable_chan(struct line *line);
4110c890c0SAl Viro extern void close_chan(struct line *line);
42bed5e39cSAl Viro extern int chan_window_size(struct line *line,
43510c72a3SAl Viro 			     unsigned short *rows_out,
44510c72a3SAl Viro 			     unsigned short *cols_out);
45bed5e39cSAl Viro extern int chan_config_string(struct line *line, char *str, int size,
46510c72a3SAl Viro 			      char **error_out);
47510c72a3SAl Viro 
48510c72a3SAl Viro #endif
49