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 if (info->port.flags & ASYNC_CLOSING) { in cy_open()
1583 wait_event_interruptible_tty(tty, info->port.close_wait, in cy_open()
1584 !(info->port.flags & ASYNC_CLOSING)); in cy_open()
1585 return (info->port.flags & ASYNC_HUP_NOTIFY) ? -EAGAIN: -ERESTARTSYS; in cy_open()
1591 retval = cy_startup(info, tty); in cy_open()
1595 retval = tty_port_block_til_ready(&info->port, tty, filp); in cy_open()
1604 info->throttle = 0; in cy_open()
1605 tty_port_tty_set(&info->port, tty); in cy_open()
1619 struct cyclades_port *info = tty->driver_data; in cy_wait_until_sent() local
1623 if (serial_paranoia_check(info, tty->name, "cy_wait_until_sent")) in cy_wait_until_sent()
1626 if (info->xmit_fifo_size == 0) in cy_wait_until_sent()
1638 char_time = (info->timeout - HZ / 50) / info->xmit_fifo_size; in cy_wait_until_sent()
1655 if (!timeout || timeout > 2 * info->timeout) in cy_wait_until_sent()
1656 timeout = 2 * info->timeout; in cy_wait_until_sent()
1658 card = info->card; in cy_wait_until_sent()
1660 while (cyy_readb(info, CySRER) & CyTxRdy) { in cy_wait_until_sent()
1674 struct cyclades_port *info = tty->driver_data; in cy_flush_buffer() local
1680 printk(KERN_DEBUG "cyc:cy_flush_buffer ttyC%d\n", info->line); in cy_flush_buffer()
1683 if (serial_paranoia_check(info, tty->name, "cy_flush_buffer")) in cy_flush_buffer()
1686 card = info->card; in cy_flush_buffer()
1687 channel = info->line - card->first_line; in cy_flush_buffer()
1690 info->xmit_cnt = info->xmit_head = info->xmit_tail = 0; in cy_flush_buffer()
1699 "was %x\n", info->line, retval); in cy_flush_buffer()
1709 struct cyclades_port *info = container_of(port, struct cyclades_port, in cy_do_close() local
1715 card = info->card; in cy_do_close()
1716 channel = info->line - card->first_line; in cy_do_close()
1721 cyy_writeb(info, CyCAR, channel & 0x03); in cy_do_close()
1722 cyy_writeb(info, CySRER, cyy_readb(info, CySRER) & ~CyRxData); in cy_do_close()
1723 if (info->port.flags & ASYNC_INITIALIZED) { in cy_do_close()
1727 cy_wait_until_sent(port->tty, info->timeout); in cy_do_close()
1734 struct CH_CTRL __iomem *ch_ctrl = info->u.cyz.ch_ctrl; in cy_do_close()
1741 "ttyC%d was %x\n", info->line, retval); in cy_do_close()
1744 wait_for_completion_interruptible(&info->shutdown_wait); in cy_do_close()
1750 cy_shutdown(info, port->tty); in cy_do_close()
1758 struct cyclades_port *info = tty->driver_data; in cy_close() local
1759 if (!info || serial_paranoia_check(info, tty->name, "cy_close")) in cy_close()
1761 tty_port_close(&info->port, tty, filp); in cy_close()
1779 struct cyclades_port *info = tty->driver_data; in cy_write() local
1784 printk(KERN_DEBUG "cyc:cy_write ttyC%d\n", info->line); in cy_write()
1787 if (serial_paranoia_check(info, tty->name, "cy_write")) in cy_write()
1790 if (!info->port.xmit_buf) in cy_write()
1793 spin_lock_irqsave(&info->card->card_lock, flags); in cy_write()
1795 c = min(count, (int)(SERIAL_XMIT_SIZE - info->xmit_cnt - 1)); in cy_write()
1796 c = min(c, (int)(SERIAL_XMIT_SIZE - info->xmit_head)); in cy_write()
1801 memcpy(info->port.xmit_buf + info->xmit_head, buf, c); in cy_write()
1802 info->xmit_head = (info->xmit_head + c) & in cy_write()
1804 info->xmit_cnt += c; in cy_write()
1809 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_write()
1811 info->idle_stats.xmit_bytes += ret; in cy_write()
1812 info->idle_stats.xmit_idle = jiffies; in cy_write()
1814 if (info->xmit_cnt && !tty->stopped && !tty->hw_stopped) in cy_write()
1815 start_xmit(info); in cy_write()
1829 struct cyclades_port *info = tty->driver_data; in cy_put_char() local
1833 printk(KERN_DEBUG "cyc:cy_put_char ttyC%d\n", info->line); in cy_put_char()
1836 if (serial_paranoia_check(info, tty->name, "cy_put_char")) in cy_put_char()
1839 if (!info->port.xmit_buf) in cy_put_char()
1842 spin_lock_irqsave(&info->card->card_lock, flags); in cy_put_char()
1843 if (info->xmit_cnt >= (int)(SERIAL_XMIT_SIZE - 1)) { in cy_put_char()
1844 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_put_char()
1848 info->port.xmit_buf[info->xmit_head++] = ch; in cy_put_char()
1849 info->xmit_head &= SERIAL_XMIT_SIZE - 1; in cy_put_char()
1850 info->xmit_cnt++; in cy_put_char()
1851 info->idle_stats.xmit_bytes++; in cy_put_char()
1852 info->idle_stats.xmit_idle = jiffies; in cy_put_char()
1853 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_put_char()
1863 struct cyclades_port *info = tty->driver_data; in cy_flush_chars() local
1866 printk(KERN_DEBUG "cyc:cy_flush_chars ttyC%d\n", info->line); in cy_flush_chars()
1869 if (serial_paranoia_check(info, tty->name, "cy_flush_chars")) in cy_flush_chars()
1872 if (info->xmit_cnt <= 0 || tty->stopped || tty->hw_stopped || in cy_flush_chars()
1873 !info->port.xmit_buf) in cy_flush_chars()
1876 start_xmit(info); in cy_flush_chars()
1887 struct cyclades_port *info = tty->driver_data; in cy_write_room() local
1891 printk(KERN_DEBUG "cyc:cy_write_room ttyC%d\n", info->line); in cy_write_room()
1894 if (serial_paranoia_check(info, tty->name, "cy_write_room")) in cy_write_room()
1896 ret = SERIAL_XMIT_SIZE - info->xmit_cnt - 1; in cy_write_room()
1904 struct cyclades_port *info = tty->driver_data; in cy_chars_in_buffer() local
1906 if (serial_paranoia_check(info, tty->name, "cy_chars_in_buffer")) in cy_chars_in_buffer()
1910 if (!cy_is_Z(info->card)) { in cy_chars_in_buffer()
1914 info->line, info->xmit_cnt); in cy_chars_in_buffer()
1916 return info->xmit_cnt; in cy_chars_in_buffer()
1919 struct BUF_CTRL __iomem *buf_ctrl = info->u.cyz.buf_ctrl; in cy_chars_in_buffer()
1932 info->line, info->xmit_cnt + char_count); in cy_chars_in_buffer()
1934 return info->xmit_cnt + char_count; in cy_chars_in_buffer()
1945 static void cyy_baud_calc(struct cyclades_port *info, __u32 baud) in cyy_baud_calc() argument
1948 __u32 cy_clock = ((info->chip_rev >= CD1400_REV_J) ? 60000000 : in cyy_baud_calc()
1952 info->tbpr = info->tco = info->rbpr = info->rco = 0; in cyy_baud_calc()
1966 info->tbpr = info->rbpr = bpr; in cyy_baud_calc()
1967 info->tco = info->rco = co; in cyy_baud_calc()
1974 static void cy_set_line_char(struct cyclades_port *info, struct tty_struct *tty) in cy_set_line_char() argument
1983 if (info->line == -1) in cy_set_line_char()
1992 if ((info->port.flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) in cy_set_line_char()
1994 if ((info->port.flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) in cy_set_line_char()
1996 if ((info->port.flags & ASYNC_SPD_MASK) == ASYNC_SPD_SHI) in cy_set_line_char()
1998 if ((info->port.flags & ASYNC_SPD_MASK) == ASYNC_SPD_WARP) in cy_set_line_char()
2001 card = info->card; in cy_set_line_char()
2002 channel = info->line - card->first_line; in cy_set_line_char()
2009 if (baud == 38400 && (info->port.flags & ASYNC_SPD_MASK) == in cy_set_line_char()
2011 if (info->custom_divisor) in cy_set_line_char()
2012 baud_rate = info->baud / info->custom_divisor; in cy_set_line_char()
2014 baud_rate = info->baud; in cy_set_line_char()
2026 if (baud == 38400 && (info->port.flags & ASYNC_SPD_MASK) == in cy_set_line_char()
2028 cyy_baud_calc(info, baud_rate); in cy_set_line_char()
2030 if (info->chip_rev >= CD1400_REV_J) { in cy_set_line_char()
2032 info->tbpr = baud_bpr_60[i]; /* Tx BPR */ in cy_set_line_char()
2033 info->tco = baud_co_60[i]; /* Tx CO */ in cy_set_line_char()
2034 info->rbpr = baud_bpr_60[i]; /* Rx BPR */ in cy_set_line_char()
2035 info->rco = baud_co_60[i]; /* Rx CO */ in cy_set_line_char()
2037 info->tbpr = baud_bpr_25[i]; /* Tx BPR */ in cy_set_line_char()
2038 info->tco = baud_co_25[i]; /* Tx CO */ in cy_set_line_char()
2039 info->rbpr = baud_bpr_25[i]; /* Rx BPR */ in cy_set_line_char()
2040 info->rco = baud_co_25[i]; /* Rx CO */ in cy_set_line_char()
2045 info->timeout = (info->xmit_fifo_size * HZ * 30 / 269) + in cy_set_line_char()
2047 } else if (baud == 38400 && (info->port.flags & ASYNC_SPD_MASK) == in cy_set_line_char()
2049 info->timeout = (info->xmit_fifo_size * HZ * 15 / in cy_set_line_char()
2052 info->timeout = (info->xmit_fifo_size * HZ * 15 / in cy_set_line_char()
2056 info->timeout = 0; in cy_set_line_char()
2063 info->cor5 = 0; in cy_set_line_char()
2064 info->cor4 = 0; in cy_set_line_char()
2066 info->cor3 = (info->default_threshold ? in cy_set_line_char()
2067 info->default_threshold : baud_cor3[i]); in cy_set_line_char()
2068 info->cor2 = CyETC; in cy_set_line_char()
2071 info->cor1 = Cy_5_BITS; in cy_set_line_char()
2074 info->cor1 = Cy_6_BITS; in cy_set_line_char()
2077 info->cor1 = Cy_7_BITS; in cy_set_line_char()
2080 info->cor1 = Cy_8_BITS; in cy_set_line_char()
2084 info->cor1 |= Cy_2_STOP; in cy_set_line_char()
2088 info->cor1 |= CyPARITY_O; in cy_set_line_char()
2090 info->cor1 |= CyPARITY_E; in cy_set_line_char()
2092 info->cor1 |= CyPARITY_NONE; in cy_set_line_char()
2096 info->port.flags |= ASYNC_CTS_FLOW; in cy_set_line_char()
2097 info->cor2 |= CyCtsAE; in cy_set_line_char()
2099 info->port.flags &= ~ASYNC_CTS_FLOW; in cy_set_line_char()
2100 info->cor2 &= ~CyCtsAE; in cy_set_line_char()
2103 info->port.flags &= ~ASYNC_CHECK_CD; in cy_set_line_char()
2105 info->port.flags |= ASYNC_CHECK_CD; in cy_set_line_char()
2120 cyy_writeb(info, CyCAR, channel); in cy_set_line_char()
2124 cyy_writeb(info, CyTCOR, info->tco); in cy_set_line_char()
2125 cyy_writeb(info, CyTBPR, info->tbpr); in cy_set_line_char()
2126 cyy_writeb(info, CyRCOR, info->rco); in cy_set_line_char()
2127 cyy_writeb(info, CyRBPR, info->rbpr); in cy_set_line_char()
2131 cyy_writeb(info, CySCHR1, START_CHAR(tty)); in cy_set_line_char()
2132 cyy_writeb(info, CySCHR2, STOP_CHAR(tty)); in cy_set_line_char()
2133 cyy_writeb(info, CyCOR1, info->cor1); in cy_set_line_char()
2134 cyy_writeb(info, CyCOR2, info->cor2); in cy_set_line_char()
2135 cyy_writeb(info, CyCOR3, info->cor3); in cy_set_line_char()
2136 cyy_writeb(info, CyCOR4, info->cor4); in cy_set_line_char()
2137 cyy_writeb(info, CyCOR5, info->cor5); in cy_set_line_char()
2139 cyy_issue_cmd(info, CyCOR_CHANGE | CyCOR1ch | CyCOR2ch | in cy_set_line_char()
2143 cyy_writeb(info, CyCAR, channel); in cy_set_line_char()
2144 cyy_writeb(info, CyRTPR, in cy_set_line_char()
2145 (info->default_timeout ? info->default_timeout : 0x02)); in cy_set_line_char()
2152 cyy_writeb(info, CySRER, cyy_readb(info, CySRER) | CyMdmCh); in cy_set_line_char()
2154 if ((cflag & CRTSCTS) && info->rflow) in cy_set_line_char()
2155 cyy_writeb(info, CyMCOR1, cflags | rflow_thr[i]); in cy_set_line_char()
2157 cyy_writeb(info, CyMCOR1, cflags); in cy_set_line_char()
2159 cyy_writeb(info, CyMCOR2, cflags); in cy_set_line_char()
2162 cyy_change_rts_dtr(info, 0, TIOCM_DTR); in cy_set_line_char()
2164 cyy_change_rts_dtr(info, TIOCM_DTR, 0); in cy_set_line_char()
2170 struct CH_CTRL __iomem *ch_ctrl = info->u.cyz.ch_ctrl; in cy_set_line_char()
2179 if (baud == 38400 && (info->port.flags & ASYNC_SPD_MASK) == in cy_set_line_char()
2181 if (info->custom_divisor) in cy_set_line_char()
2182 baud_rate = info->baud / info->custom_divisor; in cy_set_line_char()
2184 baud_rate = info->baud; in cy_set_line_char()
2192 info->timeout = (info->xmit_fifo_size * HZ * 30 / 269) + in cy_set_line_char()
2194 } else if (baud == 38400 && (info->port.flags & ASYNC_SPD_MASK) == in cy_set_line_char()
2196 info->timeout = (info->xmit_fifo_size * HZ * 15 / in cy_set_line_char()
2199 info->timeout = (info->xmit_fifo_size * HZ * 15 / in cy_set_line_char()
2203 info->timeout = 0; in cy_set_line_char()
2246 info->port.flags &= ~ASYNC_CTS_FLOW; in cy_set_line_char()
2260 "was %x\n", info->line, retval); in cy_set_line_char()
2265 info->port.flags &= ~ASYNC_CHECK_CD; in cy_set_line_char()
2267 info->port.flags |= ASYNC_CHECK_CD; in cy_set_line_char()
2286 "was %x\n", info->line, retval); in cy_set_line_char()
2293 static int cy_get_serial_info(struct cyclades_port *info, in cy_get_serial_info() argument
2296 struct cyclades_card *cinfo = info->card; in cy_get_serial_info()
2298 .type = info->type, in cy_get_serial_info()
2299 .line = info->line, in cy_get_serial_info()
2300 .port = (info->card - cy_card) * 0x100 + info->line - in cy_get_serial_info()
2303 .flags = info->port.flags, in cy_get_serial_info()
2304 .close_delay = info->port.close_delay, in cy_get_serial_info()
2305 .closing_wait = info->port.closing_wait, in cy_get_serial_info()
2306 .baud_base = info->baud, in cy_get_serial_info()
2307 .custom_divisor = info->custom_divisor, in cy_get_serial_info()
2314 cy_set_serial_info(struct cyclades_port *info, struct tty_struct *tty, in cy_set_serial_info() argument
2323 mutex_lock(&info->port.mutex); in cy_set_serial_info()
2325 if (new_serial.close_delay != info->port.close_delay || in cy_set_serial_info()
2326 new_serial.baud_base != info->baud || in cy_set_serial_info()
2329 (info->port.flags & ASYNC_FLAGS & ~ASYNC_USR_MASK)) in cy_set_serial_info()
2331 mutex_unlock(&info->port.mutex); in cy_set_serial_info()
2334 info->port.flags = (info->port.flags & ~ASYNC_USR_MASK) | in cy_set_serial_info()
2336 info->baud = new_serial.baud_base; in cy_set_serial_info()
2337 info->custom_divisor = new_serial.custom_divisor; in cy_set_serial_info()
2346 info->baud = new_serial.baud_base; in cy_set_serial_info()
2347 info->custom_divisor = new_serial.custom_divisor; in cy_set_serial_info()
2348 info->port.flags = (info->port.flags & ~ASYNC_FLAGS) | in cy_set_serial_info()
2350 info->port.close_delay = new_serial.close_delay * HZ / 100; in cy_set_serial_info()
2351 info->port.closing_wait = new_serial.closing_wait * HZ / 100; in cy_set_serial_info()
2354 if (info->port.flags & ASYNC_INITIALIZED) { in cy_set_serial_info()
2355 cy_set_line_char(info, tty); in cy_set_serial_info()
2358 ret = cy_startup(info, tty); in cy_set_serial_info()
2360 mutex_unlock(&info->port.mutex); in cy_set_serial_info()
2374 static int get_lsr_info(struct cyclades_port *info, unsigned int __user *value) in get_lsr_info() argument
2376 struct cyclades_card *card = info->card; in get_lsr_info()
2383 status = cyy_readb(info, CySRER) & (CyTxRdy | CyTxMpty); in get_lsr_info()
2395 struct cyclades_port *info = tty->driver_data; in cy_tiocmget() local
2399 if (serial_paranoia_check(info, tty->name, __func__)) in cy_tiocmget()
2402 card = info->card; in cy_tiocmget()
2406 int channel = info->line - card->first_line; in cy_tiocmget()
2410 cyy_writeb(info, CyCAR, channel & 0x03); in cy_tiocmget()
2411 status = cyy_readb(info, CyMSVR1); in cy_tiocmget()
2412 status |= cyy_readb(info, CyMSVR2); in cy_tiocmget()
2415 if (info->rtsdtr_inv) { in cy_tiocmget()
2434 lstatus = readl(&info->u.cyz.ch_ctrl->rs_status); in cy_tiocmget()
2450 struct cyclades_port *info = tty->driver_data; in cy_tiocmset() local
2454 if (serial_paranoia_check(info, tty->name, __func__)) in cy_tiocmset()
2457 card = info->card; in cy_tiocmset()
2460 cyy_change_rts_dtr(info, set, clear); in cy_tiocmset()
2463 struct CH_CTRL __iomem *ch_ctrl = info->u.cyz.ch_ctrl; in cy_tiocmset()
2464 int retval, channel = info->line - card->first_line; in cy_tiocmset()
2494 "was %x\n", info->line, retval); in cy_tiocmset()
2505 struct cyclades_port *info = tty->driver_data; in cy_break() local
2510 if (serial_paranoia_check(info, tty->name, "cy_break")) in cy_break()
2513 card = info->card; in cy_break()
2521 if (!info->breakon) { in cy_break()
2522 info->breakon = 1; in cy_break()
2523 if (!info->xmit_cnt) { in cy_break()
2525 start_xmit(info); in cy_break()
2530 if (!info->breakoff) { in cy_break()
2531 info->breakoff = 1; in cy_break()
2532 if (!info->xmit_cnt) { in cy_break()
2534 start_xmit(info); in cy_break()
2542 info->line - card->first_line, in cy_break()
2546 "ttyC%d was %x\n", info->line, retval); in cy_break()
2550 info->line - card->first_line, in cy_break()
2554 "on ttyC%d was %x\n", info->line, in cy_break()
2563 static int set_threshold(struct cyclades_port *info, unsigned long value) in set_threshold() argument
2565 struct cyclades_card *card = info->card; in set_threshold()
2569 info->cor3 &= ~CyREC_FIFO; in set_threshold()
2570 info->cor3 |= value & CyREC_FIFO; in set_threshold()
2573 cyy_writeb(info, CyCOR3, info->cor3); in set_threshold()
2574 cyy_issue_cmd(info, CyCOR_CHANGE | CyCOR3ch); in set_threshold()
2580 static int get_threshold(struct cyclades_port *info, in get_threshold() argument
2583 struct cyclades_card *card = info->card; in get_threshold()
2586 u8 tmp = cyy_readb(info, CyCOR3) & CyREC_FIFO; in get_threshold()
2592 static int set_timeout(struct cyclades_port *info, unsigned long value) in set_timeout() argument
2594 struct cyclades_card *card = info->card; in set_timeout()
2599 cyy_writeb(info, CyRTPR, value & 0xff); in set_timeout()
2605 static int get_timeout(struct cyclades_port *info, in get_timeout() argument
2608 struct cyclades_card *card = info->card; in get_timeout()
2611 u8 tmp = cyy_readb(info, CyRTPR); in get_timeout()
2617 static int cy_cflags_changed(struct cyclades_port *info, unsigned long arg, in cy_cflags_changed() argument
2624 spin_lock_irqsave(&info->card->card_lock, flags); in cy_cflags_changed()
2625 cnow = info->icount; /* atomic copy */ in cy_cflags_changed()
2626 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_cflags_changed()
2647 struct cyclades_port *info = tty->driver_data; in cy_ioctl() local
2653 if (serial_paranoia_check(info, tty->name, "cy_ioctl")) in cy_ioctl()
2658 info->line, cmd, arg); in cy_ioctl()
2663 if (copy_to_user(argp, &info->mon, sizeof(info->mon))) { in cy_ioctl()
2667 memset(&info->mon, 0, sizeof(info->mon)); in cy_ioctl()
2670 ret_val = get_threshold(info, argp); in cy_ioctl()
2673 ret_val = set_threshold(info, arg); in cy_ioctl()
2676 ret_val = put_user(info->default_threshold, in cy_ioctl()
2680 info->default_threshold = arg & 0x0f; in cy_ioctl()
2683 ret_val = get_timeout(info, argp); in cy_ioctl()
2686 ret_val = set_timeout(info, arg); in cy_ioctl()
2689 ret_val = put_user(info->default_timeout, in cy_ioctl()
2693 info->default_timeout = arg & 0xff; in cy_ioctl()
2696 info->rflow = (int)arg; in cy_ioctl()
2699 ret_val = info->rflow; in cy_ioctl()
2702 info->rtsdtr_inv = (int)arg; in cy_ioctl()
2705 ret_val = info->rtsdtr_inv; in cy_ioctl()
2708 ret_val = info->chip_rev; in cy_ioctl()
2721 info->port.closing_wait = (unsigned short)arg * HZ / 100; in cy_ioctl()
2724 ret_val = info->port.closing_wait / (HZ / 100); in cy_ioctl()
2727 ret_val = cy_get_serial_info(info, argp); in cy_ioctl()
2730 ret_val = cy_set_serial_info(info, tty, argp); in cy_ioctl()
2733 ret_val = get_lsr_info(info, argp); in cy_ioctl()
2742 spin_lock_irqsave(&info->card->card_lock, flags); in cy_ioctl()
2744 cnow = info->icount; in cy_ioctl()
2745 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_ioctl()
2746 ret_val = wait_event_interruptible(info->port.delta_msr_wait, in cy_ioctl()
2747 cy_cflags_changed(info, arg, &cnow)); in cy_ioctl()
2769 struct cyclades_port *info = tty->driver_data; in cy_get_icount() local
2773 spin_lock_irqsave(&info->card->card_lock, flags); in cy_get_icount()
2774 cnow = info->icount; in cy_get_icount()
2775 spin_unlock_irqrestore(&info->card->card_lock, flags); in cy_get_icount()
2799 struct cyclades_port *info = tty->driver_data; in cy_set_termios() local
2802 printk(KERN_DEBUG "cyc:cy_set_termios ttyC%d\n", info->line); in cy_set_termios()
2805 cy_set_line_char(info, tty); in cy_set_termios()
2821 wake_up_interruptible(&info->port.open_wait); in cy_set_termios()
2830 struct cyclades_port *info = tty->driver_data; in cy_send_xchar() local
2834 if (serial_paranoia_check(info, tty->name, "cy_send_xchar")) in cy_send_xchar()
2837 info->x_char = ch; in cy_send_xchar()
2842 card = info->card; in cy_send_xchar()
2843 channel = info->line - card->first_line; in cy_send_xchar()
2859 struct cyclades_port *info = tty->driver_data; in cy_throttle() local
2867 tty->ldisc.chars_in_buffer(tty), info->line); in cy_throttle()
2870 if (serial_paranoia_check(info, tty->name, "cy_throttle")) in cy_throttle()
2873 card = info->card; in cy_throttle()
2879 info->throttle = 1; in cy_throttle()
2885 cyy_change_rts_dtr(info, 0, TIOCM_RTS); in cy_throttle()
2888 info->throttle = 1; in cy_throttle()
2900 struct cyclades_port *info = tty->driver_data; in cy_unthrottle() local
2908 tty_name(tty, buf), tty_chars_in_buffer(tty), info->line); in cy_unthrottle()
2911 if (serial_paranoia_check(info, tty->name, "cy_unthrottle")) in cy_unthrottle()
2915 if (info->x_char) in cy_unthrottle()
2916 info->x_char = 0; in cy_unthrottle()
2922 card = info->card; in cy_unthrottle()
2925 cyy_change_rts_dtr(info, TIOCM_RTS, 0); in cy_unthrottle()
2928 info->throttle = 0; in cy_unthrottle()
2939 struct cyclades_port *info = tty->driver_data; in cy_stop() local
2944 printk(KERN_DEBUG "cyc:cy_stop ttyC%d\n", info->line); in cy_stop()
2947 if (serial_paranoia_check(info, tty->name, "cy_stop")) in cy_stop()
2950 cinfo = info->card; in cy_stop()
2951 channel = info->line - cinfo->first_line; in cy_stop()
2954 cyy_writeb(info, CyCAR, channel & 0x03); in cy_stop()
2955 cyy_writeb(info, CySRER, cyy_readb(info, CySRER) & ~CyTxRdy); in cy_stop()
2963 struct cyclades_port *info = tty->driver_data; in cy_start() local
2968 printk(KERN_DEBUG "cyc:cy_start ttyC%d\n", info->line); in cy_start()
2971 if (serial_paranoia_check(info, tty->name, "cy_start")) in cy_start()
2974 cinfo = info->card; in cy_start()
2975 channel = info->line - cinfo->first_line; in cy_start()
2978 cyy_writeb(info, CyCAR, channel & 0x03); in cy_start()
2979 cyy_writeb(info, CySRER, cyy_readb(info, CySRER) | CyTxRdy); in cy_start()
2989 struct cyclades_port *info = tty->driver_data; in cy_hangup() local
2992 printk(KERN_DEBUG "cyc:cy_hangup ttyC%d\n", info->line); in cy_hangup()
2995 if (serial_paranoia_check(info, tty->name, "cy_hangup")) in cy_hangup()
2999 cy_shutdown(info, tty); in cy_hangup()
3000 tty_port_hangup(&info->port); in cy_hangup()
3005 struct cyclades_port *info = container_of(port, struct cyclades_port, in cyy_carrier_raised() local
3007 struct cyclades_card *cinfo = info->card; in cyy_carrier_raised()
3009 int channel = info->line - cinfo->first_line; in cyy_carrier_raised()
3013 cyy_writeb(info, CyCAR, channel & 0x03); in cyy_carrier_raised()
3014 cd = cyy_readb(info, CyMSVR1) & CyDCD; in cyy_carrier_raised()
3022 struct cyclades_port *info = container_of(port, struct cyclades_port, in cyy_dtr_rts() local
3024 struct cyclades_card *cinfo = info->card; in cyy_dtr_rts()
3028 cyy_change_rts_dtr(info, raise ? TIOCM_RTS | TIOCM_DTR : 0, in cyy_dtr_rts()
3035 struct cyclades_port *info = container_of(port, struct cyclades_port, in cyz_carrier_raised() local
3038 return readl(&info->u.cyz.ch_ctrl->rs_status) & C_RS_DCD; in cyz_carrier_raised()
3043 struct cyclades_port *info = container_of(port, struct cyclades_port, in cyz_dtr_rts() local
3045 struct cyclades_card *cinfo = info->card; in cyz_dtr_rts()
3046 struct CH_CTRL __iomem *ch_ctrl = info->u.cyz.ch_ctrl; in cyz_dtr_rts()
3047 int ret, channel = info->line - cinfo->first_line; in cyz_dtr_rts()
3059 __func__, info->line, ret); in cyz_dtr_rts()
3087 struct cyclades_port *info; in cy_init_card() local
3102 info = &cinfo->ports[channel]; in cy_init_card()
3103 tty_port_init(&info->port); in cy_init_card()
3104 info->magic = CYCLADES_MAGIC; in cy_init_card()
3105 info->card = cinfo; in cy_init_card()
3106 info->line = port; in cy_init_card()
3108 info->port.closing_wait = CLOSING_WAIT_DELAY; in cy_init_card()
3109 info->port.close_delay = 5 * HZ / 10; in cy_init_card()
3110 info->port.flags = STD_COM_FLAGS; in cy_init_card()
3111 init_completion(&info->shutdown_wait); in cy_init_card()
3117 info->port.ops = &cyz_port_ops; in cy_init_card()
3118 info->type = PORT_STARTECH; in cy_init_card()
3122 info->u.cyz.ch_ctrl = &zfw_ctrl->ch_ctrl[channel]; in cy_init_card()
3123 info->u.cyz.buf_ctrl = &zfw_ctrl->buf_ctrl[channel]; in cy_init_card()
3126 info->xmit_fifo_size = CYZ_FIFO_SIZE; in cy_init_card()
3128 info->xmit_fifo_size = 4 * CYZ_FIFO_SIZE; in cy_init_card()
3131 cyz_rx_restart, (unsigned long)info); in cy_init_card()
3137 info->port.ops = &cyy_port_ops; in cy_init_card()
3138 info->type = PORT_CIRRUS; in cy_init_card()
3139 info->xmit_fifo_size = CyMAX_CHAR_FIFO; in cy_init_card()
3140 info->cor1 = CyPARITY_NONE | Cy_1_STOP | Cy_8_BITS; in cy_init_card()
3141 info->cor2 = CyETC; in cy_init_card()
3142 info->cor3 = 0x08; /* _very_ small rcv threshold */ in cy_init_card()
3145 info->u.cyy.base_addr = cinfo->base_addr + in cy_init_card()
3147 info->chip_rev = cyy_readb(info, CyGFRCR); in cy_init_card()
3149 if (info->chip_rev >= CD1400_REV_J) { in cy_init_card()
3151 info->tbpr = baud_bpr_60[13]; /* Tx BPR */ in cy_init_card()
3152 info->tco = baud_co_60[13]; /* Tx CO */ in cy_init_card()
3153 info->rbpr = baud_bpr_60[13]; /* Rx BPR */ in cy_init_card()
3154 info->rco = baud_co_60[13]; /* Rx CO */ in cy_init_card()
3155 info->rtsdtr_inv = 1; in cy_init_card()
3157 info->tbpr = baud_bpr_25[13]; /* Tx BPR */ in cy_init_card()
3158 info->tco = baud_co_25[13]; /* Tx CO */ in cy_init_card()
3159 info->rbpr = baud_bpr_25[13]; /* Rx BPR */ in cy_init_card()
3160 info->rco = baud_co_25[13]; /* Rx CO */ in cy_init_card()
3161 info->rtsdtr_inv = 0; in cy_init_card()
3163 info->read_status_mask = CyTIMEOUT | CySPECHAR | in cy_init_card()
3965 struct cyclades_port *info; in cyclades_proc_show() local
3975 info = &cy_card[i].ports[j]; in cyclades_proc_show()
3977 if (info->port.count) { in cyclades_proc_show()
3982 tty = tty_port_tty_get(&info->port); in cyclades_proc_show()
3992 "%10lu %8lu %9lu %6d\n", info->line, in cyclades_proc_show()
3993 (cur_jifs - info->idle_stats.in_use) / in cyclades_proc_show()
3994 HZ, info->idle_stats.xmit_bytes, in cyclades_proc_show()
3995 (cur_jifs - info->idle_stats.xmit_idle)/ in cyclades_proc_show()
3996 HZ, info->idle_stats.recv_bytes, in cyclades_proc_show()
3997 (cur_jifs - info->idle_stats.recv_idle)/ in cyclades_proc_show()
3998 HZ, info->idle_stats.overruns, in cyclades_proc_show()
4003 info->line, 0L, 0L, 0L, 0L, 0L, 0L, 0L); in cyclades_proc_show()