tty: USB does not need the filp argument in the drivers
[deliverable/linux.git] / drivers / usb / serial / mos7840.c
index c40f95c1951cf0cf17e8fedc4e8e9f4782324c67..f11abf52be7db6b6e2afb082d86c8abd8fbd49e2 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/errno.h>
 #include <linux/init.h>
 #include <linux/slab.h>
+#include <linux/smp_lock.h>
 #include <linux/tty.h>
 #include <linux/tty_driver.h>
 #include <linux/tty_flip.h>
 #define BANDB_DEVICE_ID_USOPTL4_4       0xAC44
 #define BANDB_DEVICE_ID_USOPTL4_2       0xAC42
 
-/* This driver also supports the ATEN UC2324 device since it is mos7840 based
- *  - if I knew the device id it would also support the ATEN UC2322 */
+/* This driver also supports
+ * ATEN UC2324 device using Moschip MCS7840
+ * ATEN UC2322 device using Moschip MCS7820
+ */
 #define USB_VENDOR_ID_ATENINTL         0x0557
 #define ATENINTL_DEVICE_ID_UC2324      0x2011
+#define ATENINTL_DEVICE_ID_UC2322      0x7820
 
 /* Interrupt Routine Defines    */
 
@@ -176,6 +180,7 @@ static struct usb_device_id moschip_port_id_table[] = {
        {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)},
        {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)},
        {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2324)},
+       {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2322)},
        {}                      /* terminating entry */
 };
 
@@ -185,6 +190,7 @@ static __devinitdata struct usb_device_id moschip_id_table_combined[] = {
        {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)},
        {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)},
        {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2324)},
+       {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2322)},
        {}                      /* terminating entry */
 };
 
@@ -818,8 +824,7 @@ static int mos7840_serial_probe(struct usb_serial *serial,
  *     Otherwise we return a negative error number.
  *****************************************************************************/
 
-static int mos7840_open(struct tty_struct *tty,
-                       struct usb_serial_port *port, struct file *filp)
+static int mos7840_open(struct tty_struct *tty, struct usb_serial_port *port)
 {
        int response;
        int j;
@@ -2127,106 +2132,6 @@ static int mos7840_get_lsr_info(struct tty_struct *tty,
        return 0;
 }
 
-/*****************************************************************************
- * mos7840_set_modem_info
- *      function to set modem info
- *****************************************************************************/
-
-/* FIXME: Should be using the model control hooks */
-
-static int mos7840_set_modem_info(struct moschip_port *mos7840_port,
-                                 unsigned int cmd, unsigned int __user *value)
-{
-       unsigned int mcr;
-       unsigned int arg;
-       __u16 Data;
-       int status;
-       struct usb_serial_port *port;
-
-       if (mos7840_port == NULL)
-               return -1;
-
-       port = (struct usb_serial_port *)mos7840_port->port;
-       if (mos7840_port_paranoia_check(port, __func__)) {
-               dbg("%s", "Invalid port");
-               return -1;
-       }
-
-       mcr = mos7840_port->shadowMCR;
-
-       if (copy_from_user(&arg, value, sizeof(int)))
-               return -EFAULT;
-
-       switch (cmd) {
-       case TIOCMBIS:
-               if (arg & TIOCM_RTS)
-                       mcr |= MCR_RTS;
-               if (arg & TIOCM_DTR)
-                       mcr |= MCR_RTS;
-               if (arg & TIOCM_LOOP)
-                       mcr |= MCR_LOOPBACK;
-               break;
-
-       case TIOCMBIC:
-               if (arg & TIOCM_RTS)
-                       mcr &= ~MCR_RTS;
-               if (arg & TIOCM_DTR)
-                       mcr &= ~MCR_RTS;
-               if (arg & TIOCM_LOOP)
-                       mcr &= ~MCR_LOOPBACK;
-               break;
-
-       case TIOCMSET:
-               /* turn off the RTS and DTR and LOOPBACK
-                * and then only turn on what was asked to */
-               mcr &= ~(MCR_RTS | MCR_DTR | MCR_LOOPBACK);
-               mcr |= ((arg & TIOCM_RTS) ? MCR_RTS : 0);
-               mcr |= ((arg & TIOCM_DTR) ? MCR_DTR : 0);
-               mcr |= ((arg & TIOCM_LOOP) ? MCR_LOOPBACK : 0);
-               break;
-       }
-
-       lock_kernel();
-       mos7840_port->shadowMCR = mcr;
-
-       Data = mos7840_port->shadowMCR;
-       status = mos7840_set_uart_reg(port, MODEM_CONTROL_REGISTER, Data);
-       unlock_kernel();
-       if (status < 0) {
-               dbg("setting MODEM_CONTROL_REGISTER Failed");
-               return -1;
-       }
-
-       return 0;
-}
-
-/*****************************************************************************
- * mos7840_get_modem_info
- *      function to get modem info
- *****************************************************************************/
-
-static int mos7840_get_modem_info(struct moschip_port *mos7840_port,
-                                 unsigned int __user *value)
-{
-       unsigned int result = 0;
-       __u16 msr;
-       unsigned int mcr = mos7840_port->shadowMCR;
-        mos7840_get_uart_reg(mos7840_port->port,
-                                               MODEM_STATUS_REGISTER, &msr);
-       result = ((mcr & MCR_DTR) ? TIOCM_DTR : 0)      /* 0x002 */
-           |((mcr & MCR_RTS) ? TIOCM_RTS : 0)  /* 0x004 */
-           |((msr & MOS7840_MSR_CTS) ? TIOCM_CTS : 0)  /* 0x020 */
-           |((msr & MOS7840_MSR_CD) ? TIOCM_CAR : 0)   /* 0x040 */
-           |((msr & MOS7840_MSR_RI) ? TIOCM_RI : 0)    /* 0x080 */
-           |((msr & MOS7840_MSR_DSR) ? TIOCM_DSR : 0); /* 0x100 */
-
-       dbg("%s -- %x", __func__, result);
-
-       if (copy_to_user(value, &result, sizeof(int)))
-               return -EFAULT;
-       return 0;
-}
-
 /*****************************************************************************
  * mos7840_get_serial_info
  *      function to get information about serial port
@@ -2275,7 +2180,6 @@ static int mos7840_ioctl(struct tty_struct *tty, struct file *file,
        struct async_icount cnow;
        struct async_icount cprev;
        struct serial_icounter_struct icount;
-       int mosret = 0;
 
        if (mos7840_port_paranoia_check(port, __func__)) {
                dbg("%s", "Invalid port");
@@ -2297,20 +2201,6 @@ static int mos7840_ioctl(struct tty_struct *tty, struct file *file,
                return mos7840_get_lsr_info(tty, argp);
                return 0;
 
-       /* FIXME: use the modem hooks and remove this */
-       case TIOCMBIS:
-       case TIOCMBIC:
-       case TIOCMSET:
-               dbg("%s (%d) TIOCMSET/TIOCMBIC/TIOCMSET", __func__,
-                   port->number);
-               mosret =
-                   mos7840_set_modem_info(mos7840_port, cmd, argp);
-               return mosret;
-
-       case TIOCMGET:
-               dbg("%s (%d) TIOCMGET", __func__, port->number);
-               return mos7840_get_modem_info(mos7840_port, argp);
-
        case TIOCGSERIAL:
                dbg("%s (%d) TIOCGSERIAL", __func__, port->number);
                return mos7840_get_serial_info(mos7840_port, argp);
This page took 0.027725 seconds and 5 git commands to generate.