Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 162012
b: refs/heads/master
c: dbe2481
h: refs/heads/master
v: v3
  • Loading branch information
Richard Ash authored and Greg Kroah-Hartman committed Sep 15, 2009
1 parent 45084e0 commit f95637c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 89b5098d8ea97eb29c064a0e093f48b7618fc88e
refs/heads/master: dbe2481580a6933c07627d4da0d20db5fd05a044
32 changes: 14 additions & 18 deletions trunk/drivers/staging/quatech_usb2/quatech_usb2.c
Original file line number Diff line number Diff line change
Expand Up @@ -860,7 +860,10 @@ static int qt2_chars_in_buffer(struct tty_struct *tty)
return chars;
}


/* called when userspace does an ioctl() on the device. Note that
* TIOCMGET and TIOCMSET are filtered off to their own methods before they get
* here, so we don't have to handle them.
*/
static int qt2_ioctl(struct tty_struct *tty, struct file *file,
unsigned int cmd, unsigned long arg)
{
Expand All @@ -887,22 +890,12 @@ static int qt2_ioctl(struct tty_struct *tty, struct file *file,
dbg("%s(): port %d, UartNumber %d, tty =0x%p", __func__,
port->number, UartNumber, tty);

if (cmd == TIOCMGET) {
return qt2_tiocmget(tty, file);
/* same as tiocmget function */
} else if (cmd == TIOCMSET) {
if (copy_from_user(&value, (unsigned int *)arg,
sizeof(unsigned int)))
return -EFAULT;
return qt2_tiocmset(tty, file, value, 0);
/* same as tiocmset function */
} else if (cmd == TIOCMBIS || cmd == TIOCMBIC) {
status = qt2_box_get_register(port->serial, UartNumber,
QT2_MODEM_CONTROL_REGISTER, &mcr_value);
if (status < 0)
if (cmd == TIOCMBIS || cmd == TIOCMBIC) {
if (qt2_box_get_register(port->serial, UartNumber,
QT2_MODEM_CONTROL_REGISTER, &mcr_value) < 0)
return -ESPIPE;
if (copy_from_user(&value, (unsigned int *)arg,
sizeof(unsigned int)))
sizeof(value)))
return -EFAULT;

switch (cmd) {
Expand All @@ -925,9 +918,8 @@ static int qt2_ioctl(struct tty_struct *tty, struct file *file,
default:
break;
} /* end of local switch on cmd */
status = qt2_box_set_register(port->serial, UartNumber,
QT2_MODEM_CONTROL_REGISTER, mcr_value);
if (status < 0) {
if (qt2_box_set_register(port->serial, UartNumber,
QT2_MODEM_CONTROL_REGISTER, mcr_value) < 0) {
return -ESPIPE;
} else {
port_extra->shadowMCR = mcr_value;
Expand Down Expand Up @@ -965,6 +957,10 @@ static int qt2_ioctl(struct tty_struct *tty, struct file *file,
return 0;
}
} /* end inifinite while */
/* FIXME: This while loop needs a way to break out if the device
* is disconnected while a process is waiting for the MSR to
* change, because once it's disconnected, it isn't going to
* change state ... */
} else {
/* any other ioctls we don't know about come here */
dbg("%s(): No ioctl for that one. port = %d", __func__,
Expand Down

0 comments on commit f95637c

Please sign in to comment.