Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 162017
b: refs/heads/master
c: 560a9be
h: refs/heads/master
i:
  162015: c590df7
v: v3
  • Loading branch information
Richard Ash authored and Greg Kroah-Hartman committed Sep 15, 2009
1 parent 35b43ed commit e213c1a
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 12 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: eba1aaddc0fd427d62f51747c6ec5f965ef5dc56
refs/heads/master: 560a9be8320ab632c7d1dac058662f6c82e5676a
8 changes: 8 additions & 0 deletions trunk/drivers/staging/quatech_usb2/TODO
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Incomplete list of things that this driver does not yet implement completely or
at all. some of these may not be possible to implement because the hardware
support does not exist. Others may be possible, but the magic control codes to
make them happen are unknown, and some may just need the driver support to
implement them writing.

* Mark/Space parity is not implemented (reported back correctly)
* IXANY flow control mode is not implemented (flag ignored completely)
30 changes: 19 additions & 11 deletions trunk/drivers/staging/quatech_usb2/quatech_usb2.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,8 @@ static int debug;
#define QT2_SERIAL_6_DATA 0x01
#define QT2_SERIAL_5_DATA 0x00

#define QT2_SERIAL_ODD_PARITY 0X08
#define QT2_SERIAL_EVEN_PARITY 0X18
#define QT2_SERIAL_ODD_PARITY 0x08
#define QT2_SERIAL_EVEN_PARITY 0x18
#define QT2_SERIAL_TWO_STOPB 0x04
#define QT2_SERIAL_ONE_STOPB 0x00

Expand Down Expand Up @@ -978,14 +978,8 @@ static void qt2_set_termios(struct tty_struct *tty,

UartNumber = port->number;

if (old_termios) {
if ((tty->termios->c_cflag == old_termios->c_cflag) &&
(RELEVANT_IFLAG(tty->termios->c_iflag) ==
RELEVANT_IFLAG(old_termios->c_iflag))) {
dbg("%s(): Nothing to change", __func__);
return;
}
}
if (old_termios && !tty_termios_hw_change(old_termios, tty->termios))
return;

switch (tty->termios->c_cflag) {
case CS5:
Expand All @@ -1010,12 +1004,21 @@ static void qt2_set_termios(struct tty_struct *tty,
else
LCR_change_to |= QT2_SERIAL_EVEN_PARITY;
}
/* Because LCR_change_to is initialised to zero, we don't have to worry
* about the case where PARENB is not set or clearing bits, because by
* default all of them are cleared, turning parity off.
* as we don't support mark/space parity, we should clear the
* mark/space parity bit in c_cflag, so the caller can tell we have
* ignored the request */
tty->termios->c_cflag &= ~CMSPAR;

if (tty->termios->c_cflag & CSTOPB)
LCR_change_to |= QT2_SERIAL_TWO_STOPB;
else
LCR_change_to |= QT2_SERIAL_ONE_STOPB;

/* Thats the LCR stuff, go ahead and set it */
/* Thats the LCR stuff, next we need to work out the divisor as the
* LCR and the divisor are set together */
baud = tty_get_baud_rate(tty);
if (!baud) {
/* pick a default, any default... */
Expand All @@ -1036,6 +1039,11 @@ static void qt2_set_termios(struct tty_struct *tty,
if (status < 0) {
dbg("qt2_boxsetuart() failed");
return;
} else {
/* now encode the baud rate we actually set, which may be
* different to the request */
baud = QT2_MAX_BAUD_RATE / divisor;
tty_encode_baud_rate(tty, baud, baud);
}

/* Now determine flow control */
Expand Down

0 comments on commit e213c1a

Please sign in to comment.