Loading drivers/usb/serial/ark3116.c +99 −100 Original line number Diff line number Diff line Loading @@ -68,7 +68,6 @@ static inline void ARK3116_RCV(struct usb_serial *serial, int seq, dbg("%03d < 0 bytes", seq); } static inline void ARK3116_RCV_QUIET(struct usb_serial *serial, __u8 request, __u8 requesttype, __u16 value, __u16 index, char *buf) Loading @@ -79,7 +78,6 @@ static inline void ARK3116_RCV_QUIET(struct usb_serial *serial, buf, 0x0000001, 1000); } static int ark3116_attach(struct usb_serial *serial) { char *buf; Loading Loading @@ -134,7 +132,6 @@ static int ark3116_attach(struct usb_serial *serial) /* --> seq19 */ ARK3116_SND(serial, 19, 0xFE, 0x40, 0x0003, 0x0004); /* <-- seq20 */ /* seems like serial port status info (RTS, CTS, ...) */ /* returns modem control line status?! */ Loading @@ -151,7 +148,7 @@ static int ark3116_attach(struct usb_serial *serial) ARK3116_SND(serial, 154, 0xFE, 0x40, 0x0003, 0x0003); kfree(buf); return(0); return 0; cleanup: for (--i; i >= 0; --i) Loading Loading @@ -183,7 +180,8 @@ static void ark3116_set_termios(struct usb_serial_port *port, spin_lock_irqsave(&priv->lock, flags); if (!priv->termios_initialized) { *(port->tty->termios) = tty_std_termios; port->tty->termios->c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; port->tty->termios->c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; priv->termios_initialized = 1; } spin_unlock_irqrestore(&priv->lock, flags); Loading Loading @@ -223,6 +221,7 @@ static void ark3116_set_termios(struct usb_serial_port *port, break; default: err("CSIZE was set but not CS5-CS8, using CS8!"); /* fall through */ case CS8: config |= 0x03; dbg("setting CS8"); Loading @@ -230,7 +229,7 @@ static void ark3116_set_termios(struct usb_serial_port *port, } } /* set parity (NONE,EVEN,ODD) */ /* set parity (NONE/EVEN/ODD) */ if (cflag & PARENB) { if (cflag & PARODD) { config |= 0x08; Loading @@ -243,7 +242,7 @@ static void ark3116_set_termios(struct usb_serial_port *port, dbg("setting parity to NONE"); } /* SET STOPBIT (1/2) */ /* set stop bit (1/2) */ if (cflag & CSTOPB) { config |= 0x04; dbg("setting 2 stop bits"); Loading @@ -251,8 +250,7 @@ static void ark3116_set_termios(struct usb_serial_port *port, dbg("setting 1 stop bit"); } /* set baudrate: */ /* set baudrate */ baud = 0; switch (cflag & CBAUD) { case B0: Loading Loading @@ -288,23 +286,25 @@ static void ark3116_set_termios(struct usb_serial_port *port, */ if (baud == 460800) /* strange, for 460800 the formula is wrong * (dont use round(), then 9600baud is wrong) */ * if using round() then 9600baud is wrong) */ ark3116_baud = 7; else ark3116_baud = 3000000 / baud; /* ? */ ARK3116_RCV(serial, 0, 0xFE, 0xC0, 0x0000, 0x0003, 0x03, buf); /* offset = buf[0]; */ /* offset = 0x03; */ /* dbg("using 0x%04X as target for 0x0003:", 0x0080 + offset); */ /* set baudrate */ dbg("setting baudrate to %d (->reg=%d)", baud, ark3116_baud); ARK3116_SND(serial, 147, 0xFE, 0x40, 0x0083, 0x0003); ARK3116_SND(serial,148,0xFE,0x40,(ark3116_baud & 0x00FF) ,0x0000); ARK3116_SND(serial,149,0xFE,0x40,(ark3116_baud & 0xFF00)>>8,0x0001); ARK3116_SND(serial, 148, 0xFE, 0x40, (ark3116_baud & 0x00FF), 0x0000); ARK3116_SND(serial, 149, 0xFE, 0x40, (ark3116_baud & 0xFF00) >> 8, 0x0001); ARK3116_SND(serial, 150, 0xFE, 0x40, 0x0003, 0x0003); /* ? */ Loading Loading @@ -369,14 +369,13 @@ static int ark3116_open(struct usb_serial_port *port, struct file *filp) /* returns different values (control lines?!) */ ARK3116_RCV(serial, 124, 0xFE, 0xC0, 0x0000, 0x0006, 0xFF, buf); /* initialise termios: */ /* initialise termios */ if (port->tty) ark3116_set_termios(port, &tmp_termios); kfree(buf); return result; } static int ark3116_ioctl(struct usb_serial_port *port, struct file *file, Loading Loading @@ -429,16 +428,16 @@ static int ark3116_tiocmget(struct usb_serial_port *port, struct file *file) return -ENOMEM; } /* read register: */ /* read register */ ARK3116_RCV_QUIET(serial, 0xFE, 0xC0, 0x0000, 0x0006, buf); temp = buf[0]; kfree(buf); /* i do not really know if bit4=CTS and bit6=DSR... was just a * quick guess !! /* i do not really know if bit4=CTS and bit6=DSR... just a * quick guess! */ return (temp & (1<<4) ? TIOCM_CTS : 0) | (temp & (1<<6) ? TIOCM_DSR : 0); return (temp & (1<<4) ? TIOCM_CTS : 0) | (temp & (1<<6) ? TIOCM_DSR : 0); } static struct usb_driver ark3116_driver = { Loading Loading
drivers/usb/serial/ark3116.c +99 −100 Original line number Diff line number Diff line Loading @@ -68,7 +68,6 @@ static inline void ARK3116_RCV(struct usb_serial *serial, int seq, dbg("%03d < 0 bytes", seq); } static inline void ARK3116_RCV_QUIET(struct usb_serial *serial, __u8 request, __u8 requesttype, __u16 value, __u16 index, char *buf) Loading @@ -79,7 +78,6 @@ static inline void ARK3116_RCV_QUIET(struct usb_serial *serial, buf, 0x0000001, 1000); } static int ark3116_attach(struct usb_serial *serial) { char *buf; Loading Loading @@ -134,7 +132,6 @@ static int ark3116_attach(struct usb_serial *serial) /* --> seq19 */ ARK3116_SND(serial, 19, 0xFE, 0x40, 0x0003, 0x0004); /* <-- seq20 */ /* seems like serial port status info (RTS, CTS, ...) */ /* returns modem control line status?! */ Loading @@ -151,7 +148,7 @@ static int ark3116_attach(struct usb_serial *serial) ARK3116_SND(serial, 154, 0xFE, 0x40, 0x0003, 0x0003); kfree(buf); return(0); return 0; cleanup: for (--i; i >= 0; --i) Loading Loading @@ -183,7 +180,8 @@ static void ark3116_set_termios(struct usb_serial_port *port, spin_lock_irqsave(&priv->lock, flags); if (!priv->termios_initialized) { *(port->tty->termios) = tty_std_termios; port->tty->termios->c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; port->tty->termios->c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; priv->termios_initialized = 1; } spin_unlock_irqrestore(&priv->lock, flags); Loading Loading @@ -223,6 +221,7 @@ static void ark3116_set_termios(struct usb_serial_port *port, break; default: err("CSIZE was set but not CS5-CS8, using CS8!"); /* fall through */ case CS8: config |= 0x03; dbg("setting CS8"); Loading @@ -230,7 +229,7 @@ static void ark3116_set_termios(struct usb_serial_port *port, } } /* set parity (NONE,EVEN,ODD) */ /* set parity (NONE/EVEN/ODD) */ if (cflag & PARENB) { if (cflag & PARODD) { config |= 0x08; Loading @@ -243,7 +242,7 @@ static void ark3116_set_termios(struct usb_serial_port *port, dbg("setting parity to NONE"); } /* SET STOPBIT (1/2) */ /* set stop bit (1/2) */ if (cflag & CSTOPB) { config |= 0x04; dbg("setting 2 stop bits"); Loading @@ -251,8 +250,7 @@ static void ark3116_set_termios(struct usb_serial_port *port, dbg("setting 1 stop bit"); } /* set baudrate: */ /* set baudrate */ baud = 0; switch (cflag & CBAUD) { case B0: Loading Loading @@ -288,23 +286,25 @@ static void ark3116_set_termios(struct usb_serial_port *port, */ if (baud == 460800) /* strange, for 460800 the formula is wrong * (dont use round(), then 9600baud is wrong) */ * if using round() then 9600baud is wrong) */ ark3116_baud = 7; else ark3116_baud = 3000000 / baud; /* ? */ ARK3116_RCV(serial, 0, 0xFE, 0xC0, 0x0000, 0x0003, 0x03, buf); /* offset = buf[0]; */ /* offset = 0x03; */ /* dbg("using 0x%04X as target for 0x0003:", 0x0080 + offset); */ /* set baudrate */ dbg("setting baudrate to %d (->reg=%d)", baud, ark3116_baud); ARK3116_SND(serial, 147, 0xFE, 0x40, 0x0083, 0x0003); ARK3116_SND(serial,148,0xFE,0x40,(ark3116_baud & 0x00FF) ,0x0000); ARK3116_SND(serial,149,0xFE,0x40,(ark3116_baud & 0xFF00)>>8,0x0001); ARK3116_SND(serial, 148, 0xFE, 0x40, (ark3116_baud & 0x00FF), 0x0000); ARK3116_SND(serial, 149, 0xFE, 0x40, (ark3116_baud & 0xFF00) >> 8, 0x0001); ARK3116_SND(serial, 150, 0xFE, 0x40, 0x0003, 0x0003); /* ? */ Loading Loading @@ -369,14 +369,13 @@ static int ark3116_open(struct usb_serial_port *port, struct file *filp) /* returns different values (control lines?!) */ ARK3116_RCV(serial, 124, 0xFE, 0xC0, 0x0000, 0x0006, 0xFF, buf); /* initialise termios: */ /* initialise termios */ if (port->tty) ark3116_set_termios(port, &tmp_termios); kfree(buf); return result; } static int ark3116_ioctl(struct usb_serial_port *port, struct file *file, Loading Loading @@ -429,16 +428,16 @@ static int ark3116_tiocmget(struct usb_serial_port *port, struct file *file) return -ENOMEM; } /* read register: */ /* read register */ ARK3116_RCV_QUIET(serial, 0xFE, 0xC0, 0x0000, 0x0006, buf); temp = buf[0]; kfree(buf); /* i do not really know if bit4=CTS and bit6=DSR... was just a * quick guess !! /* i do not really know if bit4=CTS and bit6=DSR... just a * quick guess! */ return (temp & (1<<4) ? TIOCM_CTS : 0) | (temp & (1<<6) ? TIOCM_DSR : 0); return (temp & (1<<4) ? TIOCM_CTS : 0) | (temp & (1<<6) ? TIOCM_DSR : 0); } static struct usb_driver ark3116_driver = { Loading