Lines Matching refs:info
332 static inline int serial_paranoia_check(struct cyclades_port *info, in serial_paranoia_check() argument
336 if (!info) { in serial_paranoia_check()
342 if (info->magic != CYCLADES_MAGIC) { in serial_paranoia_check()
443 struct cyclades_port *info; in cyy_chip_rx() local
454 info = &cinfo->ports[channel + chip * 4]; in cyy_chip_rx()
455 port = &info->port; in cyy_chip_rx()
456 save_car = cyy_readb(info, CyCAR); in cyy_chip_rx()
457 cyy_writeb(info, CyCAR, save_xir); in cyy_chip_rx()
458 ivr = cyy_readb(info, CyRIVR) & CyIVRMask; in cyy_chip_rx()
462 data = cyy_readb(info, CyRDSR); in cyy_chip_rx()
466 info->icount.brk++; in cyy_chip_rx()
468 info->icount.frame++; in cyy_chip_rx()
470 info->icount.parity++; in cyy_chip_rx()
472 info->icount.overrun++; in cyy_chip_rx()
474 if (data & info->ignore_status_mask) { in cyy_chip_rx()
475 info->icount.rx++; in cyy_chip_rx()
479 if (data & info->read_status_mask) { in cyy_chip_rx()
482 cyy_readb(info, CyRDSR), in cyy_chip_rx()
484 info->icount.rx++; in cyy_chip_rx()
495 cyy_readb(info, CyRDSR), in cyy_chip_rx()
497 info->icount.rx++; in cyy_chip_rx()
498 info->idle_stats.frame_errs++; in cyy_chip_rx()
502 cyy_readb(info, CyRDSR), in cyy_chip_rx()
504 info->icount.rx++; in cyy_chip_rx()
505 info->idle_stats.parity_errs++; in cyy_chip_rx()
509 info->icount.rx++; in cyy_chip_rx()
515 cyy_readb(info, CyRDSR), in cyy_chip_rx()
517 info->icount.rx++; in cyy_chip_rx()
518 info->idle_stats.overruns++; in cyy_chip_rx()
526 info->icount.rx++; in cyy_chip_rx()
530 info->icount.rx++; in cyy_chip_rx()
535 info->icount.buf_overrun++; in cyy_chip_rx()
536 info->idle_stats.overruns++; in cyy_chip_rx()
540 char_count = cyy_readb(info, CyRDCR); in cyy_chip_rx()
543 ++info->mon.int_count; in cyy_chip_rx()
544 info->mon.char_count += char_count; in cyy_chip_rx()
545 if (char_count > info->mon.char_max) in cyy_chip_rx()
546 info->mon.char_max = char_count; in cyy_chip_rx()
547 info->mon.char_last = char_count; in cyy_chip_rx()
551 data = cyy_readb(info, CyRDSR); in cyy_chip_rx()
553 info->idle_stats.recv_bytes++; in cyy_chip_rx()
554 info->icount.rx++; in cyy_chip_rx()
559 info->idle_stats.recv_idle = jiffies; in cyy_chip_rx()
564 cyy_writeb(info, CyRIR, save_xir & 0x3f); in cyy_chip_rx()
565 cyy_writeb(info, CyCAR, save_car); in cyy_chip_rx()
571 struct cyclades_port *info; in cyy_chip_tx() local
589 info = &cinfo->ports[channel + chip * 4]; in cyy_chip_tx()
590 tty = tty_port_tty_get(&info->port); in cyy_chip_tx()
592 cyy_writeb(info, CySRER, cyy_readb(info, CySRER) & ~CyTxRdy); in cyy_chip_tx()
597 char_count = info->xmit_fifo_size; in cyy_chip_tx()
599 if (info->x_char) { /* send special char */ in cyy_chip_tx()
600 outch = info->x_char; in cyy_chip_tx()
601 cyy_writeb(info, CyTDR, outch); in cyy_chip_tx()
603 info->icount.tx++; in cyy_chip_tx()
604 info->x_char = 0; in cyy_chip_tx()
607 if (info->breakon || info->breakoff) { in cyy_chip_tx()
608 if (info->breakon) { in cyy_chip_tx()
609 cyy_writeb(info, CyTDR, 0); in cyy_chip_tx()
610 cyy_writeb(info, CyTDR, 0x81); in cyy_chip_tx()
611 info->breakon = 0; in cyy_chip_tx()
614 if (info->breakoff) { in cyy_chip_tx()
615 cyy_writeb(info, CyTDR, 0); in cyy_chip_tx()
616 cyy_writeb(info, CyTDR, 0x83); in cyy_chip_tx()
617 info->breakoff = 0; in cyy_chip_tx()
623 if (!info->xmit_cnt) { in cyy_chip_tx()
624 if (cyy_readb(info, CySRER) & CyTxMpty) { in cyy_chip_tx()
625 cyy_writeb(info, CySRER, in cyy_chip_tx()
626 cyy_readb(info, CySRER) & ~CyTxMpty); in cyy_chip_tx()
628 cyy_writeb(info, CySRER, CyTxMpty | in cyy_chip_tx()
629 (cyy_readb(info, CySRER) & ~CyTxRdy)); in cyy_chip_tx()
633 if (info->port.xmit_buf == NULL) { in cyy_chip_tx()
634 cyy_writeb(info, CySRER, in cyy_chip_tx()
635 cyy_readb(info, CySRER) & ~CyTxRdy); in cyy_chip_tx()
639 cyy_writeb(info, CySRER, in cyy_chip_tx()
640 cyy_readb(info, CySRER) & ~CyTxRdy); in cyy_chip_tx()
652 outch = info->port.xmit_buf[info->xmit_tail]; in cyy_chip_tx()
654 info->xmit_cnt--; in cyy_chip_tx()
655 info->xmit_tail = (info->xmit_tail + 1) & in cyy_chip_tx()
657 cyy_writeb(info, CyTDR, outch); in cyy_chip_tx()
658 info->icount.tx++; in cyy_chip_tx()
661 info->xmit_cnt--; in cyy_chip_tx()
662 info->xmit_tail = (info->xmit_tail + 1) & in cyy_chip_tx()
664 cyy_writeb(info, CyTDR, outch); in cyy_chip_tx()
665 cyy_writeb(info, CyTDR, 0); in cyy_chip_tx()
666 info->icount.tx++; in cyy_chip_tx()
677 cyy_writeb(info, CyTIR, save_xir & 0x3f); in cyy_chip_tx()
678 cyy_writeb(info, CyCAR, save_car); in cyy_chip_tx()
684 struct cyclades_port *info; in cyy_chip_modem() local
692 info = &cinfo->ports[channel + chip * 4]; in cyy_chip_modem()
693 save_car = cyy_readb(info, CyCAR); in cyy_chip_modem()
694 cyy_writeb(info, CyCAR, save_xir); in cyy_chip_modem()
696 mdm_change = cyy_readb(info, CyMISR); in cyy_chip_modem()
697 mdm_status = cyy_readb(info, CyMSVR1); in cyy_chip_modem()
699 tty = tty_port_tty_get(&info->port); in cyy_chip_modem()
706 info->icount.dcd++; in cyy_chip_modem()
708 info->icount.cts++; in cyy_chip_modem()
710 info->icount.dsr++; in cyy_chip_modem()
712 info->icount.rng++; in cyy_chip_modem()
714 wake_up_interruptible(&info->port.delta_msr_wait); in cyy_chip_modem()
717 if ((mdm_change & CyDCD) && (info->port.flags & ASYNC_CHECK_CD)) { in cyy_chip_modem()
719 wake_up_interruptible(&info->port.open_wait); in cyy_chip_modem()
723 if ((mdm_change & CyCTS) && tty_port_cts_enabled(&info->port)) { in cyy_chip_modem()
729 cyy_writeb(info, CySRER, in cyy_chip_modem()
730 cyy_readb(info, CySRER) | CyTxRdy); in cyy_chip_modem()
738 cyy_writeb(info, CySRER, in cyy_chip_modem()
739 cyy_readb(info, CySRER) & ~CyTxRdy); in cyy_chip_modem()
750 cyy_writeb(info, CyMIR, save_xir & 0x3f); in cyy_chip_modem()
751 cyy_writeb(info, CyCAR, save_car); in cyy_chip_modem()
822 static void cyy_change_rts_dtr(struct cyclades_port *info, unsigned int set, in cyy_change_rts_dtr() argument
825 struct cyclades_card *card = info->card; in cyy_change_rts_dtr()
826 int channel = info->line - card->first_line; in cyy_change_rts_dtr()
831 if (info->rtsdtr_inv) { in cyy_change_rts_dtr()
843 cyy_writeb(info, CyCAR, channel); in cyy_change_rts_dtr()
844 cyy_writeb(info, msvrr, rts); in cyy_change_rts_dtr()
847 cyy_writeb(info, CyCAR, channel); in cyy_change_rts_dtr()
848 cyy_writeb(info, msvrr, ~rts); in cyy_change_rts_dtr()
851 cyy_writeb(info, CyCAR, channel); in cyy_change_rts_dtr()
852 cyy_writeb(info, msvrd, dtr); in cyy_change_rts_dtr()
856 cyy_readb(info, CyMSVR1), in cyy_change_rts_dtr()
857 cyy_readb(info, CyMSVR2)); in cyy_change_rts_dtr()
861 cyy_writeb(info, CyCAR, channel); in cyy_change_rts_dtr()
862 cyy_writeb(info, msvrd, ~dtr); in cyy_change_rts_dtr()
866 cyy_readb(info, CyMSVR1), in cyy_change_rts_dtr()
867 cyy_readb(info, CyMSVR2)); in cyy_change_rts_dtr()
920 static void cyz_handle_rx(struct cyclades_port *info) in cyz_handle_rx() argument
922 struct BUF_CTRL __iomem *buf_ctrl = info->u.cyz.buf_ctrl; in cyz_handle_rx()
923 struct cyclades_card *cinfo = info->card; in cyz_handle_rx()
924 struct tty_port *port = &info->port; in cyz_handle_rx()
947 info->mon.int_count++; in cyz_handle_rx()
948 info->mon.char_count += char_count; in cyz_handle_rx()
949 if (char_count > info->mon.char_max) in cyz_handle_rx()
950 info->mon.char_max = char_count; in cyz_handle_rx()
951 info->mon.char_last = char_count; in cyz_handle_rx()
973 info->icount.rx += len; in cyz_handle_rx()
974 info->idle_stats.recv_bytes += len; in cyz_handle_rx()
984 info->idle_stats.recv_bytes++; in cyz_handle_rx()
985 info->icount.rx++; in cyz_handle_rx()
998 info->line])) in cyz_handle_rx()
999 mod_timer(&cyz_rx_full_timer[info->line], in cyz_handle_rx()
1002 info->idle_stats.recv_idle = jiffies; in cyz_handle_rx()
1003 tty_schedule_flip(&info->port); in cyz_handle_rx()
1009 static void cyz_handle_tx(struct cyclades_port *info) in cyz_handle_tx() argument
1011 struct BUF_CTRL __iomem *buf_ctrl = info->u.cyz.buf_ctrl; in cyz_handle_tx()
1012 struct cyclades_card *cinfo = info->card; in cyz_handle_tx()
1021 if (info->xmit_cnt <= 0) /* Nothing to transmit */ in cyz_handle_tx()
1036 tty = tty_port_tty_get(&info->port); in cyz_handle_tx()
1040 if (info->x_char) { /* send special char */ in cyz_handle_tx()
1041 data = info->x_char; in cyz_handle_tx()
1045 info->x_char = 0; in cyz_handle_tx()
1047 info->icount.tx++; in cyz_handle_tx()
1052 (SERIAL_XMIT_SIZE - info->xmit_tail), in cyz_handle_tx()
1053 min_t(unsigned int, info->xmit_cnt, in cyz_handle_tx()
1057 &info->port.xmit_buf[info->xmit_tail], in cyz_handle_tx()
1062 info->icount.tx += small_count; in cyz_handle_tx()
1063 info->xmit_cnt -= small_count; in cyz_handle_tx()
1064 info->xmit_tail = (info->xmit_tail + small_count) & in cyz_handle_tx()
1068 while (info->xmit_cnt && char_count) { in cyz_handle_tx()
1069 data = info->port.xmit_buf[info->xmit_tail]; in cyz_handle_tx()
1070 info->xmit_cnt--; in cyz_handle_tx()
1071 info->xmit_tail = (info->xmit_tail + 1) & in cyz_handle_tx()
1077 info->icount.tx++; in cyz_handle_tx()
1090 struct cyclades_port *info; in cyz_handle_cmd() local
1101 info = &cinfo->ports[channel]; in cyz_handle_cmd()
1105 tty_insert_flip_char(&info->port, 0, TTY_PARITY); in cyz_handle_cmd()
1106 info->icount.rx++; in cyz_handle_cmd()
1110 tty_insert_flip_char(&info->port, 0, TTY_FRAME); in cyz_handle_cmd()
1111 info->icount.rx++; in cyz_handle_cmd()
1115 tty_insert_flip_char(&info->port, 0, TTY_BREAK); in cyz_handle_cmd()
1116 info->icount.rx++; in cyz_handle_cmd()
1120 info->icount.dcd++; in cyz_handle_cmd()
1122 if (info->port.flags & ASYNC_CHECK_CD) { in cyz_handle_cmd()
1124 readl(&info->u.cyz.ch_ctrl->rs_status); in cyz_handle_cmd()
1126 wake_up_interruptible(&info->port.open_wait); in cyz_handle_cmd()
1128 tty_port_tty_hangup(&info->port, false); in cyz_handle_cmd()
1132 info->icount.cts++; in cyz_handle_cmd()
1136 info->icount.rng++; in cyz_handle_cmd()
1140 info->icount.dsr++; in cyz_handle_cmd()
1145 complete(&info->shutdown_wait); in cyz_handle_cmd()
1155 "port %ld\n", info->card, channel); in cyz_handle_cmd()
1157 cyz_handle_rx(info); in cyz_handle_cmd()
1165 "port %ld\n", info->card, channel); in cyz_handle_cmd()
1167 cyz_handle_tx(info); in cyz_handle_cmd()
1177 wake_up_interruptible(&info->port.delta_msr_wait); in cyz_handle_cmd()
1179 tty_schedule_flip(&info->port); in cyz_handle_cmd()
1204 struct cyclades_port *info = (struct cyclades_port *)arg; in cyz_rx_restart() local
1205 struct cyclades_card *card = info->card; in cyz_rx_restart()
1207 __u32 channel = info->line - card->first_line; in cyz_rx_restart()
1214 info->line, retval); in cyz_rx_restart()
1224 struct cyclades_port *info; in cyz_poll() local
1245 info = &cinfo->ports[port]; in cyz_poll()
1247 if (!info->throttle) in cyz_poll()
1248 cyz_handle_rx(info); in cyz_poll()
1249 cyz_handle_tx(info); in cyz_poll()
1265 static int cy_startup(struct cyclades_port *info, struct tty_struct *tty) in cy_startup() argument
1273 card = info->card; in cy_startup()
1274 channel = info->line - card->first_line; in cy_startup()
1282 if (info->port.flags & ASYNC_INITIALIZED) in cy_startup()
1285 if (!info->type) { in cy_startup()
1290 if (info->port.xmit_buf) in cy_startup()
1293 info->port.xmit_buf = (unsigned char *)page; in cy_startup()
1297 cy_set_line_char(info, tty); in cy_startup()
1304 cyy_writeb(info, CyCAR, channel); in cy_startup()
1306 cyy_writeb(info, CyRTPR, in cy_startup()
1307 (info->default_timeout ? info->default_timeout : 0x02)); in cy_startup()
1310 cyy_issue_cmd(info, CyCHAN_CTL | CyENB_RCVR | CyENB_XMTR); in cy_startup()
1312 cyy_change_rts_dtr(info, TIOCM_RTS | TIOCM_DTR, 0); in cy_startup()
1314 cyy_writeb(info, CySRER, cyy_readb(info, CySRER) | CyRxData); in cy_startup()
1316 struct CH_CTRL __iomem *ch_ctrl = info->u.cyz.ch_ctrl; in cy_startup()
1350 "%x\n", info->line, retval); in cy_startup()
1357 "%x\n", info->line, retval); in cy_startup()
1362 tty_port_raise_dtr_rts(&info->port); in cy_startup()
1367 info->port.flags |= ASYNC_INITIALIZED; in cy_startup()
1370 info->xmit_cnt = info->xmit_head = info->xmit_tail = 0; in cy_startup()
1371 info->breakon = info->breakoff = 0; in cy_startup()
1372 memset((char *)&info->idle_stats, 0, sizeof(info->idle_stats)); in cy_startup()
1373 info->idle_stats.in_use = in cy_startup()
1374 info->idle_stats.recv_idle = in cy_startup()
1375 info->idle_stats.xmit_idle = jiffies; in cy_startup()
1390 static void start_xmit(struct cyclades_port *info) in start_xmit() argument
1392 struct cyclades_card *card = info->card; in start_xmit()
1394 int channel = info->line - card->first_line; in start_xmit()
1398 cyy_writeb(info, CyCAR, channel & 0x03); in start_xmit()
1399 cyy_writeb(info, CySRER, cyy_readb(info, CySRER) | CyTxRdy); in start_xmit()
1409 "%x\n", info->line, retval); in start_xmit()
1422 static void cy_shutdown(struct cyclades_port *info, struct tty_struct *tty) in cy_shutdown() argument
1427 if (!(info->port.flags & ASYNC_INITIALIZED)) in cy_shutdown()
1430 card = info->card; in cy_shutdown()
1435 wake_up_interruptible(&info->port.delta_msr_wait); in cy_shutdown()
1437 if (info->port.xmit_buf) { in cy_shutdown()
1439 temp = info->port.xmit_buf; in cy_shutdown()
1440 info->port.xmit_buf = NULL; in cy_shutdown()
1444 cyy_change_rts_dtr(info, 0, TIOCM_RTS | TIOCM_DTR); in cy_shutdown()
1446 cyy_issue_cmd(info, CyCHAN_CTL | CyDIS_RCVR); in cy_shutdown()
1451 info->port.flags &= ~ASYNC_INITIALIZED; in cy_shutdown()
1455 int channel = info->line - card->first_line; in cy_shutdown()
1465 if (info->port.xmit_buf) { in cy_shutdown()
1467 temp = info->port.xmit_buf; in cy_shutdown()
1468 info->port.xmit_buf = NULL; in cy_shutdown()
1473 tty_port_lower_dtr_rts(&info->port); in cy_shutdown()
1476 info->port.flags &= ~ASYNC_INITIALIZED; in cy_shutdown()
1498 struct cyclades_port *info; in cy_open() local
1508 info = &cy_card[i].ports[line - cy_card[i].first_line]; in cy_open()
1509 if (info->line < 0) in cy_open()
1516 if (cy_is_Z(info->card)) { in cy_open()
1517 struct cyclades_card *cinfo = info->card; in cy_open()
1559 if (info->line > (cinfo->first_line + cinfo->nports - 1)) in cy_open()
1563 printk(KERN_DEBUG "cyc:cy_open ttyC%d\n", info->line); in cy_open()
1565 tty->driver_data = info; in cy_open()
1566 if (serial_paranoia_check(info, tty->name, "cy_open")) in cy_open()
1570 printk(KERN_DEBUG "cyc:cy_open ttyC%d, count = %d\n", info->line, in cy_open()
1571 info->port.count); in cy_open()
1573 info->port.count++; in cy_open()
1576 current->pid, info->port.count); in cy_open()
1582 retval = cy_startup(info, tty); in cy_open()
1586 retval = tty_port_block_til_ready(&info->port, tty, filp); in cy_open()
1595 info->throttle = 0; in cy_open()
1596 tty_port_tty_set(&info->port, tty); in cy_open()
1610 struct cyclades_port *info = tty->driver_data; in cy_wait_until_sent() local
1614 if (serial_paranoia_check(info, tty->name, "cy_wait_until_sent")) in cy_wait_until_sent()
1617 if (info->xmit_fifo_size == 0) in cy_wait_until_sent()
1629 char_time = (info->timeout - HZ / 50) / info->xmit_fifo_size; in cy_wait_until_sent()
1646 if (!timeout || timeout > 2 * info->timeout) in cy_wait_until_sent()
1647 timeout = 2 * info->timeout; in cy_wait_until_sent()
1649 card = info->card; in cy_wait_until_sent()
1651 while (cyy_readb(info, CySRER) & CyTxRdy) { in cy_wait_until_sent()
1665 struct cyclades_port *info = tty->driver_data; in cy_flush_buffer() local
1671 printk(KERN_DEBUG "cyc:cy_flush_buffer ttyC%d\n", info->line); in cy_flush_buffer()
1674 if (serial_paranoia_check(info, tty->name, "cy_flush_buffer")) in cy_flush_buffer()
1677 card = info->card; in cy_flush_buffer()
1678 channel = info->line - card->first_line; in cy_flush_buffer()
1681 info->xmit_cnt = info->xmit_head = info->xmit_tail = 0; in cy_flush_buffer()
1690 "was %x\n", info->line, retval); in cy_flush_buffer()
1700 struct cyclades_port *info = container_of(port, struct cyclades_port, in cy_do_close() local
1706 card = info->card; in cy_do_close()
1707 channel = info->line - card->first_line; in cy_do_close()
1712 cyy_writeb(info, CyCAR, channel & 0x03); in cy_do_close()
1713 cyy_writeb(info, CySRER, cyy_readb(info, CySRER) & ~CyRxData); in cy_do_close()
1714 if (info->port.flags & ASYNC_INITIALIZED) { in cy_do_close()
1718 cy_wait_until_sent(port->tty, info->timeout); in cy_do_close()
1725 struct CH_CTRL __iomem *ch_ctrl = info->u.cyz.ch_ctrl; in cy_do_close()
1732 "ttyC%d was %x\n", info->line, retval); in cy_do_close()
1735 wait_for_completion_interruptible(&info->shutdown_wait); in cy_do_close()
1741 cy_shutdown(info, port->tty); in cy_do_close()
1749 struct cyclades_port *info = tty->driver_data; in cy_close() local
1750 if (!info || serial_paranoia_check(info, tty->name, "cy_close")) in cy_close()
1752 tty_port_close(&info->port, tty, filp); in cy_close()
1770 struct cyclades_port *info = tty->driver_data; in cy_write() local
1775 printk(KERN_DEBUG "cyc:cy_write ttyC%d\n", info->line); in cy_write()
1778 if (serial_paranoia_check(info, tty->name, "cy_write")) in cy_write()
1781 if (!info->port.xmit_buf) in cy_write()
1784 spin_lock_irqsave(&info->card->card_lock, flags); in cy_write()
1786 c = min(count, (int)(SERIAL_XMIT_SIZE - info->xmit_cnt - 1)); in cy_write()
1787 c = min(c, (int)(SERIAL_XMIT_SIZE - info->xmit_head)); in cy_write()
1792 memcpy(info->port.xmit_buf + info->xmit_head, buf, c); in cy_write()
1793 info->xmit_head = (info->xmit_head + c) & in cy_write()
1795 info->xmit_cnt += c; in cy_write()
1800 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_write()
1802 info->idle_stats.xmit_bytes += ret; in cy_write()
1803 info->idle_stats.xmit_idle = jiffies; in cy_write()
1805 if (info->xmit_cnt && !tty->stopped && !tty->hw_stopped) in cy_write()
1806 start_xmit(info); in cy_write()
1820 struct cyclades_port *info = tty->driver_data; in cy_put_char() local
1824 printk(KERN_DEBUG "cyc:cy_put_char ttyC%d\n", info->line); in cy_put_char()
1827 if (serial_paranoia_check(info, tty->name, "cy_put_char")) in cy_put_char()
1830 if (!info->port.xmit_buf) in cy_put_char()
1833 spin_lock_irqsave(&info->card->card_lock, flags); in cy_put_char()
1834 if (info->xmit_cnt >= (int)(SERIAL_XMIT_SIZE - 1)) { in cy_put_char()
1835 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_put_char()
1839 info->port.xmit_buf[info->xmit_head++] = ch; in cy_put_char()
1840 info->xmit_head &= SERIAL_XMIT_SIZE - 1; in cy_put_char()
1841 info->xmit_cnt++; in cy_put_char()
1842 info->idle_stats.xmit_bytes++; in cy_put_char()
1843 info->idle_stats.xmit_idle = jiffies; in cy_put_char()
1844 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_put_char()
1854 struct cyclades_port *info = tty->driver_data; in cy_flush_chars() local
1857 printk(KERN_DEBUG "cyc:cy_flush_chars ttyC%d\n", info->line); in cy_flush_chars()
1860 if (serial_paranoia_check(info, tty->name, "cy_flush_chars")) in cy_flush_chars()
1863 if (info->xmit_cnt <= 0 || tty->stopped || tty->hw_stopped || in cy_flush_chars()
1864 !info->port.xmit_buf) in cy_flush_chars()
1867 start_xmit(info); in cy_flush_chars()
1878 struct cyclades_port *info = tty->driver_data; in cy_write_room() local
1882 printk(KERN_DEBUG "cyc:cy_write_room ttyC%d\n", info->line); in cy_write_room()
1885 if (serial_paranoia_check(info, tty->name, "cy_write_room")) in cy_write_room()
1887 ret = SERIAL_XMIT_SIZE - info->xmit_cnt - 1; in cy_write_room()
1895 struct cyclades_port *info = tty->driver_data; in cy_chars_in_buffer() local
1897 if (serial_paranoia_check(info, tty->name, "cy_chars_in_buffer")) in cy_chars_in_buffer()
1901 if (!cy_is_Z(info->card)) { in cy_chars_in_buffer()
1905 info->line, info->xmit_cnt); in cy_chars_in_buffer()
1907 return info->xmit_cnt; in cy_chars_in_buffer()
1910 struct BUF_CTRL __iomem *buf_ctrl = info->u.cyz.buf_ctrl; in cy_chars_in_buffer()
1923 info->line, info->xmit_cnt + char_count); in cy_chars_in_buffer()
1925 return info->xmit_cnt + char_count; in cy_chars_in_buffer()
1936 static void cyy_baud_calc(struct cyclades_port *info, __u32 baud) in cyy_baud_calc() argument
1939 __u32 cy_clock = ((info->chip_rev >= CD1400_REV_J) ? 60000000 : in cyy_baud_calc()
1943 info->tbpr = info->tco = info->rbpr = info->rco = 0; in cyy_baud_calc()
1957 info->tbpr = info->rbpr = bpr; in cyy_baud_calc()
1958 info->tco = info->rco = co; in cyy_baud_calc()
1965 static void cy_set_line_char(struct cyclades_port *info, struct tty_struct *tty) in cy_set_line_char() argument
1974 if (info->line == -1) in cy_set_line_char()
1983 if ((info->port.flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) in cy_set_line_char()
1985 if ((info->port.flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) in cy_set_line_char()
1987 if ((info->port.flags & ASYNC_SPD_MASK) == ASYNC_SPD_SHI) in cy_set_line_char()
1989 if ((info->port.flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) in cy_set_line_char()
1992 card = info->card; in cy_set_line_char()
1993 channel = info->line - card->first_line; in cy_set_line_char()
2000 if (baud == 38400 && (info->port.flags & ASYNC_SPD_MASK) == in cy_set_line_char()
2002 if (info->custom_divisor) in cy_set_line_char()
2003 baud_rate = info->baud / info->custom_divisor; in cy_set_line_char()
2005 baud_rate = info->baud; in cy_set_line_char()
2017 if (baud == 38400 && (info->port.flags & ASYNC_SPD_MASK) == in cy_set_line_char()
2019 cyy_baud_calc(info, baud_rate); in cy_set_line_char()
2021 if (info->chip_rev >= CD1400_REV_J) { in cy_set_line_char()
2023 info->tbpr = baud_bpr_60[i]; /* Tx BPR */ in cy_set_line_char()
2024 info->tco = baud_co_60[i]; /* Tx CO */ in cy_set_line_char()
2025 info->rbpr = baud_bpr_60[i]; /* Rx BPR */ in cy_set_line_char()
2026 info->rco = baud_co_60[i]; /* Rx CO */ in cy_set_line_char()
2028 info->tbpr = baud_bpr_25[i]; /* Tx BPR */ in cy_set_line_char()
2029 info->tco = baud_co_25[i]; /* Tx CO */ in cy_set_line_char()
2030 info->rbpr = baud_bpr_25[i]; /* Rx BPR */ in cy_set_line_char()
2031 info->rco = baud_co_25[i]; /* Rx CO */ in cy_set_line_char()
2036 info->timeout = (info->xmit_fifo_size * HZ * 30 / 269) + in cy_set_line_char()
2038 } else if (baud == 38400 && (info->port.flags & ASYNC_SPD_MASK) == in cy_set_line_char()
2040 info->timeout = (info->xmit_fifo_size * HZ * 15 / in cy_set_line_char()
2043 info->timeout = (info->xmit_fifo_size * HZ * 15 / in cy_set_line_char()
2047 info->timeout = 0; in cy_set_line_char()
2054 info->cor5 = 0; in cy_set_line_char()
2055 info->cor4 = 0; in cy_set_line_char()
2057 info->cor3 = (info->default_threshold ? in cy_set_line_char()
2058 info->default_threshold : baud_cor3[i]); in cy_set_line_char()
2059 info->cor2 = CyETC; in cy_set_line_char()
2062 info->cor1 = Cy_5_BITS; in cy_set_line_char()
2065 info->cor1 = Cy_6_BITS; in cy_set_line_char()
2068 info->cor1 = Cy_7_BITS; in cy_set_line_char()
2071 info->cor1 = Cy_8_BITS; in cy_set_line_char()
2075 info->cor1 |= Cy_2_STOP; in cy_set_line_char()
2079 info->cor1 |= CyPARITY_O; in cy_set_line_char()
2081 info->cor1 |= CyPARITY_E; in cy_set_line_char()
2083 info->cor1 |= CyPARITY_NONE; in cy_set_line_char()
2087 info->port.flags |= ASYNC_CTS_FLOW; in cy_set_line_char()
2088 info->cor2 |= CyCtsAE; in cy_set_line_char()
2090 info->port.flags &= ~ASYNC_CTS_FLOW; in cy_set_line_char()
2091 info->cor2 &= ~CyCtsAE; in cy_set_line_char()
2094 info->port.flags &= ~ASYNC_CHECK_CD; in cy_set_line_char()
2096 info->port.flags |= ASYNC_CHECK_CD; in cy_set_line_char()
2111 cyy_writeb(info, CyCAR, channel); in cy_set_line_char()
2115 cyy_writeb(info, CyTCOR, info->tco); in cy_set_line_char()
2116 cyy_writeb(info, CyTBPR, info->tbpr); in cy_set_line_char()
2117 cyy_writeb(info, CyRCOR, info->rco); in cy_set_line_char()
2118 cyy_writeb(info, CyRBPR, info->rbpr); in cy_set_line_char()
2122 cyy_writeb(info, CySCHR1, START_CHAR(tty)); in cy_set_line_char()
2123 cyy_writeb(info, CySCHR2, STOP_CHAR(tty)); in cy_set_line_char()
2124 cyy_writeb(info, CyCOR1, info->cor1); in cy_set_line_char()
2125 cyy_writeb(info, CyCOR2, info->cor2); in cy_set_line_char()
2126 cyy_writeb(info, CyCOR3, info->cor3); in cy_set_line_char()
2127 cyy_writeb(info, CyCOR4, info->cor4); in cy_set_line_char()
2128 cyy_writeb(info, CyCOR5, info->cor5); in cy_set_line_char()
2130 cyy_issue_cmd(info, CyCOR_CHANGE | CyCOR1ch | CyCOR2ch | in cy_set_line_char()
2134 cyy_writeb(info, CyCAR, channel); in cy_set_line_char()
2135 cyy_writeb(info, CyRTPR, in cy_set_line_char()
2136 (info->default_timeout ? info->default_timeout : 0x02)); in cy_set_line_char()
2143 cyy_writeb(info, CySRER, cyy_readb(info, CySRER) | CyMdmCh); in cy_set_line_char()
2145 if ((cflag & CRTSCTS) && info->rflow) in cy_set_line_char()
2146 cyy_writeb(info, CyMCOR1, cflags | rflow_thr[i]); in cy_set_line_char()
2148 cyy_writeb(info, CyMCOR1, cflags); in cy_set_line_char()
2150 cyy_writeb(info, CyMCOR2, cflags); in cy_set_line_char()
2153 cyy_change_rts_dtr(info, 0, TIOCM_DTR); in cy_set_line_char()
2155 cyy_change_rts_dtr(info, TIOCM_DTR, 0); in cy_set_line_char()
2161 struct CH_CTRL __iomem *ch_ctrl = info->u.cyz.ch_ctrl; in cy_set_line_char()
2170 if (baud == 38400 && (info->port.flags & ASYNC_SPD_MASK) == in cy_set_line_char()
2172 if (info->custom_divisor) in cy_set_line_char()
2173 baud_rate = info->baud / info->custom_divisor; in cy_set_line_char()
2175 baud_rate = info->baud; in cy_set_line_char()
2183 info->timeout = (info->xmit_fifo_size * HZ * 30 / 269) + in cy_set_line_char()
2185 } else if (baud == 38400 && (info->port.flags & ASYNC_SPD_MASK) == in cy_set_line_char()
2187 info->timeout = (info->xmit_fifo_size * HZ * 15 / in cy_set_line_char()
2190 info->timeout = (info->xmit_fifo_size * HZ * 15 / in cy_set_line_char()
2194 info->timeout = 0; in cy_set_line_char()
2237 info->port.flags &= ~ASYNC_CTS_FLOW; in cy_set_line_char()
2251 "was %x\n", info->line, retval); in cy_set_line_char()
2256 info->port.flags &= ~ASYNC_CHECK_CD; in cy_set_line_char()
2258 info->port.flags |= ASYNC_CHECK_CD; in cy_set_line_char()
2277 "was %x\n", info->line, retval); in cy_set_line_char()
2284 static int cy_get_serial_info(struct cyclades_port *info, in cy_get_serial_info() argument
2287 struct cyclades_card *cinfo = info->card; in cy_get_serial_info()
2289 .type = info->type, in cy_get_serial_info()
2290 .line = info->line, in cy_get_serial_info()
2291 .port = (info->card - cy_card) * 0x100 + info->line - in cy_get_serial_info()
2294 .flags = info->port.flags, in cy_get_serial_info()
2295 .close_delay = info->port.close_delay, in cy_get_serial_info()
2296 .closing_wait = info->port.closing_wait, in cy_get_serial_info()
2297 .baud_base = info->baud, in cy_get_serial_info()
2298 .custom_divisor = info->custom_divisor, in cy_get_serial_info()
2305 cy_set_serial_info(struct cyclades_port *info, struct tty_struct *tty, in cy_set_serial_info() argument
2314 mutex_lock(&info->port.mutex); in cy_set_serial_info()
2316 if (new_serial.close_delay != info->port.close_delay || in cy_set_serial_info()
2317 new_serial.baud_base != info->baud || in cy_set_serial_info()
2320 (info->port.flags & ASYNC_FLAGS & ~ASYNC_USR_MASK)) in cy_set_serial_info()
2322 mutex_unlock(&info->port.mutex); in cy_set_serial_info()
2325 info->port.flags = (info->port.flags & ~ASYNC_USR_MASK) | in cy_set_serial_info()
2327 info->baud = new_serial.baud_base; in cy_set_serial_info()
2328 info->custom_divisor = new_serial.custom_divisor; in cy_set_serial_info()
2337 info->baud = new_serial.baud_base; in cy_set_serial_info()
2338 info->custom_divisor = new_serial.custom_divisor; in cy_set_serial_info()
2339 info->port.flags = (info->port.flags & ~ASYNC_FLAGS) | in cy_set_serial_info()
2341 info->port.close_delay = new_serial.close_delay * HZ / 100; in cy_set_serial_info()
2342 info->port.closing_wait = new_serial.closing_wait * HZ / 100; in cy_set_serial_info()
2345 if (info->port.flags & ASYNC_INITIALIZED) { in cy_set_serial_info()
2346 cy_set_line_char(info, tty); in cy_set_serial_info()
2349 ret = cy_startup(info, tty); in cy_set_serial_info()
2351 mutex_unlock(&info->port.mutex); in cy_set_serial_info()
2365 static int get_lsr_info(struct cyclades_port *info, unsigned int __user *value) in get_lsr_info() argument
2367 struct cyclades_card *card = info->card; in get_lsr_info()
2374 status = cyy_readb(info, CySRER) & (CyTxRdy | CyTxMpty); in get_lsr_info()
2386 struct cyclades_port *info = tty->driver_data; in cy_tiocmget() local
2390 if (serial_paranoia_check(info, tty->name, __func__)) in cy_tiocmget()
2393 card = info->card; in cy_tiocmget()
2397 int channel = info->line - card->first_line; in cy_tiocmget()
2401 cyy_writeb(info, CyCAR, channel & 0x03); in cy_tiocmget()
2402 status = cyy_readb(info, CyMSVR1); in cy_tiocmget()
2403 status |= cyy_readb(info, CyMSVR2); in cy_tiocmget()
2406 if (info->rtsdtr_inv) { in cy_tiocmget()
2425 lstatus = readl(&info->u.cyz.ch_ctrl->rs_status); in cy_tiocmget()
2441 struct cyclades_port *info = tty->driver_data; in cy_tiocmset() local
2445 if (serial_paranoia_check(info, tty->name, __func__)) in cy_tiocmset()
2448 card = info->card; in cy_tiocmset()
2451 cyy_change_rts_dtr(info, set, clear); in cy_tiocmset()
2454 struct CH_CTRL __iomem *ch_ctrl = info->u.cyz.ch_ctrl; in cy_tiocmset()
2455 int retval, channel = info->line - card->first_line; in cy_tiocmset()
2485 "was %x\n", info->line, retval); in cy_tiocmset()
2496 struct cyclades_port *info = tty->driver_data; in cy_break() local
2501 if (serial_paranoia_check(info, tty->name, "cy_break")) in cy_break()
2504 card = info->card; in cy_break()
2512 if (!info->breakon) { in cy_break()
2513 info->breakon = 1; in cy_break()
2514 if (!info->xmit_cnt) { in cy_break()
2516 start_xmit(info); in cy_break()
2521 if (!info->breakoff) { in cy_break()
2522 info->breakoff = 1; in cy_break()
2523 if (!info->xmit_cnt) { in cy_break()
2525 start_xmit(info); in cy_break()
2533 info->line - card->first_line, in cy_break()
2537 "ttyC%d was %x\n", info->line, retval); in cy_break()
2541 info->line - card->first_line, in cy_break()
2545 "on ttyC%d was %x\n", info->line, in cy_break()
2554 static int set_threshold(struct cyclades_port *info, unsigned long value) in set_threshold() argument
2556 struct cyclades_card *card = info->card; in set_threshold()
2560 info->cor3 &= ~CyREC_FIFO; in set_threshold()
2561 info->cor3 |= value & CyREC_FIFO; in set_threshold()
2564 cyy_writeb(info, CyCOR3, info->cor3); in set_threshold()
2565 cyy_issue_cmd(info, CyCOR_CHANGE | CyCOR3ch); in set_threshold()
2571 static int get_threshold(struct cyclades_port *info, in get_threshold() argument
2574 struct cyclades_card *card = info->card; in get_threshold()
2577 u8 tmp = cyy_readb(info, CyCOR3) & CyREC_FIFO; in get_threshold()
2583 static int set_timeout(struct cyclades_port *info, unsigned long value) in set_timeout() argument
2585 struct cyclades_card *card = info->card; in set_timeout()
2590 cyy_writeb(info, CyRTPR, value & 0xff); in set_timeout()
2596 static int get_timeout(struct cyclades_port *info, in get_timeout() argument
2599 struct cyclades_card *card = info->card; in get_timeout()
2602 u8 tmp = cyy_readb(info, CyRTPR); in get_timeout()
2608 static int cy_cflags_changed(struct cyclades_port *info, unsigned long arg, in cy_cflags_changed() argument
2615 spin_lock_irqsave(&info->card->card_lock, flags); in cy_cflags_changed()
2616 cnow = info->icount; /* atomic copy */ in cy_cflags_changed()
2617 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_cflags_changed()
2638 struct cyclades_port *info = tty->driver_data; in cy_ioctl() local
2644 if (serial_paranoia_check(info, tty->name, "cy_ioctl")) in cy_ioctl()
2649 info->line, cmd, arg); in cy_ioctl()
2654 if (copy_to_user(argp, &info->mon, sizeof(info->mon))) { in cy_ioctl()
2658 memset(&info->mon, 0, sizeof(info->mon)); in cy_ioctl()
2661 ret_val = get_threshold(info, argp); in cy_ioctl()
2664 ret_val = set_threshold(info, arg); in cy_ioctl()
2667 ret_val = put_user(info->default_threshold, in cy_ioctl()
2671 info->default_threshold = arg & 0x0f; in cy_ioctl()
2674 ret_val = get_timeout(info, argp); in cy_ioctl()
2677 ret_val = set_timeout(info, arg); in cy_ioctl()
2680 ret_val = put_user(info->default_timeout, in cy_ioctl()
2684 info->default_timeout = arg & 0xff; in cy_ioctl()
2687 info->rflow = (int)arg; in cy_ioctl()
2690 ret_val = info->rflow; in cy_ioctl()
2693 info->rtsdtr_inv = (int)arg; in cy_ioctl()
2696 ret_val = info->rtsdtr_inv; in cy_ioctl()
2699 ret_val = info->chip_rev; in cy_ioctl()
2712 info->port.closing_wait = (unsigned short)arg * HZ / 100; in cy_ioctl()
2715 ret_val = info->port.closing_wait / (HZ / 100); in cy_ioctl()
2718 ret_val = cy_get_serial_info(info, argp); in cy_ioctl()
2721 ret_val = cy_set_serial_info(info, tty, argp); in cy_ioctl()
2724 ret_val = get_lsr_info(info, argp); in cy_ioctl()
2733 spin_lock_irqsave(&info->card->card_lock, flags); in cy_ioctl()
2735 cnow = info->icount; in cy_ioctl()
2736 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_ioctl()
2737 ret_val = wait_event_interruptible(info->port.delta_msr_wait, in cy_ioctl()
2738 cy_cflags_changed(info, arg, &cnow)); in cy_ioctl()
2760 struct cyclades_port *info = tty->driver_data; in cy_get_icount() local
2764 spin_lock_irqsave(&info->card->card_lock, flags); in cy_get_icount()
2765 cnow = info->icount; in cy_get_icount()
2766 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_get_icount()
2790 struct cyclades_port *info = tty->driver_data; in cy_set_termios() local
2793 printk(KERN_DEBUG "cyc:cy_set_termios ttyC%d\n", info->line); in cy_set_termios()
2796 cy_set_line_char(info, tty); in cy_set_termios()
2812 wake_up_interruptible(&info->port.open_wait); in cy_set_termios()
2821 struct cyclades_port *info = tty->driver_data; in cy_send_xchar() local
2825 if (serial_paranoia_check(info, tty->name, "cy_send_xchar")) in cy_send_xchar()
2828 info->x_char = ch; in cy_send_xchar()
2833 card = info->card; in cy_send_xchar()
2834 channel = info->line - card->first_line; in cy_send_xchar()
2850 struct cyclades_port *info = tty->driver_data; in cy_throttle() local
2856 tty->ldisc.chars_in_buffer(tty), info->line); in cy_throttle()
2859 if (serial_paranoia_check(info, tty->name, "cy_throttle")) in cy_throttle()
2862 card = info->card; in cy_throttle()
2868 info->throttle = 1; in cy_throttle()
2874 cyy_change_rts_dtr(info, 0, TIOCM_RTS); in cy_throttle()
2877 info->throttle = 1; in cy_throttle()
2889 struct cyclades_port *info = tty->driver_data; in cy_unthrottle() local
2895 tty_name(tty), tty_chars_in_buffer(tty), info->line); in cy_unthrottle()
2898 if (serial_paranoia_check(info, tty->name, "cy_unthrottle")) in cy_unthrottle()
2902 if (info->x_char) in cy_unthrottle()
2903 info->x_char = 0; in cy_unthrottle()
2909 card = info->card; in cy_unthrottle()
2912 cyy_change_rts_dtr(info, TIOCM_RTS, 0); in cy_unthrottle()
2915 info->throttle = 0; in cy_unthrottle()
2926 struct cyclades_port *info = tty->driver_data; in cy_stop() local
2931 printk(KERN_DEBUG "cyc:cy_stop ttyC%d\n", info->line); in cy_stop()
2934 if (serial_paranoia_check(info, tty->name, "cy_stop")) in cy_stop()
2937 cinfo = info->card; in cy_stop()
2938 channel = info->line - cinfo->first_line; in cy_stop()
2941 cyy_writeb(info, CyCAR, channel & 0x03); in cy_stop()
2942 cyy_writeb(info, CySRER, cyy_readb(info, CySRER) & ~CyTxRdy); in cy_stop()
2950 struct cyclades_port *info = tty->driver_data; in cy_start() local
2955 printk(KERN_DEBUG "cyc:cy_start ttyC%d\n", info->line); in cy_start()
2958 if (serial_paranoia_check(info, tty->name, "cy_start")) in cy_start()
2961 cinfo = info->card; in cy_start()
2962 channel = info->line - cinfo->first_line; in cy_start()
2965 cyy_writeb(info, CyCAR, channel & 0x03); in cy_start()
2966 cyy_writeb(info, CySRER, cyy_readb(info, CySRER) | CyTxRdy); in cy_start()
2976 struct cyclades_port *info = tty->driver_data; in cy_hangup() local
2979 printk(KERN_DEBUG "cyc:cy_hangup ttyC%d\n", info->line); in cy_hangup()
2982 if (serial_paranoia_check(info, tty->name, "cy_hangup")) in cy_hangup()
2986 cy_shutdown(info, tty); in cy_hangup()
2987 tty_port_hangup(&info->port); in cy_hangup()
2992 struct cyclades_port *info = container_of(port, struct cyclades_port, in cyy_carrier_raised() local
2994 struct cyclades_card *cinfo = info->card; in cyy_carrier_raised()
2996 int channel = info->line - cinfo->first_line; in cyy_carrier_raised()
3000 cyy_writeb(info, CyCAR, channel & 0x03); in cyy_carrier_raised()
3001 cd = cyy_readb(info, CyMSVR1) & CyDCD; in cyy_carrier_raised()
3009 struct cyclades_port *info = container_of(port, struct cyclades_port, in cyy_dtr_rts() local
3011 struct cyclades_card *cinfo = info->card; in cyy_dtr_rts()
3015 cyy_change_rts_dtr(info, raise ? TIOCM_RTS | TIOCM_DTR : 0, in cyy_dtr_rts()
3022 struct cyclades_port *info = container_of(port, struct cyclades_port, in cyz_carrier_raised() local
3025 return readl(&info->u.cyz.ch_ctrl->rs_status) & C_RS_DCD; in cyz_carrier_raised()
3030 struct cyclades_port *info = container_of(port, struct cyclades_port, in cyz_dtr_rts() local
3032 struct cyclades_card *cinfo = info->card; in cyz_dtr_rts()
3033 struct CH_CTRL __iomem *ch_ctrl = info->u.cyz.ch_ctrl; in cyz_dtr_rts()
3034 int ret, channel = info->line - cinfo->first_line; in cyz_dtr_rts()
3046 __func__, info->line, ret); in cyz_dtr_rts()
3074 struct cyclades_port *info; in cy_init_card() local
3089 info = &cinfo->ports[channel]; in cy_init_card()
3090 tty_port_init(&info->port); in cy_init_card()
3091 info->magic = CYCLADES_MAGIC; in cy_init_card()
3092 info->card = cinfo; in cy_init_card()
3093 info->line = port; in cy_init_card()
3095 info->port.closing_wait = CLOSING_WAIT_DELAY; in cy_init_card()
3096 info->port.close_delay = 5 * HZ / 10; in cy_init_card()
3097 info->port.flags = STD_COM_FLAGS; in cy_init_card()
3098 init_completion(&info->shutdown_wait); in cy_init_card()
3104 info->port.ops = &cyz_port_ops; in cy_init_card()
3105 info->type = PORT_STARTECH; in cy_init_card()
3109 info->u.cyz.ch_ctrl = &zfw_ctrl->ch_ctrl[channel]; in cy_init_card()
3110 info->u.cyz.buf_ctrl = &zfw_ctrl->buf_ctrl[channel]; in cy_init_card()
3113 info->xmit_fifo_size = CYZ_FIFO_SIZE; in cy_init_card()
3115 info->xmit_fifo_size = 4 * CYZ_FIFO_SIZE; in cy_init_card()
3118 cyz_rx_restart, (unsigned long)info); in cy_init_card()
3124 info->port.ops = &cyy_port_ops; in cy_init_card()
3125 info->type = PORT_CIRRUS; in cy_init_card()
3126 info->xmit_fifo_size = CyMAX_CHAR_FIFO; in cy_init_card()
3127 info->cor1 = CyPARITY_NONE | Cy_1_STOP | Cy_8_BITS; in cy_init_card()
3128 info->cor2 = CyETC; in cy_init_card()
3129 info->cor3 = 0x08; /* _very_ small rcv threshold */ in cy_init_card()
3132 info->u.cyy.base_addr = cinfo->base_addr + in cy_init_card()
3134 info->chip_rev = cyy_readb(info, CyGFRCR); in cy_init_card()
3136 if (info->chip_rev >= CD1400_REV_J) { in cy_init_card()
3138 info->tbpr = baud_bpr_60[13]; /* Tx BPR */ in cy_init_card()
3139 info->tco = baud_co_60[13]; /* Tx CO */ in cy_init_card()
3140 info->rbpr = baud_bpr_60[13]; /* Rx BPR */ in cy_init_card()
3141 info->rco = baud_co_60[13]; /* Rx CO */ in cy_init_card()
3142 info->rtsdtr_inv = 1; in cy_init_card()
3144 info->tbpr = baud_bpr_25[13]; /* Tx BPR */ in cy_init_card()
3145 info->tco = baud_co_25[13]; /* Tx CO */ in cy_init_card()
3146 info->rbpr = baud_bpr_25[13]; /* Rx BPR */ in cy_init_card()
3147 info->rco = baud_co_25[13]; /* Rx CO */ in cy_init_card()
3148 info->rtsdtr_inv = 0; in cy_init_card()
3150 info->read_status_mask = CyTIMEOUT | CySPECHAR | in cy_init_card()
3952 struct cyclades_port *info; in cyclades_proc_show() local
3962 info = &cy_card[i].ports[j]; in cyclades_proc_show()
3964 if (info->port.count) { in cyclades_proc_show()
3969 tty = tty_port_tty_get(&info->port); in cyclades_proc_show()
3979 "%10lu %8lu %9lu %6d\n", info->line, in cyclades_proc_show()
3980 (cur_jifs - info->idle_stats.in_use) / in cyclades_proc_show()
3981 HZ, info->idle_stats.xmit_bytes, in cyclades_proc_show()
3982 (cur_jifs - info->idle_stats.xmit_idle)/ in cyclades_proc_show()
3983 HZ, info->idle_stats.recv_bytes, in cyclades_proc_show()
3984 (cur_jifs - info->idle_stats.recv_idle)/ in cyclades_proc_show()
3985 HZ, info->idle_stats.overruns, in cyclades_proc_show()
3990 info->line, 0L, 0L, 0L, 0L, 0L, 0L, 0L); in cyclades_proc_show()