--- linux-2.6.1-mm3/drivers/char/riscom8.c.orig 2004-01-14 19:24:19.684774056 +0100 +++ linux-2.6.1-mm3/drivers/char/riscom8.c 2004-01-14 19:31:05.567070568 +0100 @@ -1311,6 +1311,7 @@ struct riscom_port *port = (struct riscom_port *)tty->driver_data; struct riscom_board * bp; unsigned char status; + unsigned int result; unsigned long flags; if (rc_paranoia_check(port, tty->name, __FUNCTION__)) @@ -1322,18 +1323,18 @@ status = rc_in(bp, CD180_MSVR); result = rc_in(bp, RC_RI) & (1u << port_No(port)) ? 0 : TIOCM_RNG; restore_flags(flags); - return ((status & MSVR_RTS) ? TIOCM_RTS : 0) + result |= ((status & MSVR_RTS) ? TIOCM_RTS : 0) | ((status & MSVR_DTR) ? TIOCM_DTR : 0) | ((status & MSVR_CD) ? TIOCM_CAR : 0) | ((status & MSVR_DSR) ? TIOCM_DSR : 0) | ((status & MSVR_CTS) ? TIOCM_CTS : 0); + return result; } static int rc_tiocmset(struct tty_struct *tty, struct file *file, unsigned int set, unsigned int clear) { struct riscom_port *port = (struct riscom_port *)tty->driver_data; - unsigned int arg; unsigned long flags; struct riscom_board *bp; @@ -1666,7 +1667,7 @@ .start = rc_start, .hangup = rc_hangup, .tiocmget = rc_tiocmget, - .tiocmset = rx_tiocmset, + .tiocmset = rc_tiocmset, }; static inline int rc_init_drivers(void)