#define pr_fmt(fmt) …
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/usb/cdc.h>
#include <linux/serial.h>
#include "gdm_tty.h"
#define GDM_TTY_MAJOR …
#define GDM_TTY_MINOR …
#define WRITE_SIZE …
#define MUX_TX_MAX_SIZE …
static inline bool gdm_tty_ready(struct gdm *gdm)
{ … }
static struct tty_driver *gdm_driver[TTY_MAX_COUNT];
static struct gdm *gdm_table[TTY_MAX_COUNT][GDM_TTY_MINOR];
static DEFINE_MUTEX(gdm_table_lock);
static const char *DRIVER_STRING[TTY_MAX_COUNT] = …;
static char *DEVICE_STRING[TTY_MAX_COUNT] = …;
static void gdm_port_destruct(struct tty_port *port)
{ … }
static const struct tty_port_operations gdm_port_ops = …;
static int gdm_tty_install(struct tty_driver *driver, struct tty_struct *tty)
{ … }
static int gdm_tty_open(struct tty_struct *tty, struct file *filp)
{ … }
static void gdm_tty_cleanup(struct tty_struct *tty)
{ … }
static void gdm_tty_hangup(struct tty_struct *tty)
{ … }
static void gdm_tty_close(struct tty_struct *tty, struct file *filp)
{ … }
static int gdm_tty_recv_complete(void *data,
int len,
int index,
struct tty_dev *tty_dev,
int complete)
{ … }
static void gdm_tty_send_complete(void *arg)
{ … }
static ssize_t gdm_tty_write(struct tty_struct *tty, const u8 *buf, size_t len)
{ … }
static unsigned int gdm_tty_write_room(struct tty_struct *tty)
{ … }
int register_lte_tty_device(struct tty_dev *tty_dev, struct device *device)
{ … }
void unregister_lte_tty_device(struct tty_dev *tty_dev)
{ … }
static const struct tty_operations gdm_tty_ops = …;
int register_lte_tty_driver(void)
{ … }
void unregister_lte_tty_driver(void)
{ … }