Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
[pandora-kernel.git] / drivers / usb / serial / ftdi_sio.c
index 97cc87d..37b57c7 100644 (file)
@@ -177,6 +177,7 @@ static struct usb_device_id id_table_combined [] = {
        { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_SNIFFER_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_THROTTLE_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_GATEWAY_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_GBM_PID) },
        { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) },
        { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_SPROG_II) },
@@ -674,7 +675,6 @@ static struct usb_device_id id_table_combined [] = {
        { USB_DEVICE(FTDI_VID, FTDI_RRCIRKITS_LOCOBUFFER_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) },
        { USB_DEVICE(ICOM_ID1_VID, ICOM_ID1_PID) },
-       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_TMU_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_ACG_HFDUAL_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_YEI_SERVOCENTER31_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_THORLABS_PID) },
@@ -715,8 +715,37 @@ static struct usb_device_id id_table_combined [] = {
                .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
        { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
        { USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) },
+
+       /* Papouch devices based on FTDI chip */
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_AP485_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB422_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485_2_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_AP485_2_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB422_2_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485S_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB485C_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_LEC_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SB232_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_TMU_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_IRAMP_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_DRAK5_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO8x8_PID) },
        { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO4x4_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO2x2_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO10x1_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO30x3_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO60x3_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO2x16_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO3x32_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_DRAK6_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_UPSUSB_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_MU_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_SIMUKEY_PID) },
        { USB_DEVICE(PAPOUCH_VID, PAPOUCH_AD4USB_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_GMUX_PID) },
+       { USB_DEVICE(PAPOUCH_VID, PAPOUCH_GMSR_PID) },
+
        { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DGQG_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DUSB_PID) },
        { USB_DEVICE(ALTI2_VID, ALTI2_N3_PID) },
@@ -751,6 +780,7 @@ static struct usb_device_id id_table_combined [] = {
        { USB_DEVICE(FTDI_VID, XVERVE_SIGNALYZER_SH4_PID),
                .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
        { USB_DEVICE(FTDI_VID, SEGWAY_RMP200_PID) },
+       { USB_DEVICE(FTDI_VID, ACCESIO_COM4SM_PID) },
        { USB_DEVICE(IONICS_VID, IONICS_PLUGCOMPUTER_PID),
                .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
        { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_24_MASTER_WING_PID) },
@@ -761,6 +791,9 @@ static struct usb_device_id id_table_combined [] = {
        { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_MAXI_WING_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_MEDIA_WING_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_WING_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_LOGBOOKML_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_LS_LOGBOOK_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_SCIENCESCOPE_HS_LOGBOOK_PID) },
        { },                                    /* Optional parameter entry */
        { }                                     /* Terminating entry */
 };
@@ -1559,6 +1592,7 @@ static int ftdi_sio_port_probe(struct usb_serial_port *port)
        ftdi_set_max_packet_size(port);
        if (read_latency_timer(port) < 0)
                priv->latency = 16;
+       write_latency_timer(port);
        create_sysfs_attrs(port);
        return 0;
 }
@@ -1687,8 +1721,6 @@ static int ftdi_open(struct tty_struct *tty, struct usb_serial_port *port)
 
        dbg("%s", __func__);
 
-       write_latency_timer(port);
-
        /* No error checking for this (will get errors later anyway) */
        /* See ftdi_sio.h for description of what is reset */
        usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
@@ -2028,8 +2060,6 @@ static void ftdi_set_termios(struct tty_struct *tty,
                                "urb failed to set to rts/cts flow control\n");
                }
 
-               /* raise DTR/RTS */
-               set_mctrl(port, TIOCM_DTR | TIOCM_RTS);
        } else {
                /*
                 * Xon/Xoff code
@@ -2077,8 +2107,6 @@ static void ftdi_set_termios(struct tty_struct *tty,
                        }
                }
 
-               /* lower DTR/RTS */
-               clear_mctrl(port, TIOCM_DTR | TIOCM_RTS);
        }
        return;
 }
@@ -2168,6 +2196,7 @@ static int ftdi_ioctl(struct tty_struct *tty, struct file *file,
         * - mask passed in arg for lines of interest
         *   (use |'ed TIOCM_RNG/DSR/CD/CTS for masking)
         * Caller should use TIOCGICOUNT to see which one it was.
+        * (except that the driver doesn't support it !)
         *
         * This code is borrowed from linux/drivers/char/serial.c
         */