static void xmbrs_unthrottle(struct tty_struct * tty) { struct xmb_serial *info = (struct xmb_serial *)tty->driver_data; #ifdef SERIAL_DEBUG_THROTTLE char buf[64]; printk("unthrottle %s: %d....\n", _tty_name(tty, buf), tty->ldisc.chars_in_buffer(tty)); #endif if (serial_paranoia_check(info, tty->device, "xmbrs_unthrottle")) return; if (I_IXOFF(tty)) { if (info->x_char) info->x_char = 0; else { /* Force START_CHAR (xon) out */ volatile unsigned int *uartp; unsigned long flags; info->x_char = START_CHAR(tty); uartp = (volatile unsigned int *) info->addr; save_flags_cli(flags); EnableInterrupts(uartp); force_tx_fifo_fill(info); restore_flags(flags); } } }
static void rs_360_unthrottle(struct tty_struct * tty) { ser_info_t *info = (ser_info_t *)tty->driver_data; #ifdef SERIAL_DEBUG_THROTTLE char buf[64]; printk("unthrottle %s: %d....\n", _tty_name(tty, buf), tty->ldisc.chars_in_buffer(tty)); #endif if (serial_paranoia_check(info, tty->name, "rs_unthrottle")) return; if (I_IXOFF(tty)) { if (info->x_char) info->x_char = 0; else rs_360_send_xchar(tty, START_CHAR(tty)); } #ifdef modem_control if (tty->termios->c_cflag & CRTSCTS) info->MCR |= UART_MCR_RTS; local_irq_disable(); serial_out(info, UART_MCR, info->MCR); local_irq_enable(); #endif }
static inline void n_tty_receive_overrun(struct tty_struct *tty) { char buf[64]; tty->num_overrun++; if (tty->overrun_time < (jiffies - HZ)) { printk("%s: %d input overrun(s)\n", _tty_name(tty, buf), tty->num_overrun); tty->overrun_time = jiffies; tty->num_overrun = 0; } }