962 if (board >= RC_NBOARD || !(rc_board[board].flags & RC_BOARD_PRESENT))
963 return -ENODEV;
964
965 bp = &rc_board[board];
966 port = rc_port + board * RC_NPORT + RC_PORT(tty->index);
967 if (rc_paranoia_check(port, tty->name, "rc_open"))
968 return -ENODEV;
969
970 error = rc_setup_board(bp);
971 if (error)
972 return error;
973
974 port->port.count++;
975 tty->driver_data = port;
976 port->port.tty = tty;
977
978 error = rc_setup_port(bp, port);
979 if (error == 0)
980 error = block_til_ready(tty, filp, port);
981 return error;
982}
983
984static void rc_flush_buffer(struct tty_struct *tty)
985{
986 struct riscom_port *port = (struct riscom_port *)tty->driver_data;
987 unsigned long flags;
988
989 if (rc_paranoia_check(port, tty->name, "rc_flush_buffer"))
990 return;
991
992 spin_lock_irqsave(&riscom_lock, flags);
993 port->xmit_cnt = port->xmit_head = port->xmit_tail = 0;
994 spin_unlock_irqrestore(&riscom_lock, flags);
995
996 tty_wakeup(tty);
997}
998
999static void rc_close(struct tty_struct *tty, struct file *filp)
1000{
1001 struct riscom_port *port = (struct riscom_port *) tty->driver_data;
1002 struct riscom_board *bp;