]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/usb/serial/ftdi_sio.c
Fix incorrect use of loose in tty/serial drivers
[linux-2.6-omap-h63xx.git] / drivers / usb / serial / ftdi_sio.c
index 3dc93b542b30634cd23bbbe012b16034c84f6449..aad1359a3eb18719c30dff180f70482b131ae886 100644 (file)
@@ -578,6 +578,7 @@ static struct usb_device_id id_table_combined [] = {
        { USB_DEVICE(FALCOM_VID, FALCOM_TWIST_PID) },
        { USB_DEVICE(FALCOM_VID, FALCOM_SAMBA_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_SUUNTO_SPORTS_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_OCEANIC_PID) },
        { USB_DEVICE(TTI_VID, TTI_QL355P_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_RM_CANVIEW_PID) },
        { USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) },
@@ -860,7 +861,7 @@ static int update_mctrl(struct usb_serial_port *port, unsigned int set,
 
        kfree(buf);
        if (rv < 0) {
-               err("%s Error from MODEM_CTRL urb: DTR %s, RTS %s",
+               dbg("%s Error from MODEM_CTRL urb: DTR %s, RTS %s",
                                __func__,
                                (set & TIOCM_DTR) ? "HIGH" :
                                (clear & TIOCM_DTR) ? "LOW" : "unchanged",
@@ -1153,7 +1154,7 @@ static void ftdi_determine_type(struct usb_serial_port *port)
                /* Assume its an FT232R  */
                priv->chip_type = FT232RL;
        }
-       info("Detected %s", ftdi_chip_name[priv->chip_type]);
+       dev_info(&udev->dev, "Detected %s\n", ftdi_chip_name[priv->chip_type]);
 }
 
 
@@ -1326,7 +1327,7 @@ static int ftdi_sio_port_probe(struct usb_serial_port *port)
 
        priv = kzalloc(sizeof(struct ftdi_private), GFP_KERNEL);
        if (!priv) {
-               err("%s- kmalloc(%Zd) failed.", __func__,
+               dev_err(&port->dev, "%s- kmalloc(%Zd) failed.\n", __func__,
                                        sizeof(struct ftdi_private));
                return -ENOMEM;
        }
@@ -1409,7 +1410,8 @@ static int ftdi_jtag_probe(struct usb_serial *serial)
        dbg("%s", __func__);
 
        if (interface == udev->actconfig->interface[0]) {
-               info("Ignoring serial port reserved for JTAG");
+               dev_info(&udev->dev,
+                        "Ignoring serial port reserved for JTAG\n");
                return -ENODEV;
        }
 
@@ -1427,7 +1429,8 @@ static int ftdi_mtxorb_hack_setup(struct usb_serial *serial)
 
        if (ep->enabled && ep_desc->wMaxPacketSize == 0) {
                ep_desc->wMaxPacketSize = cpu_to_le16(0x40);
-               info("Fixing invalid wMaxPacketSize on read pipe");
+               dev_info(&serial->dev->dev,
+                        "Fixing invalid wMaxPacketSize on read pipe\n");
        }
 
        return 0;
@@ -1495,7 +1498,7 @@ static int ftdi_open(struct tty_struct *tty,
                        priv->interface, buf, 0, WDR_TIMEOUT);
 
        /* Termios defaults are set by usb_serial_init. We don't change
-          port->tty->termios - this would loose speed settings, etc.
+          port->tty->termios - this would lose speed settings, etc.
           This is same behaviour as serial.c/rs_open() - Kuba */
 
        /* ftdi_set_termios  will send usb control messages */
@@ -1521,8 +1524,9 @@ static int ftdi_open(struct tty_struct *tty,
                        ftdi_read_bulk_callback, port);
        result = usb_submit_urb(port->read_urb, GFP_KERNEL);
        if (result)
-               err("%s - failed submitting read urb, error %d",
-                                                       __func__, result);
+               dev_err(&port->dev,
+                       "%s - failed submitting read urb, error %d\n",
+                       __func__, result);
 
 
        return result;
@@ -1556,7 +1560,7 @@ static void ftdi_close(struct tty_struct *tty,
                                    FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE,
                                    0, priv->interface, buf, 0,
                                    WDR_TIMEOUT) < 0) {
-                       err("error from flowcontrol urb");
+                       dev_err(&port->dev, "error from flowcontrol urb\n");
                }
 
                /* drop RTS and DTR */
@@ -1621,14 +1625,15 @@ static int ftdi_write(struct tty_struct *tty, struct usb_serial_port *port,
 
        buffer = kmalloc(transfer_size, GFP_ATOMIC);
        if (!buffer) {
-               err("%s ran out of kernel memory for urb ...", __func__);
+               dev_err(&port->dev,
+                       "%s ran out of kernel memory for urb ...\n", __func__);
                count = -ENOMEM;
                goto error_no_buffer;
        }
 
        urb = usb_alloc_urb(0, GFP_ATOMIC);
        if (!urb) {
-               err("%s - no more free urbs", __func__);
+               dev_err(&port->dev, "%s - no more free urbs\n", __func__);
                count = -ENOMEM;
                goto error_no_urb;
        }
@@ -1672,8 +1677,9 @@ static int ftdi_write(struct tty_struct *tty, struct usb_serial_port *port,
 
        status = usb_submit_urb(urb, GFP_ATOMIC);
        if (status) {
-               err("%s - failed submitting write urb, error %d",
-                                                       __func__, status);
+               dev_err(&port->dev,
+                       "%s - failed submitting write urb, error %d\n",
+                       __func__, status);
                count = status;
                goto error;
        } else {
@@ -1780,7 +1786,8 @@ static int ftdi_chars_in_buffer(struct tty_struct *tty)
        buffered = (int)priv->tx_outstanding_bytes;
        spin_unlock_irqrestore(&priv->tx_lock, flags);
        if (buffered < 0) {
-               err("%s outstanding tx bytes is negative!", __func__);
+               dev_err(&port->dev, "%s outstanding tx bytes is negative!\n",
+                       __func__);
                buffered = 0;
        }
        return buffered;
@@ -1796,11 +1803,12 @@ static void ftdi_read_bulk_callback(struct urb *urb)
        int status = urb->status;
 
        if (urb->number_of_packets > 0) {
-               err("%s transfer_buffer_length %d actual_length %d number of packets %d",
-                               __func__,
-                               urb->transfer_buffer_length,
-                               urb->actual_length, urb->number_of_packets);
-               err("%s transfer_flags %x ", __func__, urb->transfer_flags);
+               dev_err(&port->dev, "%s transfer_buffer_length %d "
+                       "actual_length %d number of packets %d\n", __func__,
+                       urb->transfer_buffer_length,
+                       urb->actual_length, urb->number_of_packets);
+               dev_err(&port->dev, "%s transfer_flags %x\n", __func__,
+                       urb->transfer_flags);
        }
 
        dbg("%s - port %d", __func__, port->number);
@@ -1808,7 +1816,7 @@ static void ftdi_read_bulk_callback(struct urb *urb)
        if (port->port.count <= 0)
                return;
 
-       tty = port->port.tty;
+       tty = tty_port_tty_get(&port->port);
        if (!tty) {
                dbg("%s - bad tty pointer - exiting", __func__);
                return;
@@ -1817,17 +1825,17 @@ static void ftdi_read_bulk_callback(struct urb *urb)
        priv = usb_get_serial_port_data(port);
        if (!priv) {
                dbg("%s - bad port private data pointer - exiting", __func__);
-               return;
+               goto out;
        }
 
        if (urb != port->read_urb)
-               err("%s - Not my urb!", __func__);
+               dev_err(&port->dev, "%s - Not my urb!\n", __func__);
 
        if (status) {
                /* This will happen at close every time so it is a dbg not an
                   err */
                dbg("(this is ok on close) nonzero read bulk status received: %d", status);
-               return;
+               goto out;
        }
 
        /* count data bytes, but not status bytes */
@@ -1838,7 +1846,8 @@ static void ftdi_read_bulk_callback(struct urb *urb)
        spin_unlock_irqrestore(&priv->rx_lock, flags);
 
        ftdi_process_read(&priv->rx_work.work);
-
+out:
+       tty_kref_put(tty);
 } /* ftdi_read_bulk_callback */
 
 
@@ -1863,7 +1872,7 @@ static void ftdi_process_read(struct work_struct *work)
        if (port->port.count <= 0)
                return;
 
-       tty = port->port.tty;
+       tty = tty_port_tty_get(&port->port);
        if (!tty) {
                dbg("%s - bad tty pointer - exiting", __func__);
                return;
@@ -1872,13 +1881,13 @@ static void ftdi_process_read(struct work_struct *work)
        priv = usb_get_serial_port_data(port);
        if (!priv) {
                dbg("%s - bad port private data pointer - exiting", __func__);
-               return;
+               goto out;
        }
 
        urb = port->read_urb;
        if (!urb) {
                dbg("%s - bad read_urb pointer - exiting", __func__);
-               return;
+               goto out;
        }
 
        data = urb->transfer_buffer;
@@ -1923,7 +1932,8 @@ static void ftdi_process_read(struct work_struct *work)
 
                length = min(PKTSZ, urb->actual_length-packet_offset)-2;
                if (length < 0) {
-                       err("%s - bad packet length: %d", __func__, length+2);
+                       dev_err(&port->dev, "%s - bad packet length: %d\n",
+                               __func__, length+2);
                        length = 0;
                }
 
@@ -2020,7 +2030,7 @@ static void ftdi_process_read(struct work_struct *work)
                        schedule_delayed_work(&priv->rx_work, 1);
                else
                        dbg("%s - port is closed", __func__);
-               return;
+               goto out;
        }
 
        /* urb is completely processed */
@@ -2038,9 +2048,12 @@ static void ftdi_process_read(struct work_struct *work)
 
                result = usb_submit_urb(port->read_urb, GFP_ATOMIC);
                if (result)
-                       err("%s - failed resubmitting read urb, error %d",
-                                                       __func__, result);
+                       dev_err(&port->dev,
+                               "%s - failed resubmitting read urb, error %d\n",
+                               __func__, result);
        }
+out:
+       tty_kref_put(tty);
 } /* ftdi_process_read */
 
 
@@ -2066,8 +2079,8 @@ static void ftdi_break_ctl(struct tty_struct *tty, int break_state)
                        FTDI_SIO_SET_DATA_REQUEST_TYPE,
                        urb_value , priv->interface,
                        buf, 0, WDR_TIMEOUT) < 0) {
-               err("%s FAILED to enable/disable break state (state was %d)",
-                                                       __func__, break_state);
+               dev_err(&port->dev, "%s FAILED to enable/disable break state "
+                       "(state was %d)\n", __func__, break_state);
        }
 
        dbg("%s break state is %d - urb is %d", __func__,
@@ -2139,7 +2152,7 @@ static void ftdi_set_termios(struct tty_struct *tty,
                case CS7: urb_value |= 7; dbg("Setting CS7"); break;
                case CS8: urb_value |= 8; dbg("Setting CS8"); break;
                default:
-                       err("CSIZE was set but not CS5-CS8");
+                       dev_err(&port->dev, "CSIZE was set but not CS5-CS8\n");
                }
        }
 
@@ -2152,7 +2165,8 @@ static void ftdi_set_termios(struct tty_struct *tty,
                            FTDI_SIO_SET_DATA_REQUEST_TYPE,
                            urb_value , priv->interface,
                            buf, 0, WDR_SHORT_TIMEOUT) < 0) {
-               err("%s FAILED to set databits/stopbits/parity", __func__);
+               dev_err(&port->dev, "%s FAILED to set "
+                       "databits/stopbits/parity\n", __func__);
        }
 
        /* Now do the baudrate */
@@ -2163,14 +2177,17 @@ static void ftdi_set_termios(struct tty_struct *tty,
                                    FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE,
                                    0, priv->interface,
                                    buf, 0, WDR_TIMEOUT) < 0) {
-                       err("%s error from disable flowcontrol urb", __func__);
+                       dev_err(&port->dev,
+                               "%s error from disable flowcontrol urb\n",
+                               __func__);
                }
                /* Drop RTS and DTR */
                clear_mctrl(port, TIOCM_DTR | TIOCM_RTS);
        } else {
                /* set the baudrate determined before */
                if (change_speed(tty, port))
-                       err("%s urb failed to set baudrate", __func__);
+                       dev_err(&port->dev, "%s urb failed to set baudrate\n",
+                               __func__);
                /* Ensure RTS and DTR are raised when baudrate changed from 0 */
                if (!old_termios || (old_termios->c_cflag & CBAUD) == B0)
                        set_mctrl(port, TIOCM_DTR | TIOCM_RTS);
@@ -2186,7 +2203,8 @@ static void ftdi_set_termios(struct tty_struct *tty,
                                    FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE,
                                    0 , (FTDI_SIO_RTS_CTS_HS | priv->interface),
                                    buf, 0, WDR_TIMEOUT) < 0) {
-                       err("urb failed to set to rts/cts flow control");
+                       dev_err(&port->dev,
+                               "urb failed to set to rts/cts flow control\n");
                }
 
        } else {
@@ -2217,7 +2235,8 @@ static void ftdi_set_termios(struct tty_struct *tty,
                                            urb_value , (FTDI_SIO_XON_XOFF_HS
                                                         | priv->interface),
                                            buf, 0, WDR_TIMEOUT) < 0) {
-                               err("urb failed to set to xon/xoff flow control");
+                               dev_err(&port->dev, "urb failed to set to "
+                                       "xon/xoff flow control\n");
                        }
                } else {
                        /* else clause to only run if cflag ! CRTSCTS and iflag
@@ -2230,7 +2249,8 @@ static void ftdi_set_termios(struct tty_struct *tty,
                                            FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE,
                                            0, priv->interface,
                                            buf, 0, WDR_TIMEOUT) < 0) {
-                               err("urb failed to clear flow control");
+                               dev_err(&port->dev,
+                                       "urb failed to clear flow control\n");
                        }
                }
 
@@ -2256,7 +2276,7 @@ static int ftdi_tiocmget(struct tty_struct *tty, struct file *file)
                           0, 0,
                           buf, 1, WDR_TIMEOUT);
                if (ret < 0) {
-                       err("%s Could not get modem status of device - err: %d", __func__,
+                       dbg("%s Could not get modem status of device - err: %d", __func__,
                            ret);
                        return ret;
                }
@@ -2275,7 +2295,7 @@ static int ftdi_tiocmget(struct tty_struct *tty, struct file *file)
                                   0, priv->interface,
                                   buf, 2, WDR_TIMEOUT);
                if (ret < 0) {
-                       err("%s Could not get modem status of device - err: %d", __func__,
+                       dbg("%s Could not get modem status of device - err: %d", __func__,
                            ret);
                        return ret;
                }
@@ -2422,7 +2442,8 @@ static int __init ftdi_init(void)
        if (retval)
                goto failed_usb_register;
 
-       info(DRIVER_VERSION ":" DRIVER_DESC);
+       printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"
+              DRIVER_DESC "\n");
        return 0;
 failed_usb_register:
        usb_serial_deregister(&ftdi_sio_device);
@@ -2455,5 +2476,5 @@ module_param(vendor, ushort, 0);
 MODULE_PARM_DESC(vendor, "User specified vendor ID (default="
                __MODULE_STRING(FTDI_VID)")");
 module_param(product, ushort, 0);
-MODULE_PARM_DESC(vendor, "User specified product ID");
+MODULE_PARM_DESC(product, "User specified product ID");