#include <linux/kernel.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
#include <linux/serial.h>
#include <linux/module.h>
#include <linux/usb/serial.h>
#include <linux/uaccess.h>
#define RESEND_CTS_STATE 0x03
#define URB_UPPER_LIMIT 8
#define DRIVER_DESC "Opticon USB barcode to serial driver (1D)"
static const struct usb_device_id id_table[] = {
{ USB_DEVICE(0x065a, 0x0009) },
MODULE_DEVICE_TABLE(usb, id_table);
static void opticon_process_data_packet(struct usb_serial_port *port,
const unsigned char *buf, size_t len)
tty_insert_flip_string(&port->port, buf, len);
tty_flip_buffer_push(&port->port);
static void opticon_process_status_packet(struct usb_serial_port *port,
const unsigned char *buf, size_t len)
struct opticon_private *priv = usb_get_serial_port_data(port);
spin_lock_irqsave(&priv->lock, flags);