Commit 81732b26 authored by Al Viro's avatar Al Viro
Browse files

usb-serial: begin switching to ->[sg]et_serial()



add such methods for usb_serial_driver, provide tty_operations
->[sg]et_serial() calling those.  For now the lack of methods
in driver means ENOIOCTLCMD from usb-serial ->[sg]et_serial(),
making tty_ioctl() fall back to calling ->ioctl().  Once all
drivers are converted, we'll be returning -ENOTTY instead,
completing the switchover.

Reviewed-by: default avatarJohan Hovold <johan@kernel.org>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 6a9daed3
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -396,6 +396,24 @@ static void serial_unthrottle(struct tty_struct *tty)
		port->serial->type->unthrottle(tty);
}

static int serial_get_serial(struct tty_struct *tty, struct serial_struct *ss)
{
	struct usb_serial_port *port = tty->driver_data;

	if (port->serial->type->get_serial)
		return port->serial->type->get_serial(tty, ss);
	return -ENOIOCTLCMD;
}

static int serial_set_serial(struct tty_struct *tty, struct serial_struct *ss)
{
	struct usb_serial_port *port = tty->driver_data;

	if (port->serial->type->set_serial)
		return port->serial->type->set_serial(tty, ss);
	return -ENOIOCTLCMD;
}

static int serial_ioctl(struct tty_struct *tty,
					unsigned int cmd, unsigned long arg)
{
@@ -1177,6 +1195,8 @@ static const struct tty_operations serial_ops = {
	.tiocmget =		serial_tiocmget,
	.tiocmset =		serial_tiocmset,
	.get_icount =		serial_get_icount,
	.set_serial =		serial_set_serial,
	.get_serial =		serial_get_serial,
	.cleanup =		serial_cleanup,
	.install =		serial_install,
	.proc_show =		serial_proc_show,
+2 −0
Original line number Diff line number Diff line
@@ -285,6 +285,8 @@ struct usb_serial_driver {
	int  (*write_room)(struct tty_struct *tty);
	int  (*ioctl)(struct tty_struct *tty,
		      unsigned int cmd, unsigned long arg);
	int  (*get_serial)(struct tty_struct *tty, struct serial_struct *ss);
	int  (*set_serial)(struct tty_struct *tty, struct serial_struct *ss);
	void (*set_termios)(struct tty_struct *tty,
			struct usb_serial_port *port, struct ktermios *old);
	void (*break_ctl)(struct tty_struct *tty, int break_state);