USB: symbolserial: log the ioctl commands
authorGreg Kroah-Hartman <gregkh@suse.de>
Sat, 21 Mar 2009 03:26:30 +0000 (20:26 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 24 Mar 2009 23:20:32 +0000 (16:20 -0700)
We need to figure out what userspace programs are expecting from this
driver, so log them so we can try to get it right.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/serial/symbolserial.c

index c5990fd..8b3cbc8 100644 (file)
@@ -205,6 +205,62 @@ static void symbol_unthrottle(struct tty_struct *tty)
                                                        __func__, result);
 }
 
+static int symbol_ioctl(struct tty_struct *tty, struct file *file,
+                       unsigned int cmd, unsigned long arg)
+{
+       struct usb_serial_port *port = tty->driver_data;
+       struct device *dev = &port->dev;
+
+       /*
+        * Right now we need to figure out what commands
+        * most userspace tools want to see for this driver,
+        * so just log the things.
+        */
+       switch (cmd) {
+       case TIOCSERGETLSR:
+               dev_info(dev, "%s: TIOCSERGETLSR\n", __func__);
+               break;
+
+       case TIOCGSERIAL:
+               dev_info(dev, "%s: TIOCGSERIAL\n", __func__);
+               break;
+
+       case TIOCMIWAIT:
+               dev_info(dev, "%s: TIOCMIWAIT\n", __func__);
+               break;
+
+       case TIOCGICOUNT:
+               dev_info(dev, "%s: TIOCGICOUNT\n", __func__);
+               break;
+       default:
+               dev_info(dev, "%s: unknown (%d)\n", __func__, cmd);
+       }
+       return -ENOIOCTLCMD;
+}
+
+static int symbol_tiocmget(struct tty_struct *tty, struct file *file)
+{
+       struct usb_serial_port *port = tty->driver_data;
+       struct device *dev = &port->dev;
+
+       /* TODO */
+       /* probably just need to shadow whatever was sent to us here */
+       dev_info(dev, "%s\n", __func__);
+       return 0;
+}
+
+static int symbol_tiocmset(struct tty_struct *tty, struct file *file,
+                          unsigned int set, unsigned int clear)
+{
+       struct usb_serial_port *port = tty->driver_data;
+       struct device *dev = &port->dev;
+
+       /* TODO */
+       /* probably just need to shadow whatever was sent to us here */
+       dev_info(dev, "%s\n", __func__);
+       return 0;
+}
+
 static int symbol_startup(struct usb_serial *serial)
 {
        struct symbol_private *priv;
@@ -311,6 +367,9 @@ static struct usb_serial_driver symbol_device = {
        .shutdown =             symbol_shutdown,
        .throttle =             symbol_throttle,
        .unthrottle =           symbol_unthrottle,
+       .ioctl =                symbol_ioctl,
+       .tiocmget =             symbol_tiocmget,
+       .tiocmset =             symbol_tiocmset,
 };
 
 static int __init symbol_init(void)