Loading drivers/usb/serial/ark3116.c +18 −40 Original line number Diff line number Diff line Loading @@ -62,7 +62,6 @@ static int is_irda(struct usb_serial *serial) } struct ark3116_private { struct async_icount icount; int irda; /* 1 for irda device */ /* protects hw register updates */ Loading Loading @@ -402,31 +401,10 @@ static int ark3116_open(struct tty_struct *tty, struct usb_serial_port *port) return result; } static int ark3116_get_icount(struct tty_struct *tty, struct serial_icounter_struct *icount) { struct usb_serial_port *port = tty->driver_data; struct ark3116_private *priv = usb_get_serial_port_data(port); struct async_icount cnow = priv->icount; icount->cts = cnow.cts; icount->dsr = cnow.dsr; icount->rng = cnow.rng; icount->dcd = cnow.dcd; icount->rx = cnow.rx; icount->tx = cnow.tx; icount->frame = cnow.frame; icount->overrun = cnow.overrun; icount->parity = cnow.parity; icount->brk = cnow.brk; icount->buf_overrun = cnow.buf_overrun; return 0; } static int ark3116_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg) { struct usb_serial_port *port = tty->driver_data; struct ark3116_private *priv = usb_get_serial_port_data(port); struct serial_struct serstruct; void __user *user_arg = (void __user *)arg; Loading @@ -450,7 +428,7 @@ static int ark3116_ioctl(struct tty_struct *tty, return 0; case TIOCMIWAIT: for (;;) { struct async_icount prev = priv->icount; struct async_icount prev = port->icount; interruptible_sleep_on(&port->delta_msr_wait); /* see if a signal did it */ if (signal_pending(current)) Loading @@ -459,19 +437,19 @@ static int ark3116_ioctl(struct tty_struct *tty, if (port->serial->disconnected) return -EIO; if ((prev.rng == priv->icount.rng) && (prev.dsr == priv->icount.dsr) && (prev.dcd == priv->icount.dcd) && (prev.cts == priv->icount.cts)) if ((prev.rng == port->icount.rng) && (prev.dsr == port->icount.dsr) && (prev.dcd == port->icount.dcd) && (prev.cts == port->icount.cts)) return -EIO; if ((arg & TIOCM_RNG && (prev.rng != priv->icount.rng)) || (prev.rng != port->icount.rng)) || (arg & TIOCM_DSR && (prev.dsr != priv->icount.dsr)) || (prev.dsr != port->icount.dsr)) || (arg & TIOCM_CD && (prev.dcd != priv->icount.dcd)) || (prev.dcd != port->icount.dcd)) || (arg & TIOCM_CTS && (prev.cts != priv->icount.cts))) (prev.cts != port->icount.cts))) return 0; } break; Loading Loading @@ -572,13 +550,13 @@ static void ark3116_update_msr(struct usb_serial_port *port, __u8 msr) if (msr & UART_MSR_ANY_DELTA) { /* update input line counters */ if (msr & UART_MSR_DCTS) priv->icount.cts++; port->icount.cts++; if (msr & UART_MSR_DDSR) priv->icount.dsr++; port->icount.dsr++; if (msr & UART_MSR_DDCD) priv->icount.dcd++; port->icount.dcd++; if (msr & UART_MSR_TERI) priv->icount.rng++; port->icount.rng++; wake_up_interruptible(&port->delta_msr_wait); } } Loading @@ -595,13 +573,13 @@ static void ark3116_update_lsr(struct usb_serial_port *port, __u8 lsr) if (lsr&UART_LSR_BRK_ERROR_BITS) { if (lsr & UART_LSR_BI) priv->icount.brk++; port->icount.brk++; if (lsr & UART_LSR_FE) priv->icount.frame++; port->icount.frame++; if (lsr & UART_LSR_PE) priv->icount.parity++; port->icount.parity++; if (lsr & UART_LSR_OE) priv->icount.overrun++; port->icount.overrun++; } } Loading Loading @@ -719,7 +697,7 @@ static struct usb_serial_driver ark3116_device = { .ioctl = ark3116_ioctl, .tiocmget = ark3116_tiocmget, .tiocmset = ark3116_tiocmset, .get_icount = ark3116_get_icount, .get_icount = usb_serial_generic_get_icount, .open = ark3116_open, .close = ark3116_close, .break_ctl = ark3116_break_ctl, Loading Loading
drivers/usb/serial/ark3116.c +18 −40 Original line number Diff line number Diff line Loading @@ -62,7 +62,6 @@ static int is_irda(struct usb_serial *serial) } struct ark3116_private { struct async_icount icount; int irda; /* 1 for irda device */ /* protects hw register updates */ Loading Loading @@ -402,31 +401,10 @@ static int ark3116_open(struct tty_struct *tty, struct usb_serial_port *port) return result; } static int ark3116_get_icount(struct tty_struct *tty, struct serial_icounter_struct *icount) { struct usb_serial_port *port = tty->driver_data; struct ark3116_private *priv = usb_get_serial_port_data(port); struct async_icount cnow = priv->icount; icount->cts = cnow.cts; icount->dsr = cnow.dsr; icount->rng = cnow.rng; icount->dcd = cnow.dcd; icount->rx = cnow.rx; icount->tx = cnow.tx; icount->frame = cnow.frame; icount->overrun = cnow.overrun; icount->parity = cnow.parity; icount->brk = cnow.brk; icount->buf_overrun = cnow.buf_overrun; return 0; } static int ark3116_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg) { struct usb_serial_port *port = tty->driver_data; struct ark3116_private *priv = usb_get_serial_port_data(port); struct serial_struct serstruct; void __user *user_arg = (void __user *)arg; Loading @@ -450,7 +428,7 @@ static int ark3116_ioctl(struct tty_struct *tty, return 0; case TIOCMIWAIT: for (;;) { struct async_icount prev = priv->icount; struct async_icount prev = port->icount; interruptible_sleep_on(&port->delta_msr_wait); /* see if a signal did it */ if (signal_pending(current)) Loading @@ -459,19 +437,19 @@ static int ark3116_ioctl(struct tty_struct *tty, if (port->serial->disconnected) return -EIO; if ((prev.rng == priv->icount.rng) && (prev.dsr == priv->icount.dsr) && (prev.dcd == priv->icount.dcd) && (prev.cts == priv->icount.cts)) if ((prev.rng == port->icount.rng) && (prev.dsr == port->icount.dsr) && (prev.dcd == port->icount.dcd) && (prev.cts == port->icount.cts)) return -EIO; if ((arg & TIOCM_RNG && (prev.rng != priv->icount.rng)) || (prev.rng != port->icount.rng)) || (arg & TIOCM_DSR && (prev.dsr != priv->icount.dsr)) || (prev.dsr != port->icount.dsr)) || (arg & TIOCM_CD && (prev.dcd != priv->icount.dcd)) || (prev.dcd != port->icount.dcd)) || (arg & TIOCM_CTS && (prev.cts != priv->icount.cts))) (prev.cts != port->icount.cts))) return 0; } break; Loading Loading @@ -572,13 +550,13 @@ static void ark3116_update_msr(struct usb_serial_port *port, __u8 msr) if (msr & UART_MSR_ANY_DELTA) { /* update input line counters */ if (msr & UART_MSR_DCTS) priv->icount.cts++; port->icount.cts++; if (msr & UART_MSR_DDSR) priv->icount.dsr++; port->icount.dsr++; if (msr & UART_MSR_DDCD) priv->icount.dcd++; port->icount.dcd++; if (msr & UART_MSR_TERI) priv->icount.rng++; port->icount.rng++; wake_up_interruptible(&port->delta_msr_wait); } } Loading @@ -595,13 +573,13 @@ static void ark3116_update_lsr(struct usb_serial_port *port, __u8 lsr) if (lsr&UART_LSR_BRK_ERROR_BITS) { if (lsr & UART_LSR_BI) priv->icount.brk++; port->icount.brk++; if (lsr & UART_LSR_FE) priv->icount.frame++; port->icount.frame++; if (lsr & UART_LSR_PE) priv->icount.parity++; port->icount.parity++; if (lsr & UART_LSR_OE) priv->icount.overrun++; port->icount.overrun++; } } Loading Loading @@ -719,7 +697,7 @@ static struct usb_serial_driver ark3116_device = { .ioctl = ark3116_ioctl, .tiocmget = ark3116_tiocmget, .tiocmset = ark3116_tiocmset, .get_icount = ark3116_get_icount, .get_icount = usb_serial_generic_get_icount, .open = ark3116_open, .close = ark3116_close, .break_ctl = ark3116_break_ctl, Loading