From 0cba5134652ac3c8429d564e6292169c22fa3fa5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 31 Mar 2014 16:52:33 +0200 Subject: [PATCH] more and more equal --- cp2104.c | 158 ++++++++++++++++++++++---------------------------- cp2104_3.10.c | 20 +++---- cp2104_3.6.c | 17 ++---- 3 files changed, 84 insertions(+), 111 deletions(-) diff --git a/cp2104.c b/cp2104.c index 431126d..1ac2e80 100644 --- a/cp2104.c +++ b/cp2104.c @@ -24,21 +24,16 @@ #include #include -/* - * Version Information - */ -#define DRIVER_VERSION "v0.10" -#define DRIVER_DESC "Silicon Labs CP210x RS232 serial adaptor driver (GPIO version)" +#define DRIVER_DESC "Silicon Labs CP210x RS232 serial adaptor driver (with GPIO support)" /* * Function Prototypes */ static int cp210x_open(struct tty_struct *tty, struct usb_serial_port *); static void cp210x_close(struct usb_serial_port *); -static void cp210x_get_termios(struct tty_struct *, - struct usb_serial_port *port); static int cp210x_ioctl(struct tty_struct *tty, - unsigned int cmd, unsigned long arg); + unsigned int cmd, unsigned long arg); +static void cp210x_get_termios(struct tty_struct *, struct usb_serial_port *); static void cp210x_get_termios_port(struct usb_serial_port *port, unsigned int *cflagp, unsigned int *baudp); static void cp210x_change_speed(struct tty_struct *, struct usb_serial_port *, @@ -54,8 +49,6 @@ static int cp210x_startup(struct usb_serial *); static void cp210x_release(struct usb_serial *); static void cp210x_dtr_rts(struct usb_serial_port *p, int on); -static bool debug; - static const struct usb_device_id id_table[] = { { USB_DEVICE(0x045B, 0x0053) }, /* Renesas RX610 RX-Stick */ { USB_DEVICE(0x0471, 0x066A) }, /* AKTAKOM ACE-1001 cable */ @@ -352,9 +345,8 @@ static int cp210x_get_config(struct usb_serial_port *port, u8 request, kfree(buf); if (result != size) { - dbg("%s - Unable to send config request, " - "request=0x%x size=%d result=%d", - __func__, request, size, result); + dev_dbg(&port->dev, "%s - Unable to send config request, request=0x%x size=%d result=%d\n", + __func__, request, size, result); if (result > 0) result = -EPROTO; @@ -408,9 +400,8 @@ static int cp210x_set_config(struct usb_serial_port *port, u8 request, kfree(buf); if ((size > 2 && result != size) || result < 0) { - dbg("%s - Unable to send request, " - "request=0x%x size=%d result=%d", - __func__, request, size, result); + dev_dbg(&port->dev, "%s - Unable to send request, request=0x%x size=%d result=%d\n", + __func__, request, size, result); if (result > 0) result = -EPROTO; @@ -497,11 +488,7 @@ static int cp210x_open(struct tty_struct *tty, struct usb_serial_port *port) static void cp210x_close(struct usb_serial_port *port) { usb_serial_generic_close(port); - - mutex_lock(&port->serial->disc_mutex); - if (!port->serial->disconnected) - cp210x_set_config_single(port, CP210X_IFC_ENABLE, UART_DISABLE); - mutex_unlock(&port->serial->disc_mutex); + cp210x_set_config_single(port, CP210X_IFC_ENABLE, UART_DISABLE); } static int cp210x_ioctl(struct tty_struct *tty, @@ -607,7 +594,7 @@ static void cp210x_get_termios(struct tty_struct *tty, if (tty) { cp210x_get_termios_port(tty->driver_data, - &tty->termios->c_cflag, &baud); + &tty->termios.c_cflag, &baud); tty_encode_baud_rate(tty, baud, baud); } else { unsigned int cflag; @@ -623,13 +610,14 @@ static void cp210x_get_termios(struct tty_struct *tty, static void cp210x_get_termios_port(struct usb_serial_port *port, unsigned int *cflagp, unsigned int *baudp) { + struct device *dev = &port->dev; unsigned int cflag, modem_ctl[4]; unsigned int baud; unsigned int bits; cp210x_get_config(port, CP210X_GET_BAUDRATE, &baud, 4); - dbg("%s - baud rate = %d", __func__, baud); + dev_dbg(dev, "%s - baud rate = %d\n", __func__, baud); *baudp = baud; cflag = *cflagp; @@ -638,31 +626,30 @@ static void cp210x_get_termios_port(struct usb_serial_port *port, cflag &= ~CSIZE; switch (bits & BITS_DATA_MASK) { case BITS_DATA_5: - dbg("%s - data bits = 5", __func__); + dev_dbg(dev, "%s - data bits = 5\n", __func__); cflag |= CS5; break; case BITS_DATA_6: - dbg("%s - data bits = 6", __func__); + dev_dbg(dev, "%s - data bits = 6\n", __func__); cflag |= CS6; break; case BITS_DATA_7: - dbg("%s - data bits = 7", __func__); + dev_dbg(dev, "%s - data bits = 7\n", __func__); cflag |= CS7; break; case BITS_DATA_8: - dbg("%s - data bits = 8", __func__); + dev_dbg(dev, "%s - data bits = 8\n", __func__); cflag |= CS8; break; case BITS_DATA_9: - dbg("%s - data bits = 9 (not supported, using 8 data bits)", - __func__); + dev_dbg(dev, "%s - data bits = 9 (not supported, using 8 data bits)\n", __func__); cflag |= CS8; bits &= ~BITS_DATA_MASK; bits |= BITS_DATA_8; cp210x_set_config(port, CP210X_SET_LINE_CTL, &bits, 2); break; default: - dbg("%s - Unknown number of data bits, using 8", __func__); + dev_dbg(dev, "%s - Unknown number of data bits, using 8\n", __func__); cflag |= CS8; bits &= ~BITS_DATA_MASK; bits |= BITS_DATA_8; @@ -672,29 +659,29 @@ static void cp210x_get_termios_port(struct usb_serial_port *port, switch (bits & BITS_PARITY_MASK) { case BITS_PARITY_NONE: - dbg("%s - parity = NONE", __func__); + dev_dbg(dev, "%s - parity = NONE\n", __func__); cflag &= ~PARENB; break; case BITS_PARITY_ODD: - dbg("%s - parity = ODD", __func__); + dev_dbg(dev, "%s - parity = ODD\n", __func__); cflag |= (PARENB|PARODD); break; case BITS_PARITY_EVEN: - dbg("%s - parity = EVEN", __func__); + dev_dbg(dev, "%s - parity = EVEN\n", __func__); cflag &= ~PARODD; cflag |= PARENB; break; case BITS_PARITY_MARK: - dbg("%s - parity = MARK", __func__); + dev_dbg(dev, "%s - parity = MARK\n", __func__); cflag |= (PARENB|PARODD|CMSPAR); break; case BITS_PARITY_SPACE: - dbg("%s - parity = SPACE", __func__); + dev_dbg(dev, "%s - parity = SPACE\n", __func__); cflag &= ~PARODD; cflag |= (PARENB|CMSPAR); break; default: - dbg("%s - Unknown parity mode, disabling parity", __func__); + dev_dbg(dev, "%s - Unknown parity mode, disabling parity\n", __func__); cflag &= ~PARENB; bits &= ~BITS_PARITY_MASK; cp210x_set_config(port, CP210X_SET_LINE_CTL, &bits, 2); @@ -704,21 +691,19 @@ static void cp210x_get_termios_port(struct usb_serial_port *port, cflag &= ~CSTOPB; switch (bits & BITS_STOP_MASK) { case BITS_STOP_1: - dbg("%s - stop bits = 1", __func__); + dev_dbg(dev, "%s - stop bits = 1\n", __func__); break; case BITS_STOP_1_5: - dbg("%s - stop bits = 1.5 (not supported, using 1 stop bit)", - __func__); + dev_dbg(dev, "%s - stop bits = 1.5 (not supported, using 1 stop bit)\n", __func__); bits &= ~BITS_STOP_MASK; cp210x_set_config(port, CP210X_SET_LINE_CTL, &bits, 2); break; case BITS_STOP_2: - dbg("%s - stop bits = 2", __func__); + dev_dbg(dev, "%s - stop bits = 2\n", __func__); cflag |= CSTOPB; break; default: - dbg("%s - Unknown number of stop bits, using 1 stop bit", - __func__); + dev_dbg(dev, "%s - Unknown number of stop bits, using 1 stop bit\n", __func__); bits &= ~BITS_STOP_MASK; cp210x_set_config(port, CP210X_SET_LINE_CTL, &bits, 2); break; @@ -726,10 +711,10 @@ static void cp210x_get_termios_port(struct usb_serial_port *port, cp210x_get_config(port, CP210X_GET_FLOW, modem_ctl, 16); if (modem_ctl[0] & 0x0008) { - dbg("%s - flow control = CRTSCTS", __func__); + dev_dbg(dev, "%s - flow control = CRTSCTS\n", __func__); cflag |= CRTSCTS; } else { - dbg("%s - flow control = NONE", __func__); + dev_dbg(dev, "%s - flow control = NONE\n", __func__); cflag &= ~CRTSCTS; } @@ -767,7 +752,7 @@ static void cp210x_change_speed(struct tty_struct *tty, { u32 baud; - baud = tty->termios->c_ospeed; + baud = tty->termios.c_ospeed; /* This maps the requested rate to a rate valid on cp2102 or cp2103, * or to an arbitrary rate in [1M,2M]. @@ -776,7 +761,7 @@ static void cp210x_change_speed(struct tty_struct *tty, */ baud = cp210x_quantise_baudrate(baud); - dbg("%s - setting baud rate to %u", __func__, baud); + dev_dbg(&port->dev, "%s - setting baud rate to %u\n", __func__, baud); if (cp210x_set_config(port, CP210X_SET_BAUDRATE, &baud, sizeof(baud))) { dev_warn(&port->dev, "failed to set baud rate to %u\n", baud); @@ -792,19 +777,20 @@ static void cp210x_change_speed(struct tty_struct *tty, static void cp210x_set_termios(struct tty_struct *tty, struct usb_serial_port *port, struct ktermios *old_termios) { + struct device *dev = &port->dev; unsigned int cflag, old_cflag; unsigned int bits; unsigned int modem_ctl[4]; - dbg("%s - port %d", __func__, port->number); + /* dev_dbg(dev, "%s - port %d\n", __func__, port->number); */ if (!tty) return; - cflag = tty->termios->c_cflag; + cflag = tty->termios.c_cflag; old_cflag = old_termios->c_cflag; - if (tty->termios->c_ospeed != old_termios->c_ospeed) + if (tty->termios.c_ospeed != old_termios->c_ospeed) cp210x_change_speed(tty, port, old_termios); /* If the number of data bits is to be updated */ @@ -814,34 +800,31 @@ static void cp210x_set_termios(struct tty_struct *tty, switch (cflag & CSIZE) { case CS5: bits |= BITS_DATA_5; - dbg("%s - data bits = 5", __func__); + dev_dbg(dev, "%s - data bits = 5\n", __func__); break; case CS6: bits |= BITS_DATA_6; - dbg("%s - data bits = 6", __func__); + dev_dbg(dev, "%s - data bits = 6\n", __func__); break; case CS7: bits |= BITS_DATA_7; - dbg("%s - data bits = 7", __func__); + dev_dbg(dev, "%s - data bits = 7\n", __func__); break; case CS8: bits |= BITS_DATA_8; - dbg("%s - data bits = 8", __func__); + dev_dbg(dev, "%s - data bits = 8\n", __func__); break; /*case CS9: bits |= BITS_DATA_9; - dbg("%s - data bits = 9", __func__); + dev_dbg(dev, "%s - data bits = 9\n", __func__); break;*/ default: - dbg("cp210x driver does not " - "support the number of bits requested," - " using 8 bit mode"); - bits |= BITS_DATA_8; - break; + dev_dbg(dev, "cp210x driver does not support the number of bits requested, using 8 bit mode\n"); + bits |= BITS_DATA_8; + break; } if (cp210x_set_config(port, CP210X_SET_LINE_CTL, &bits, 2)) - dbg("Number of data bits requested " - "not supported by device"); + dev_dbg(dev, "Number of data bits requested not supported by device\n"); } if ((cflag & (PARENB|PARODD|CMSPAR)) != @@ -852,23 +835,23 @@ static void cp210x_set_termios(struct tty_struct *tty, if (cflag & CMSPAR) { if (cflag & PARODD) { bits |= BITS_PARITY_MARK; - dbg("%s - parity = MARK", __func__); + dev_dbg(dev, "%s - parity = MARK\n", __func__); } else { bits |= BITS_PARITY_SPACE; - dbg("%s - parity = SPACE", __func__); + dev_dbg(dev, "%s - parity = SPACE\n", __func__); } } else { if (cflag & PARODD) { bits |= BITS_PARITY_ODD; - dbg("%s - parity = ODD", __func__); + dev_dbg(dev, "%s - parity = ODD\n", __func__); } else { bits |= BITS_PARITY_EVEN; - dbg("%s - parity = EVEN", __func__); + dev_dbg(dev, "%s - parity = EVEN\n", __func__); } } } if (cp210x_set_config(port, CP210X_SET_LINE_CTL, &bits, 2)) - dbg("Parity mode not supported by device"); + dev_dbg(dev, "Parity mode not supported by device\n"); } if ((cflag & CSTOPB) != (old_cflag & CSTOPB)) { @@ -876,43 +859,42 @@ static void cp210x_set_termios(struct tty_struct *tty, bits &= ~BITS_STOP_MASK; if (cflag & CSTOPB) { bits |= BITS_STOP_2; - dbg("%s - stop bits = 2", __func__); + dev_dbg(dev, "%s - stop bits = 2\n", __func__); } else { bits |= BITS_STOP_1; - dbg("%s - stop bits = 1", __func__); + dev_dbg(dev, "%s - stop bits = 1\n", __func__); } if (cp210x_set_config(port, CP210X_SET_LINE_CTL, &bits, 2)) - dbg("Number of stop bits requested " - "not supported by device"); + dev_dbg(dev, "Number of stop bits requested not supported by device\n"); } if ((cflag & CRTSCTS) != (old_cflag & CRTSCTS)) { cp210x_get_config(port, CP210X_GET_FLOW, modem_ctl, 16); - dbg("%s - read modem controls = 0x%.4x 0x%.4x 0x%.4x 0x%.4x", - __func__, modem_ctl[0], modem_ctl[1], - modem_ctl[2], modem_ctl[3]); + dev_dbg(dev, "%s - read modem controls = 0x%.4x 0x%.4x 0x%.4x 0x%.4x\n", + __func__, modem_ctl[0], modem_ctl[1], + modem_ctl[2], modem_ctl[3]); if (cflag & CRTSCTS) { modem_ctl[0] &= ~0x7B; modem_ctl[0] |= 0x09; modem_ctl[1] = 0x80; - dbg("%s - flow control = CRTSCTS", __func__); + dev_dbg(dev, "%s - flow control = CRTSCTS\n", __func__); } else { modem_ctl[0] &= ~0x7B; modem_ctl[0] |= 0x01; modem_ctl[1] |= 0x40; - dbg("%s - flow control = NONE", __func__); + dev_dbg(dev, "%s - flow control = NONE\n", __func__); } - dbg("%s - write modem controls = 0x%.4x 0x%.4x 0x%.4x 0x%.4x", - __func__, modem_ctl[0], modem_ctl[1], - modem_ctl[2], modem_ctl[3]); + dev_dbg(dev, "%s - write modem controls = 0x%.4x 0x%.4x 0x%.4x 0x%.4x\n", + __func__, modem_ctl[0], modem_ctl[1], + modem_ctl[2], modem_ctl[3]); cp210x_set_config(port, CP210X_SET_FLOW, modem_ctl, 16); } } -static int cp210x_tiocmset (struct tty_struct *tty, +static int cp210x_tiocmset(struct tty_struct *tty, unsigned int set, unsigned int clear) { struct usb_serial_port *port = tty->driver_data; @@ -941,7 +923,7 @@ static int cp210x_tiocmset_port(struct usb_serial_port *port, control |= CONTROL_WRITE_DTR; } - dbg("%s - control = 0x%.4x", __func__, control); + dev_dbg(&port->dev, "%s - control = 0x%.4x\n", __func__, control); return cp210x_set_config(port, CP210X_SET_MHS, &control, 2); } @@ -954,7 +936,7 @@ static void cp210x_dtr_rts(struct usb_serial_port *p, int on) cp210x_tiocmset_port(p, 0, TIOCM_DTR|TIOCM_RTS); } -static int cp210x_tiocmget (struct tty_struct *tty) +static int cp210x_tiocmget(struct tty_struct *tty) { struct usb_serial_port *port = tty->driver_data; unsigned int control; @@ -969,12 +951,12 @@ static int cp210x_tiocmget (struct tty_struct *tty) |((control & CONTROL_RING)? TIOCM_RI : 0) |((control & CONTROL_DCD) ? TIOCM_CD : 0); - dbg("%s - control = 0x%.2x", __func__, control); + dev_dbg(&port->dev, "%s - control = 0x%.2x\n", __func__, control); return result; } -static void cp210x_break_ctl (struct tty_struct *tty, int break_state) +static void cp210x_break_ctl(struct tty_struct *tty, int break_state) { struct usb_serial_port *port = tty->driver_data; unsigned int state; @@ -983,8 +965,8 @@ static void cp210x_break_ctl (struct tty_struct *tty, int break_state) state = BREAK_OFF; else state = BREAK_ON; - dbg("%s - turning break %s", __func__, - state == BREAK_OFF ? "off" : "on"); + dev_dbg(&port->dev, "%s - turning break %s\n", __func__, + state == BREAK_OFF ? "off" : "on"); cp210x_set_config(port, CP210X_SET_BREAK, &state, 2); } @@ -1007,7 +989,7 @@ static int cp210x_startup(struct usb_serial *serial) usb_set_serial_data(serial, spriv); /* Get the 1-byte part number of the cp210x device */ - //cp210x_get_config(serial->port[i], CP210X_VENDOR_SPECIFIC, &partNum, 1); + usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), CP210X_VENDOR_SPECIFIC, @@ -1032,8 +1014,4 @@ static void cp210x_release(struct usb_serial *serial) module_usb_serial_driver(serial_drivers, id_table); MODULE_DESCRIPTION(DRIVER_DESC); -MODULE_VERSION(DRIVER_VERSION); MODULE_LICENSE("GPL"); - -module_param(debug, bool, S_IRUGO | S_IWUSR); -MODULE_PARM_DESC(debug, "Enable verbose debugging messages"); diff --git a/cp2104_3.10.c b/cp2104_3.10.c index f48c98d..883e807 100644 --- a/cp2104_3.10.c +++ b/cp2104_3.10.c @@ -496,34 +496,34 @@ static int cp210x_ioctl(struct tty_struct *tty, { struct usb_serial_port *port = tty->driver_data; struct usb_serial *serial = port->serial; - struct cp210x_serial_private *port_priv = usb_get_serial_data(serial); + struct cp210x_serial_private *spriv = usb_get_serial_data(serial); int result = 0; unsigned int latch_setting = 0; switch (cmd) { case IOCTL_GPIOGET: - if ((port_priv->bPartNumber == CP2103_PARTNUM) || - (port_priv->bPartNumber == CP2104_PARTNUM)) { + if ((spriv->bPartNumber == CP2103_PARTNUM) || + (spriv->bPartNumber == CP2104_PARTNUM)) { result = usb_control_msg(port->serial->dev, usb_rcvctrlpipe(port->serial->dev, 0), CP210X_VENDOR_SPECIFIC, REQTYPE_DEVICE_TO_HOST, CP210X_READ_LATCH, - port_priv->bInterfaceNumber, + spriv->bInterfaceNumber, &latch_setting, 1, USB_CTRL_GET_TIMEOUT); if (result != 1) return -EPROTO; *(unsigned long *)arg = (unsigned long)latch_setting; return 0; - } else if (port_priv->bPartNumber == CP2105_PARTNUM) { + } else if (spriv->bPartNumber == CP2105_PARTNUM) { result = usb_control_msg(port->serial->dev, usb_rcvctrlpipe(port->serial->dev, 0), CP210X_VENDOR_SPECIFIC, REQTYPE_INTERFACE_TO_HOST, CP210X_READ_LATCH, - port_priv->bInterfaceNumber, + spriv->bInterfaceNumber, &latch_setting, 1, USB_CTRL_GET_TIMEOUT); if (result != 1) @@ -536,8 +536,8 @@ static int cp210x_ioctl(struct tty_struct *tty, break; case IOCTL_GPIOSET: - if ((port_priv->bPartNumber == CP2103_PARTNUM) || - (port_priv->bPartNumber == CP2104_PARTNUM)) { + if ((spriv->bPartNumber == CP2103_PARTNUM) || + (spriv->bPartNumber == CP2104_PARTNUM)) { latch_setting = *(unsigned int *)arg & 0x000000FF; latch_setting |= @@ -553,7 +553,7 @@ static int cp210x_ioctl(struct tty_struct *tty, if (result != 0) return -EPROTO; return 0; - } else if (port_priv->bPartNumber == CP2105_PARTNUM) { + } else if (spriv->bPartNumber == CP2105_PARTNUM) { latch_setting = *(unsigned int *)arg & 0x000000FF; latch_setting |= @@ -563,7 +563,7 @@ static int cp210x_ioctl(struct tty_struct *tty, CP210X_VENDOR_SPECIFIC, REQTYPE_HOST_TO_INTERFACE, CP210X_WRITE_LATCH, - port_priv->bInterfaceNumber, + spriv->bInterfaceNumber, &latch_setting, 2, USB_CTRL_SET_TIMEOUT); if (result != 2) diff --git a/cp2104_3.6.c b/cp2104_3.6.c index 431126d..116a7d7 100644 --- a/cp2104_3.6.c +++ b/cp2104_3.6.c @@ -35,10 +35,9 @@ */ static int cp210x_open(struct tty_struct *tty, struct usb_serial_port *); static void cp210x_close(struct usb_serial_port *); -static void cp210x_get_termios(struct tty_struct *, - struct usb_serial_port *port); static int cp210x_ioctl(struct tty_struct *tty, - unsigned int cmd, unsigned long arg); + unsigned int cmd, unsigned long arg); +static void cp210x_get_termios(struct tty_struct *, struct usb_serial_port *); static void cp210x_get_termios_port(struct usb_serial_port *port, unsigned int *cflagp, unsigned int *baudp); static void cp210x_change_speed(struct tty_struct *, struct usb_serial_port *, @@ -352,9 +351,8 @@ static int cp210x_get_config(struct usb_serial_port *port, u8 request, kfree(buf); if (result != size) { - dbg("%s - Unable to send config request, " - "request=0x%x size=%d result=%d", - __func__, request, size, result); + dbg("%s - Unable to send config request, " "request=0x%x size=%d result=%d", + __func__, request, size, result); if (result > 0) result = -EPROTO; @@ -408,9 +406,8 @@ static int cp210x_set_config(struct usb_serial_port *port, u8 request, kfree(buf); if ((size > 2 && result != size) || result < 0) { - dbg("%s - Unable to send request, " - "request=0x%x size=%d result=%d", - __func__, request, size, result); + dbg("%s - Unable to send request, " "request=0x%x size=%d result=%d", + __func__, request, size, result); if (result > 0) result = -EPROTO; @@ -708,7 +705,6 @@ static void cp210x_get_termios_port(struct usb_serial_port *port, break; case BITS_STOP_1_5: dbg("%s - stop bits = 1.5 (not supported, using 1 stop bit)", - __func__); bits &= ~BITS_STOP_MASK; cp210x_set_config(port, CP210X_SET_LINE_CTL, &bits, 2); break; @@ -718,7 +714,6 @@ static void cp210x_get_termios_port(struct usb_serial_port *port, break; default: dbg("%s - Unknown number of stop bits, using 1 stop bit", - __func__); bits &= ~BITS_STOP_MASK; cp210x_set_config(port, CP210X_SET_LINE_CTL, &bits, 2); break;