#include <linux/kernel.h>
#include <linux/serdev.h>
#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/poll.h>
#define SERPORT_ACTIVE …
struct serport { … };
static size_t ttyport_receive_buf(struct tty_port *port, const u8 *cp,
const u8 *fp, size_t count)
{ … }
static void ttyport_write_wakeup(struct tty_port *port)
{ … }
static const struct tty_port_client_operations client_ops = …;
static ssize_t ttyport_write_buf(struct serdev_controller *ctrl, const u8 *data, size_t len)
{ … }
static void ttyport_write_flush(struct serdev_controller *ctrl)
{ … }
static int ttyport_write_room(struct serdev_controller *ctrl)
{ … }
static int ttyport_open(struct serdev_controller *ctrl)
{ … }
static void ttyport_close(struct serdev_controller *ctrl)
{ … }
static unsigned int ttyport_set_baudrate(struct serdev_controller *ctrl, unsigned int speed)
{ … }
static void ttyport_set_flow_control(struct serdev_controller *ctrl, bool enable)
{ … }
static int ttyport_set_parity(struct serdev_controller *ctrl,
enum serdev_parity parity)
{ … }
static void ttyport_wait_until_sent(struct serdev_controller *ctrl, long timeout)
{ … }
static int ttyport_get_tiocm(struct serdev_controller *ctrl)
{ … }
static int ttyport_set_tiocm(struct serdev_controller *ctrl, unsigned int set, unsigned int clear)
{ … }
static int ttyport_break_ctl(struct serdev_controller *ctrl, unsigned int break_state)
{ … }
static const struct serdev_controller_ops ctrl_ops = …;
struct device *serdev_tty_port_register(struct tty_port *port,
struct device *host,
struct device *parent,
struct tty_driver *drv, int idx)
{ … }
int serdev_tty_port_unregister(struct tty_port *port)
{ … }