#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#include <linux/uaccess.h>
#include <linux/usb.h>
#include <linux/usb/serial.h>
#include <linux/ioctl.h>
#include "kobil_sct.h"
#define DRIVER_AUTHOR …
#define DRIVER_DESC …
#define KOBIL_VENDOR_ID …
#define KOBIL_ADAPTER_B_PRODUCT_ID …
#define KOBIL_ADAPTER_K_PRODUCT_ID …
#define KOBIL_USBTWIN_PRODUCT_ID …
#define KOBIL_KAAN_SIM_PRODUCT_ID …
#define KOBIL_TIMEOUT …
#define KOBIL_BUF_LENGTH …
static int kobil_port_probe(struct usb_serial_port *probe);
static void kobil_port_remove(struct usb_serial_port *probe);
static int kobil_open(struct tty_struct *tty, struct usb_serial_port *port);
static void kobil_close(struct usb_serial_port *port);
static int kobil_write(struct tty_struct *tty, struct usb_serial_port *port,
const unsigned char *buf, int count);
static unsigned int kobil_write_room(struct tty_struct *tty);
static int kobil_ioctl(struct tty_struct *tty,
unsigned int cmd, unsigned long arg);
static int kobil_tiocmget(struct tty_struct *tty);
static int kobil_tiocmset(struct tty_struct *tty,
unsigned int set, unsigned int clear);
static void kobil_read_int_callback(struct urb *urb);
static void kobil_write_int_callback(struct urb *urb);
static void kobil_set_termios(struct tty_struct *tty,
struct usb_serial_port *port,
const struct ktermios *old);
static void kobil_init_termios(struct tty_struct *tty);
static const struct usb_device_id id_table[] = …;
MODULE_DEVICE_TABLE(usb, id_table);
static struct usb_serial_driver kobil_device = …;
static struct usb_serial_driver * const serial_drivers[] = …;
struct kobil_private { … };
static int kobil_port_probe(struct usb_serial_port *port)
{ … }
static void kobil_port_remove(struct usb_serial_port *port)
{ … }
static void kobil_init_termios(struct tty_struct *tty)
{ … }
static int kobil_open(struct tty_struct *tty, struct usb_serial_port *port)
{ … }
static void kobil_close(struct usb_serial_port *port)
{ … }
static void kobil_read_int_callback(struct urb *urb)
{ … }
static void kobil_write_int_callback(struct urb *urb)
{ … }
static int kobil_write(struct tty_struct *tty, struct usb_serial_port *port,
const unsigned char *buf, int count)
{ … }
static unsigned int kobil_write_room(struct tty_struct *tty)
{ … }
static int kobil_tiocmget(struct tty_struct *tty)
{ … }
static int kobil_tiocmset(struct tty_struct *tty,
unsigned int set, unsigned int clear)
{ … }
static void kobil_set_termios(struct tty_struct *tty,
struct usb_serial_port *port,
const struct ktermios *old)
{ … }
static int kobil_ioctl(struct tty_struct *tty,
unsigned int cmd, unsigned long arg)
{ … }
module_usb_serial_driver(…);
MODULE_AUTHOR(…);
MODULE_DESCRIPTION(…);
MODULE_LICENSE(…) …;