···275275276276config RISCOM8277277 tristate "SDL RISCom/8 card support"278278- depends on SERIAL_NONSTANDARD && BROKEN278278+ depends on SERIAL_NONSTANDARD279279 help280280 This is a driver for the SDL Communications RISCom/8 multiport card,281281 which gives you many serial ports. You would need something like
+9-18
drivers/char/riscom8.c
···12501250 return 0;12511251}1252125212531253-static void rc_send_break(struct riscom_port *port, unsigned long length)12531253+static int rc_send_break(struct tty_struct *tty, int length)12541254{12551255+ struct riscom_port *port = (struct riscom_port *)tty->driver_data;12551256 struct riscom_board *bp = port_Board(port);12561257 unsigned long flags;12581258+12591259+ if (length == 0 || length == -1)12601260+ return -EOPNOTSUPP;1257126112581262 spin_lock_irqsave(&riscom_lock, flags);12591263···12721268 rc_wait_CCR(bp);1273126912741270 spin_unlock_irqrestore(&riscom_lock, flags);12711271+ return 0;12751272}1276127312771274static int rc_set_serial_info(struct riscom_port *port,···13471342{13481343 struct riscom_port *port = (struct riscom_port *)tty->driver_data;13491344 void __user *argp = (void __user *)arg;13501350- int retval = 0;13451345+ int retval;1351134613521347 if (rc_paranoia_check(port, tty->name, "rc_ioctl"))13531348 return -ENODEV;1354134913551350 switch (cmd) {13561356- case TCSBRK: /* SVID version: non-zero arg --> no break */13571357- retval = tty_check_change(tty);13581358- if (retval)13591359- return retval;13601360- tty_wait_until_sent(tty, 0);13611361- if (!arg)13621362- rc_send_break(port, HZ/4); /* 1/4 second */13631363- break;13641364- case TCSBRKP: /* support for POSIX tcsendbreak() */13651365- retval = tty_check_change(tty);13661366- if (retval)13671367- return retval;13681368- tty_wait_until_sent(tty, 0);13691369- rc_send_break(port, arg ? arg*(HZ/10) : HZ/4);13701370- break;13711351 case TIOCGSERIAL:13721352 lock_kernel();13731353 retval = rc_get_serial_info(port, argp);···15071517 .hangup = rc_hangup,15081518 .tiocmget = rc_tiocmget,15091519 .tiocmset = rc_tiocmset,15201520+ .break_ctl = rc_send_break,15101521};1511152215121523static int __init rc_init_drivers(void)···15291538 B9600 | CS8 | CREAD | HUPCL | CLOCAL;15301539 riscom_driver->init_termios.c_ispeed = 9600;15311540 riscom_driver->init_termios.c_ospeed = 9600;15321532- riscom_driver->flags = TTY_DRIVER_REAL_RAW;15411541+ riscom_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_HARDWARE_BREAK;15331542 tty_set_operations(riscom_driver, &riscom_ops);15341543 error = tty_register_driver(riscom_driver);15351544 if (error != 0) {