Home | History | Annotate | Download | only in ic

Lines Matching defs:zst

329 	struct zstty_softc *zst = device_private(self);
341 zst->zst_dev = self;
343 callout_init(&zst->zst_diag_ch, 0);
349 cs->cs_private = zst;
352 zst->zst_cs = cs;
353 zst->zst_swflags = cf->cf_flags; /* softcar, etc. */
354 zst->zst_hwflags = args->hwflags;
357 if (zst->zst_swflags)
358 aprint_normal(" flags 0x%x", zst->zst_swflags);
366 if ((zst->zst_hwflags & ZS_HWFLAG_CONSOLE_INPUT) != 0) {
377 if ((zst->zst_hwflags & ZS_HWFLAG_CONSOLE_OUTPUT) != 0) {
410 zst->zst_tty = tp;
411 zst->zst_rbuf = malloc(zstty_rbuf_size << 1, M_DEVBUF, M_WAITOK);
412 zst->zst_ebuf = zst->zst_rbuf + (zstty_rbuf_size << 1);
414 zst->zst_r_hiwat = 0;
415 zst->zst_r_lowat = 0;
416 zst->zst_rbget = zst->zst_rbput = zst->zst_rbuf;
417 zst->zst_rbavail = zstty_rbuf_size;
429 if (ISSET(zst->zst_hwflags, ZS_HWFLAG_CONSOLE)) {
456 } else if (!ISSET(zst->zst_hwflags, ZS_HWFLAG_NORESET)) {
464 zs_modem(zst, dtr_on);
475 struct zstty_softc *zst;
477 zst = device_lookup_private(&zstty_cd, ZSUNIT(dev));
479 return (zst->zst_tty);
484 zs_shutdown(struct zstty_softc *zst)
486 struct zs_chanstate *cs = zst->zst_cs;
487 struct tty *tp = zst->zst_tty;
492 SET(zst->zst_rx_flags, RX_IBUF_BLOCKED);
493 zs_hwiflow(zst);
503 zs_modem(zst, 0);
518 if (!ISSET(zst->zst_hwflags, ZS_HWFLAG_CONSOLE)) {
530 (*cs->disable)(zst->zst_cs);
542 struct zstty_softc *zst;
547 zst = device_lookup_private(&zstty_cd, ZSUNIT(dev));
548 if (zst == NULL)
551 tp = zst->zst_tty;
552 cs = zst->zst_cs;
583 device_xname(zst->zst_dev));
595 if (ISSET(zst->zst_swflags, TIOCFLAG_CLOCAL))
597 if (ISSET(zst->zst_swflags, TIOCFLAG_CRTSCTS))
599 if (ISSET(zst->zst_swflags, TIOCFLAG_CDTRCTS))
601 if (ISSET(zst->zst_swflags, TIOCFLAG_MDMBUF))
616 zst->zst_ppsmask = 0;
617 memset(&zst->zst_pps_state, 0, sizeof(zst->zst_pps_state));
618 zst->zst_pps_state.ppscap =
620 pps_init(&zst->zst_pps_state);
636 if (!ISSET(zst->zst_hwflags, ZS_HWFLAG_RAW)) {
657 zs_modem(zst, 1);
660 zst->zst_rbget = zst->zst_rbput = zst->zst_rbuf;
661 zst->zst_rbavail = zstty_rbuf_size;
663 CLR(zst->zst_rx_flags, RX_ANY_BLOCK);
664 zs_hwiflow(zst);
687 zs_shutdown(zst);
699 struct zstty_softc *zst;
702 zst = device_lookup_private(&zstty_cd, ZSUNIT(dev));
703 tp = zst->zst_tty;
718 zs_shutdown(zst);
730 struct zstty_softc *zst;
733 zst = device_lookup_private(&zstty_cd, ZSUNIT(dev));
734 tp = zst->zst_tty;
742 struct zstty_softc *zst;
745 zst = device_lookup_private(&zstty_cd, ZSUNIT(dev));
746 tp = zst->zst_tty;
754 struct zstty_softc *zst;
757 zst = device_lookup_private(&zstty_cd, ZSUNIT(dev));
758 tp = zst->zst_tty;
766 struct zstty_softc *zst;
771 zst = device_lookup_private(&zstty_cd, ZSUNIT(dev));
772 cs = zst->zst_cs;
773 tp = zst->zst_tty;
802 *(int *)data = zst->zst_swflags;
810 zst->zst_swflags = *(int *)data;
814 zs_modem(zst, 1);
818 zs_modem(zst, 0);
824 tiocm_to_zs(zst, cmd, *(int *)data);
828 *(int *)data = zs_to_tiocm(zst);
841 error = pps_ioctl(cmd, data, &zst->zst_pps_state);
842 if (zst->zst_pps_state.ppsparam.mode & PPS_CAPTUREBOTH)
843 zst->zst_ppsmask = ZSRR0_DCD;
845 zst->zst_ppsmask = 0;
857 &zst->zst_pps_state.ppsinfo.assert_timestamp);
860 &zst->zst_pps_state.ppsinfo.clear_timestamp);
866 zs_maskintr(zst);
872 if (zst->zst_tx_busy) {
873 zst->zst_heldtbc = zst->zst_tbc;
874 zst->zst_tbc = 0;
898 struct zstty_softc *zst;
903 zst = device_lookup_private(&zstty_cd, ZSUNIT(tp->t_dev));
904 cs = zst->zst_cs;
908 if (zst->zst_tx_stopped)
919 zst->zst_tba = tba;
920 zst->zst_tbc = tbc;
922 zst->zst_tx_busy = 1;
925 if (zst->zst_tbc > 1) {
926 zs_dma_setup(cs, zst->zst_tba, zst->zst_tbc);
933 zs_write_data(cs, *zst->zst_tba);
934 zst->zst_tbc--;
935 zst->zst_tba++;
946 struct zstty_softc *zst;
948 zst = device_lookup_private(&zstty_cd, ZSUNIT(tp->t_dev));
950 mutex_spin_enter(&zst->zst_cs->cs_lock);
953 zst->zst_tbc = 0;
954 zst->zst_heldtbc = 0;
958 mutex_spin_exit(&zst->zst_cs->cs_lock);
969 struct zstty_softc *zst;
976 zst = device_lookup_private(&zstty_cd, ZSUNIT(tp->t_dev));
977 cs = zst->zst_cs;
991 if (ISSET(zst->zst_swflags, TIOCFLAG_SOFTCAR) ||
992 ISSET(zst->zst_hwflags, ZS_HWFLAG_CONSOLE)) {
1032 zs_maskintr(zst);
1087 if (zst->zst_tx_busy) {
1088 zst->zst_heldtbc = zst->zst_tbc;
1089 zst->zst_tbc = 0;
1101 zst->zst_r_hiwat = 0;
1102 zst->zst_r_lowat = 0;
1103 if (ISSET(zst->zst_rx_flags, RX_TTY_OVERFLOWED)) {
1104 CLR(zst->zst_rx_flags, RX_TTY_OVERFLOWED);
1105 zst->zst_rx_ready = 1;
1108 if (ISSET(zst->zst_rx_flags, RX_TTY_BLOCKED|RX_IBUF_BLOCKED)) {
1109 CLR(zst->zst_rx_flags, RX_TTY_BLOCKED|RX_IBUF_BLOCKED);
1110 zs_hwiflow(zst);
1113 zst->zst_r_hiwat = zstty_rbuf_hiwat;
1114 zst->zst_r_lowat = zstty_rbuf_lowat;
1130 if (zst->zst_tx_stopped) {
1131 zst->zst_tx_stopped = 0;
1147 zs_maskintr(struct zstty_softc *zst)
1149 struct zs_chanstate *cs = zst->zst_cs;
1153 if (zst->zst_ppsmask != 0)
1174 zs_modem(struct zstty_softc *zst, int onoff)
1176 struct zs_chanstate *cs = zst->zst_cs, *ccs;
1189 if (zst->zst_tx_busy) {
1190 zst->zst_heldtbc = zst->zst_tbc;
1191 zst->zst_tbc = 0;
1203 tiocm_to_zs(struct zstty_softc *zst, u_long how, int ttybits)
1205 struct zs_chanstate *cs = zst->zst_cs, *ccs;
1232 if (zst->zst_tx_busy) {
1233 zst->zst_heldtbc = zst->zst_tbc;
1234 zst->zst_tbc = 0;
1246 zs_to_tiocm(struct zstty_softc *zst)
1248 struct zs_chanstate *cs = zst->zst_cs, *ccs;
1278 struct zstty_softc *zst;
1281 zst = device_lookup_private(&zstty_cd, ZSUNIT(tp->t_dev));
1282 cs = zst->zst_cs;
1289 if (!ISSET(zst->zst_rx_flags, RX_TTY_BLOCKED)) {
1290 SET(zst->zst_rx_flags, RX_TTY_BLOCKED);
1291 zs_hwiflow(zst);
1294 if (ISSET(zst->zst_rx_flags, RX_TTY_OVERFLOWED)) {
1295 CLR(zst->zst_rx_flags, RX_TTY_OVERFLOWED);
1296 zst->zst_rx_ready = 1;
1299 if (ISSET(zst->zst_rx_flags, RX_TTY_BLOCKED)) {
1300 CLR(zst->zst_rx_flags, RX_TTY_BLOCKED);
1301 zs_hwiflow(zst);
1313 zs_hwiflow(struct zstty_softc *zst)
1315 struct zs_chanstate *cs = zst->zst_cs, *ccs;
1322 if (ISSET(zst->zst_rx_flags, RX_ANY_BLOCK)) {
1350 struct zstty_softc *zst = cs->cs_private;
1355 end = zst->zst_ebuf;
1356 put = zst->zst_rbput;
1357 cc = zst->zst_rbavail;
1372 cn_check_magic(zst->zst_tty->t_dev, c, zstty_cnm_state);
1377 put = zst->zst_rbuf;
1391 zst->zst_rbput = put;
1392 zst->zst_rbavail = cc;
1393 if (!ISSET(zst->zst_rx_flags, RX_TTY_OVERFLOWED)) {
1394 zst->zst_rx_ready = 1;
1402 if (!ISSET(zst->zst_rx_flags, RX_IBUF_BLOCKED) &&
1403 cc < zst->zst_r_hiwat) {
1404 SET(zst->zst_rx_flags, RX_IBUF_BLOCKED);
1405 zs_hwiflow(zst);
1413 SET(zst->zst_rx_flags, RX_IBUF_OVERFLOWED);
1420 printf("%xH%04d\n", zst->zst_rx_flags, zst->zst_rbavail);
1431 struct zstty_softc *zst = cs->cs_private;
1442 zst->zst_tbc = zst->zst_heldtbc;
1443 zst->zst_heldtbc = 0;
1447 if (zst->zst_tbc > 0) {
1448 zs_write_data(cs, *zst->zst_tba);
1449 zst->zst_tbc--;
1450 zst->zst_tba++;
1452 if (zst->zst_tx_busy) {
1453 zst->zst_tx_busy = 0;
1454 zst->zst_tx_done = 1;
1467 struct zstty_softc *zst = cs->cs_private;
1478 cn_check_magic(zst->zst_tty->t_dev, CNC_BREAK, zstty_cnm_state);
1492 if (ISSET(delta, zst->zst_ppsmask)) {
1493 if (zst->zst_pps_state.ppsparam.mode &
1496 pps_capture(&zst->zst_pps_state);
1497 pps_event(&zst->zst_pps_state,
1498 (ISSET(cs->cs_rr0, zst->zst_ppsmask))
1510 zst->zst_tbc = 0;
1511 zst->zst_heldtbc = 0;
1514 zst->zst_st_check = 1;
1522 struct zstty_softc *zst = arg;
1525 mutex_spin_enter(&zst->zst_cs->cs_lock);
1526 overflows = zst->zst_overflows;
1527 zst->zst_overflows = 0;
1528 floods = zst->zst_floods;
1529 zst->zst_floods = 0;
1530 zst->zst_errors = 0;
1531 mutex_spin_exit(&zst->zst_cs->cs_lock);
1534 device_xname(zst->zst_dev),
1540 zstty_rxsoft(struct zstty_softc *zst, struct tty *tp)
1542 struct zs_chanstate *cs = zst->zst_cs;
1549 end = zst->zst_ebuf;
1550 get = zst->zst_rbget;
1551 scc = cc = zstty_rbuf_size - zst->zst_rbavail;
1554 zst->zst_floods++;
1555 if (zst->zst_errors++ == 0)
1556 callout_reset(&zst->zst_diag_ch, 60 * hz,
1557 zstty_diag, zst);
1572 zst->zst_overflows++;
1573 if (zst->zst_errors++ == 0)
1574 callout_reset(&zst->zst_diag_ch,
1575 60 * hz, zstty_diag, zst);
1586 if (!ISSET(zst->zst_rx_flags, RX_TTY_BLOCKED)) {
1606 SET(zst->zst_rx_flags, RX_TTY_OVERFLOWED);
1612 get = zst->zst_rbuf;
1617 zst->zst_rbget = get;
1619 cc = zst->zst_rbavail += scc - cc;
1621 if (cc >= zst->zst_r_lowat) {
1622 if (ISSET(zst->zst_rx_flags, RX_IBUF_OVERFLOWED)) {
1623 CLR(zst->zst_rx_flags, RX_IBUF_OVERFLOWED);
1628 if (ISSET(zst->zst_rx_flags, RX_IBUF_BLOCKED)) {
1629 CLR(zst->zst_rx_flags, RX_IBUF_BLOCKED);
1630 zs_hwiflow(zst);
1637 printf("%xS%04d\n", zst->zst_rx_flags, zst->zst_rbavail);
1642 zstty_txsoft(struct zstty_softc *zst, struct tty *tp)
1644 struct zs_chanstate *cs = zst->zst_cs;
1651 ndflush(&tp->t_outq, (int)(zst->zst_tba - tp->t_outq.c_cf));
1657 zstty_stsoft(struct zstty_softc *zst, struct tty *tp)
1659 struct zs_chanstate *cs = zst->zst_cs;
1678 zst->zst_tx_stopped = 0;
1681 zst->zst_tx_stopped = 1;
1708 struct zstty_softc *zst = cs->cs_private;
1709 struct tty *tp = zst->zst_tty;
1712 if (zst->zst_rx_ready) {
1713 zst->zst_rx_ready = 0;
1714 zstty_rxsoft(zst, tp);
1717 if (zst->zst_st_check) {
1718 zst->zst_st_check = 0;
1719 zstty_stsoft(zst, tp);
1722 if (zst->zst_tx_done) {
1723 zst->zst_tx_done = 0;
1724 zstty_txsoft(zst, tp);
1740 struct zstty_softc *zst = cs->cs_private;
1742 zst->zst_tba += zst->zst_tbc;
1743 zst->zst_tbc = 0;
1745 if (zst->zst_tx_busy) {
1746 zst->zst_tx_busy = 0;
1747 zst->zst_tx_done = 1;