Преглед изворни кода

USB: serial: add tiocmiwait subdriver operation

Add tiocmiwait operation to struct usb_serial_driver.

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Johan Hovold пре 12 година
родитељ
комит
143d9d9616
2 измењених фајлова са 12 додато и 4 уклоњено
  1. 11 4
      drivers/usb/serial/usb-serial.c
  2. 1 0
      include/linux/usb/serial.h

+ 11 - 4
drivers/usb/serial/usb-serial.c

@@ -402,10 +402,17 @@ static int serial_ioctl(struct tty_struct *tty,
 
 	dev_dbg(tty->dev, "%s - cmd 0x%.4x\n", __func__, cmd);
 
-	if (port->serial->type->ioctl)
-		retval = port->serial->type->ioctl(tty, cmd, arg);
-	else
-		retval = -ENOIOCTLCMD;
+	switch (cmd) {
+	case TIOCMIWAIT:
+		if (port->serial->type->tiocmiwait)
+			retval = port->serial->type->tiocmiwait(tty, arg);
+		break;
+	default:
+		if (port->serial->type->ioctl)
+			retval = port->serial->type->ioctl(tty, cmd, arg);
+		else
+			retval = -ENOIOCTLCMD;
+	}
 
 	return retval;
 }

+ 1 - 0
include/linux/usb/serial.h

@@ -272,6 +272,7 @@ struct usb_serial_driver {
 	int  (*tiocmget)(struct tty_struct *tty);
 	int  (*tiocmset)(struct tty_struct *tty,
 			 unsigned int set, unsigned int clear);
+	int  (*tiocmiwait)(struct tty_struct *tty, unsigned long arg);
 	int  (*get_icount)(struct tty_struct *tty,
 			struct serial_icounter_struct *icount);
 	/* Called by the tty layer for port level work. There may or may not