1*dbddf429SAlex 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