USB: pl2303: initial TIOCGSERIAL support
I've got a trivial patch for the pl2303 driver, that's what I needed to make the wacom serial tablet driver work properly. It uses the TIOCGSERIAL ioctl to determine if it's talking to a serial device or not, which I gather is rather common, but the pl2303 driver didn't implement that ioctl. Here's a patch, I'm not sure it's absolutely correct, I mostly looked at other similar usbserial drivers to see what I must do, but it works for me. Signed-off-by: John Tsiombikas <nuclear@member.fsf.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
ac7d4ca9e0
commit
67b9946dd0
|
@ -895,10 +895,23 @@ static int wait_modem_info(struct usb_serial_port *port, unsigned int arg)
|
||||||
static int pl2303_ioctl(struct tty_struct *tty, struct file *file,
|
static int pl2303_ioctl(struct tty_struct *tty, struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
|
struct serial_struct ser;
|
||||||
struct usb_serial_port *port = tty->driver_data;
|
struct usb_serial_port *port = tty->driver_data;
|
||||||
dbg("%s (%d) cmd = 0x%04x", __func__, port->number, cmd);
|
dbg("%s (%d) cmd = 0x%04x", __func__, port->number, cmd);
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
|
case TIOCGSERIAL:
|
||||||
|
memset(&ser, 0, sizeof ser);
|
||||||
|
ser.type = PORT_16654;
|
||||||
|
ser.line = port->serial->minor;
|
||||||
|
ser.port = port->number;
|
||||||
|
ser.baud_base = 460800;
|
||||||
|
|
||||||
|
if (copy_to_user((void __user *)arg, &ser, sizeof ser))
|
||||||
|
return -EFAULT;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
case TIOCMIWAIT:
|
case TIOCMIWAIT:
|
||||||
dbg("%s (%d) TIOCMIWAIT", __func__, port->number);
|
dbg("%s (%d) TIOCMIWAIT", __func__, port->number);
|
||||||
return wait_modem_info(port, arg);
|
return wait_modem_info(port, arg);
|
||||||
|
|
Loading…
Reference in a new issue