Lines Matching refs:zst
262 struct zstty_softc *zst = (struct zstty_softc *)self; in zstty_attach() local
273 timeout_set(&zst->zst_diag_ch, zstty_diag, zst); in zstty_attach()
275 tty_unit = zst->zst_dev.dv_unit; in zstty_attach()
278 cs->cs_private = zst; in zstty_attach()
281 zst->zst_cs = cs; in zstty_attach()
282 zst->zst_swflags = cf->cf_flags; /* softcar, etc. */ in zstty_attach()
283 zst->zst_hwflags = args->hwflags; in zstty_attach()
286 if (zst->zst_swflags) in zstty_attach()
287 printf(" flags 0x%x", zst->zst_swflags); in zstty_attach()
289 if (ISSET(zst->zst_hwflags, ZS_HWFLAG_NO_DCD)) in zstty_attach()
290 SET(zst->zst_swflags, TIOCFLAG_SOFTCAR); in zstty_attach()
298 if ((zst->zst_hwflags & ZS_HWFLAG_CONSOLE_INPUT) != 0) { in zstty_attach()
307 if ((zst->zst_hwflags & ZS_HWFLAG_CONSOLE_OUTPUT) != 0) { in zstty_attach()
332 zst->zst_tty = tp; in zstty_attach()
333 zst->zst_rbuf = mallocarray(zstty_rbuf_size, 2, M_DEVBUF, M_WAITOK); in zstty_attach()
334 zst->zst_ebuf = zst->zst_rbuf + (zstty_rbuf_size * 2); in zstty_attach()
336 zst->zst_r_hiwat = 0; in zstty_attach()
337 zst->zst_r_lowat = 0; in zstty_attach()
338 zst->zst_rbget = zst->zst_rbput = zst->zst_rbuf; in zstty_attach()
339 zst->zst_rbavail = zstty_rbuf_size; in zstty_attach()
351 if (ISSET(zst->zst_hwflags, ZS_HWFLAG_CONSOLE)) { in zstty_attach()
381 } else if (!ISSET(zst->zst_hwflags, ZS_HWFLAG_NORESET)) { in zstty_attach()
389 zs_modem(zst, dtr_on); in zstty_attach()
400 struct zstty_softc *zst = zs_device_lookup(&zstty_cd, ZSUNIT(dev)); in zstty() local
402 return (zst->zst_tty); in zstty()
407 zs_shutdown(struct zstty_softc *zst) in zs_shutdown() argument
409 struct zs_chanstate *cs = zst->zst_cs; in zs_shutdown()
410 struct tty *tp = zst->zst_tty; in zs_shutdown()
416 SET(zst->zst_rx_flags, RX_IBUF_BLOCKED); in zs_shutdown()
417 zs_hwiflow(zst); in zs_shutdown()
423 zst->zst_ppsmask = 0; in zs_shutdown()
430 zs_modem(zst, 0); in zs_shutdown()
436 if (!ISSET(zst->zst_hwflags, ZS_HWFLAG_CONSOLE)) { in zs_shutdown()
448 (*cs->disable)(zst->zst_cs); in zs_shutdown()
460 struct zstty_softc *zst; in zsopen() local
469 zst = zs_device_lookup(&zstty_cd, ZSUNIT(dev)); in zsopen()
470 if (zst == NULL) in zsopen()
473 tp = zst->zst_tty; in zsopen()
474 cs = zst->zst_cs; in zsopen()
500 zst->zst_dev.dv_xname); in zsopen()
512 if (ISSET(zst->zst_swflags, TIOCFLAG_CLOCAL)) in zsopen()
514 if (ISSET(zst->zst_swflags, TIOCFLAG_CRTSCTS)) in zsopen()
516 if (ISSET(zst->zst_swflags, TIOCFLAG_MDMBUF)) in zsopen()
532 zst->zst_ppsmask = 0; in zsopen()
547 if (!ISSET(zst->zst_hwflags, ZS_HWFLAG_RAW)) { in zsopen()
569 zst->zst_rbget = zst->zst_rbput = zst->zst_rbuf; in zsopen()
570 zst->zst_rbavail = zstty_rbuf_size; in zsopen()
572 CLR(zst->zst_rx_flags, RX_ANY_BLOCK); in zsopen()
573 zs_hwiflow(zst); in zsopen()
616 zs_modem(zst, 1); in zsopen()
624 ISSET(zst->zst_swflags, TIOCFLAG_SOFTCAR)) in zsopen()
645 zs_modem(zst, 0); in zsopen()
676 zs_shutdown(zst); in zsopen()
688 struct zstty_softc *zst = zs_device_lookup(&zstty_cd, ZSUNIT(dev)); in zsclose() local
689 struct zs_chanstate *cs = zst->zst_cs; in zsclose()
690 struct tty *tp = zst->zst_tty; in zsclose()
710 zs_shutdown(zst); in zsclose()
722 struct zstty_softc *zst = zs_device_lookup(&zstty_cd, ZSUNIT(dev)); in zsread() local
723 struct tty *tp = zst->zst_tty; in zsread()
731 struct zstty_softc *zst = zs_device_lookup(&zstty_cd, ZSUNIT(dev)); in zswrite() local
732 struct tty *tp = zst->zst_tty; in zswrite()
740 struct zstty_softc *zst = zs_device_lookup(&zstty_cd, ZSUNIT(dev)); in zsioctl() local
741 struct zs_chanstate *cs = zst->zst_cs; in zsioctl()
742 struct tty *tp = zst->zst_tty; in zsioctl()
774 *(int *)data = zst->zst_swflags; in zsioctl()
781 zst->zst_swflags = *(int *)data; in zsioctl()
782 if (ISSET(zst->zst_hwflags, ZS_HWFLAG_NO_DCD)) in zsioctl()
783 SET(zst->zst_swflags, TIOCFLAG_SOFTCAR); in zsioctl()
787 zs_modem(zst, 1); in zsioctl()
791 zs_modem(zst, 0); in zsioctl()
797 tiocm_to_zs(zst, cmd, *(int *)data); in zsioctl()
801 *(int *)data = zs_to_tiocm(zst); in zsioctl()
820 struct zstty_softc *zst = zs_device_lookup(&zstty_cd, ZSUNIT(tp->t_dev)); in zsstart() local
821 struct zs_chanstate *cs = zst->zst_cs; in zsstart()
829 if (zst->zst_tx_stopped) in zsstart()
844 zst->zst_tba = tba; in zsstart()
845 zst->zst_tbc = tbc; in zsstart()
847 zst->zst_tx_busy = 1; in zsstart()
854 zs_write_data(cs, *zst->zst_tba); in zsstart()
855 zst->zst_tbc--; in zsstart()
856 zst->zst_tba++; in zsstart()
857 } while (zst->zst_tbc > 0); in zsstart()
869 struct zstty_softc *zst = zs_device_lookup(&zstty_cd, ZSUNIT(tp->t_dev)); in zsstop() local
875 zst->zst_tbc = 0; in zsstop()
876 zst->zst_heldtbc = 0; in zsstop()
892 struct zstty_softc *zst = zs_device_lookup(&zstty_cd, ZSUNIT(tp->t_dev)); in zsparam() local
893 struct zs_chanstate *cs = zst->zst_cs; in zsparam()
912 if (ISSET(zst->zst_swflags, TIOCFLAG_SOFTCAR) || in zsparam()
913 ISSET(zst->zst_hwflags, ZS_HWFLAG_CONSOLE)) { in zsparam()
953 zs_maskintr(zst); in zsparam()
1008 if (zst->zst_tx_busy) { in zsparam()
1009 zst->zst_heldtbc = zst->zst_tbc; in zsparam()
1010 zst->zst_tbc = 0; in zsparam()
1022 zst->zst_r_hiwat = 0; in zsparam()
1023 zst->zst_r_lowat = 0; in zsparam()
1024 if (ISSET(zst->zst_rx_flags, RX_TTY_OVERFLOWED)) { in zsparam()
1025 CLR(zst->zst_rx_flags, RX_TTY_OVERFLOWED); in zsparam()
1026 zst->zst_rx_ready = 1; in zsparam()
1029 if (ISSET(zst->zst_rx_flags, RX_TTY_BLOCKED|RX_IBUF_BLOCKED)) { in zsparam()
1030 CLR(zst->zst_rx_flags, RX_TTY_BLOCKED|RX_IBUF_BLOCKED); in zsparam()
1031 zs_hwiflow(zst); in zsparam()
1034 zst->zst_r_hiwat = zstty_rbuf_hiwat; in zsparam()
1035 zst->zst_r_lowat = zstty_rbuf_lowat; in zsparam()
1051 if (zst->zst_tx_stopped) { in zsparam()
1052 zst->zst_tx_stopped = 0; in zsparam()
1068 zs_maskintr(struct zstty_softc *zst) in zs_maskintr() argument
1070 struct zs_chanstate *cs = zst->zst_cs; in zs_maskintr()
1074 if (zst->zst_ppsmask != 0) in zs_maskintr()
1095 zs_modem(struct zstty_softc *zst, int onoff) in zs_modem() argument
1097 struct zs_chanstate *cs = zst->zst_cs, *ccs; in zs_modem()
1110 if (zst->zst_tx_busy) { in zs_modem()
1111 zst->zst_heldtbc = zst->zst_tbc; in zs_modem()
1112 zst->zst_tbc = 0; in zs_modem()
1124 tiocm_to_zs(struct zstty_softc *zst, u_long how, int ttybits) in tiocm_to_zs() argument
1126 struct zs_chanstate *cs = zst->zst_cs, *ccs; in tiocm_to_zs()
1153 if (zst->zst_tx_busy) { in tiocm_to_zs()
1154 zst->zst_heldtbc = zst->zst_tbc; in tiocm_to_zs()
1155 zst->zst_tbc = 0; in tiocm_to_zs()
1167 zs_to_tiocm(struct zstty_softc *zst) in zs_to_tiocm() argument
1169 struct zs_chanstate *cs = zst->zst_cs, *ccs; in zs_to_tiocm()
1199 struct zstty_softc *zst = zs_device_lookup(&zstty_cd, ZSUNIT(tp->t_dev)); in zshwiflow() local
1200 struct zs_chanstate *cs = zst->zst_cs; in zshwiflow()
1208 if (!ISSET(zst->zst_rx_flags, RX_TTY_BLOCKED)) { in zshwiflow()
1209 SET(zst->zst_rx_flags, RX_TTY_BLOCKED); in zshwiflow()
1210 zs_hwiflow(zst); in zshwiflow()
1213 if (ISSET(zst->zst_rx_flags, RX_TTY_OVERFLOWED)) { in zshwiflow()
1214 CLR(zst->zst_rx_flags, RX_TTY_OVERFLOWED); in zshwiflow()
1215 zst->zst_rx_ready = 1; in zshwiflow()
1218 if (ISSET(zst->zst_rx_flags, RX_TTY_BLOCKED)) { in zshwiflow()
1219 CLR(zst->zst_rx_flags, RX_TTY_BLOCKED); in zshwiflow()
1220 zs_hwiflow(zst); in zshwiflow()
1232 zs_hwiflow(struct zstty_softc *zst) in zs_hwiflow() argument
1234 struct zs_chanstate *cs = zst->zst_cs, *ccs; in zs_hwiflow()
1241 if (ISSET(zst->zst_rx_flags, RX_ANY_BLOCK)) { in zs_hwiflow()
1268 struct zstty_softc *zst = cs->cs_private; in zstty_rxint() local
1273 end = zst->zst_ebuf; in zstty_rxint()
1274 put = zst->zst_rbput; in zstty_rxint()
1275 cc = zst->zst_rbavail; in zstty_rxint()
1294 put = zst->zst_rbuf; in zstty_rxint()
1308 zst->zst_rbput = put; in zstty_rxint()
1309 zst->zst_rbavail = cc; in zstty_rxint()
1310 if (!ISSET(zst->zst_rx_flags, RX_TTY_OVERFLOWED)) { in zstty_rxint()
1311 zst->zst_rx_ready = 1; in zstty_rxint()
1319 if (!ISSET(zst->zst_rx_flags, RX_IBUF_BLOCKED) && in zstty_rxint()
1320 cc < zst->zst_r_hiwat) { in zstty_rxint()
1321 SET(zst->zst_rx_flags, RX_IBUF_BLOCKED); in zstty_rxint()
1322 zs_hwiflow(zst); in zstty_rxint()
1330 SET(zst->zst_rx_flags, RX_IBUF_OVERFLOWED); in zstty_rxint()
1344 struct zstty_softc *zst = cs->cs_private; in zstty_txint() local
1356 zst->zst_tbc = zst->zst_heldtbc; in zstty_txint()
1357 zst->zst_heldtbc = 0; in zstty_txint()
1360 while (zst->zst_tbc > 0) { in zstty_txint()
1365 zs_write_data(cs, *zst->zst_tba); in zstty_txint()
1366 zst->zst_tbc--; in zstty_txint()
1367 zst->zst_tba++; in zstty_txint()
1370 if (zst->zst_tbc == 0) { in zstty_txint()
1371 if (zst->zst_tx_busy) { in zstty_txint()
1372 zst->zst_tx_busy = 0; in zstty_txint()
1373 zst->zst_tx_done = 1; in zstty_txint()
1393 struct zstty_softc *zst = cs->cs_private; in zstty_stint() local
1394 struct tty *tp = zst->zst_tty; in zstty_stint()
1404 if ((zst->zst_hwflags & ZS_HWFLAG_CONSOLE_INPUT) && in zstty_stint()
1426 zst->zst_tbc = 0; in zstty_stint()
1427 zst->zst_heldtbc = 0; in zstty_stint()
1430 zst->zst_st_check = 1; in zstty_stint()
1438 struct zstty_softc *zst = arg; in zstty_diag() local
1443 overflows = zst->zst_overflows; in zstty_diag()
1444 zst->zst_overflows = 0; in zstty_diag()
1445 floods = zst->zst_floods; in zstty_diag()
1446 zst->zst_floods = 0; in zstty_diag()
1447 zst->zst_errors = 0; in zstty_diag()
1451 zst->zst_dev.dv_xname, in zstty_diag()
1457 zstty_rxsoft(struct zstty_softc *zst, struct tty *tp) in zstty_rxsoft() argument
1459 struct zs_chanstate *cs = zst->zst_cs; in zstty_rxsoft()
1467 end = zst->zst_ebuf; in zstty_rxsoft()
1468 get = zst->zst_rbget; in zstty_rxsoft()
1469 scc = cc = zstty_rbuf_size - zst->zst_rbavail; in zstty_rxsoft()
1472 zst->zst_floods++; in zstty_rxsoft()
1473 if (zst->zst_errors++ == 0) in zstty_rxsoft()
1474 timeout_add_sec(&zst->zst_diag_ch, 60); in zstty_rxsoft()
1489 zst->zst_overflows++; in zstty_rxsoft()
1490 if (zst->zst_errors++ == 0) in zstty_rxsoft()
1491 timeout_add_sec(&zst->zst_diag_ch, 60); in zstty_rxsoft()
1502 if (!ISSET(zst->zst_rx_flags, RX_TTY_BLOCKED)) { in zstty_rxsoft()
1522 SET(zst->zst_rx_flags, RX_TTY_OVERFLOWED); in zstty_rxsoft()
1528 get = zst->zst_rbuf; in zstty_rxsoft()
1533 zst->zst_rbget = get; in zstty_rxsoft()
1535 cc = zst->zst_rbavail += scc - cc; in zstty_rxsoft()
1537 if (cc >= zst->zst_r_lowat) { in zstty_rxsoft()
1538 if (ISSET(zst->zst_rx_flags, RX_IBUF_OVERFLOWED)) { in zstty_rxsoft()
1539 CLR(zst->zst_rx_flags, RX_IBUF_OVERFLOWED); in zstty_rxsoft()
1544 if (ISSET(zst->zst_rx_flags, RX_IBUF_BLOCKED)) { in zstty_rxsoft()
1545 CLR(zst->zst_rx_flags, RX_IBUF_BLOCKED); in zstty_rxsoft()
1546 zs_hwiflow(zst); in zstty_rxsoft()
1554 zstty_txsoft(struct zstty_softc *zst, struct tty *tp) in zstty_txsoft() argument
1563 ndflush(&tp->t_outq, (int)(zst->zst_tba - tp->t_outq.c_cf)); in zstty_txsoft()
1570 zstty_stsoft(struct zstty_softc *zst, struct tty *tp) in zstty_stsoft() argument
1572 struct zs_chanstate *cs = zst->zst_cs; in zstty_stsoft()
1592 zst->zst_tx_stopped = 0; in zstty_stsoft()
1595 zst->zst_tx_stopped = 1; in zstty_stsoft()
1615 struct zstty_softc *zst = cs->cs_private; in zstty_softint() local
1616 struct tty *tp = zst->zst_tty; in zstty_softint()
1621 if (zst->zst_rx_ready) { in zstty_softint()
1622 zst->zst_rx_ready = 0; in zstty_softint()
1623 zstty_rxsoft(zst, tp); in zstty_softint()
1626 if (zst->zst_st_check) { in zstty_softint()
1627 zst->zst_st_check = 0; in zstty_softint()
1628 zstty_stsoft(zst, tp); in zstty_softint()
1631 if (zst->zst_tx_done) { in zstty_softint()
1632 zst->zst_tx_done = 0; in zstty_softint()
1633 zstty_txsoft(zst, tp); in zstty_softint()