Lines Matching refs:zs

224 #define	ZSA_GETBLOCK(zs, allocbcount) \  argument
234 zsa_callback, zs); \
242 mutex_enter(zs->zs_excl_hi); \
243 if (!(zs->zs_wreg[5] & ZSWR5_RTS)) { \
252 mutex_exit(zs->zs_excl_hi); \
270 if (zs->zs_wreg[5] & ZSWR5_RTS) \
274 } else if (zs->zs_wreg[5] & ZSWR5_RTS) { \
291 mutex_enter(zs->zs_excl_hi); \
293 ZSSETSOFT(zs); \
294 mutex_exit(zs->zs_excl_hi); \
324 if (zs->zs_rd_cur) { /* M_DATA */ \
325 mp->b_wptr = zs->zs_rd_cur; \
326 zs->zs_rd_cur = NULL; \
327 zs->zs_rd_lim = NULL; \
331 ZSSETSOFT(zs); \
392 zs_h_log[zs_h_log_n++] = 'A' + zs->zs_unit; \
405 if (zsa_h_log_n[zs->zs_unit] >= ZSA_H_LOG_MAX) \
406 zsa_h_log_n[zs->zs_unit] = 0; \
407 zsa_h_log[zs->zs_unit][zsa_h_log_n[zs->zs_unit]++] = c; \
408 zsa_h_log[zs->zs_unit][zsa_h_log_n[zs->zs_unit]] = '\0'; \
414 for (p = &zsa_h_log[zs->zs_unit][ZSA_H_LOG_MAX]; \
415 p >= &zsa_h_log[zs->zs_unit][0]; /* null */) \
417 zsa_h_log_n[zs->zs_unit] = 0; \
488 static void zsa_txint(struct zscom *zs);
489 static void zsa_xsint(struct zscom *zs);
490 static void zsa_rxint(struct zscom *zs);
491 static void zsa_srint(struct zscom *zs);
492 static int zsa_softint(struct zscom *zs);
493 static int zsa_suspend(struct zscom *zs);
494 static int zsa_resume(struct zscom *zs);
497 zsa_null(struct zscom *zs) in zsa_null() argument
511 zsa_null_int(struct zscom *zs) in zsa_null_int() argument
542 static void zsa_start(struct zscom *zs);
557 register struct zscom *zs; in zsc_info() local
564 zs = &zscom[unit]; in zsc_info()
565 *result = zs->zs_dip; in zsc_info()
672 zsa_init(struct zscom *zs) in zsa_init() argument
679 mutex_enter(zs->zs_excl); in zsa_init()
680 mutex_enter(zs->zs_excl_hi); in zsa_init()
689 if (zsa_channel_is_active_in_rom(zs->zs_dip, zs->zs_unit)) in zsa_init()
690 (void) zsmctl(zs, ZS_ON, DMSET); /* raise dtr */ in zsa_init()
691 else if (zsasoftdtr && (zssoftCAR[zs->zs_unit])) in zsa_init()
692 (void) zsmctl(zs, ZS_ON, DMSET); /* raise dtr */ in zsa_init()
694 (void) zsmctl(zs, ZS_OFF, DMSET); /* drop dtr */ in zsa_init()
705 mutex_exit(zs->zs_excl_hi); in zsa_init()
706 mutex_exit(zs->zs_excl); in zsa_init()
717 register struct zscom *zs; in zsa_open() local
730 zs = &zscom[unit]; in zsa_open()
731 if (zs->zs_ops == NULL) { in zsa_open()
735 mutex_enter(zs->zs_ocexcl); in zsa_open()
736 mutex_enter(zs->zs_excl); in zsa_open()
738 if ((zs->zs_ops != &zsops_null) && in zsa_open()
739 (zs->zs_ops != &zsops_async)) { in zsa_open()
740 mutex_exit(zs->zs_excl); in zsa_open()
741 mutex_exit(zs->zs_ocexcl); in zsa_open()
745 za = (struct asyncline *)&zs->zs_priv_str; in zsa_open()
747 if (zs->zs_suspended) { in zsa_open()
748 mutex_exit(zs->zs_excl); in zsa_open()
749 mutex_exit(zs->zs_ocexcl); in zsa_open()
750 (void) ddi_dev_is_needed(zs->zs_dip, 0, 1); in zsa_open()
751 mutex_enter(zs->zs_ocexcl); in zsa_open()
752 mutex_enter(zs->zs_excl); in zsa_open()
756 (void) pm_busy_component(zs->zs_dip, unit%2+1); in zsa_open()
758 if (zs->zs_ops == &zsops_null) { in zsa_open()
759 bzero(za, sizeof (zs->zs_priv_str)); in zsa_open()
760 za->za_common = zs; in zsa_open()
761 if (zssoftCAR[zs->zs_unit]) in zsa_open()
763 zsopinit(zs, &zsops_async); in zsa_open()
769 zs->zs_priv = (caddr_t)za; in zsa_open()
775 mutex_enter(zs->zs_excl_hi); in zsa_open()
782 mutex_exit(zs->zs_excl_hi); in zsa_open()
797 mutex_enter(zs->zs_excl_hi); in zsa_open()
824 mutex_exit(zs->zs_excl_hi); in zsa_open()
826 zsopinit(zs, &zsops_null); in zsa_open()
827 mutex_exit(zs->zs_excl); in zsa_open()
828 mutex_exit(zs->zs_ocexcl); in zsa_open()
831 mutex_exit(zs->zs_excl_hi); in zsa_open()
833 zsopinit(zs, &zsops_null); in zsa_open()
834 mutex_exit(zs->zs_excl); in zsa_open()
835 mutex_exit(zs->zs_ocexcl); in zsa_open()
841 (void) zsmctl(zs, ZS_ON, DMSET); in zsa_open()
847 (zsmctl(zs, 0, DMGET) & ZSRR0_CD)) in zsa_open()
849 mutex_exit(zs->zs_excl_hi); in zsa_open()
860 mutex_exit(zs->zs_excl); in zsa_open()
861 if (cv_wait_sig(&zs->zs_flags_cv, zs->zs_ocexcl) == 0) { in zsa_open()
862 mutex_enter(zs->zs_excl); in zsa_open()
863 if (zs->zs_suspended) { in zsa_open()
864 mutex_exit(zs->zs_excl); in zsa_open()
865 mutex_exit(zs->zs_ocexcl); in zsa_open()
866 (void) ddi_dev_is_needed(zs->zs_dip, in zsa_open()
868 mutex_enter(zs->zs_ocexcl); in zsa_open()
869 mutex_enter(zs->zs_excl); in zsa_open()
873 zsopinit(zs, &zsops_null); in zsa_open()
874 mutex_exit(zs->zs_excl); in zsa_open()
875 mutex_exit(zs->zs_ocexcl); in zsa_open()
878 mutex_enter(zs->zs_excl); in zsa_open()
880 if ((zs->zs_ops == &zsops_null) || in zsa_open()
881 (zs->zs_ops == &zsops_async)) in zsa_open()
885 zsopinit(zs, &zsops_null); in zsa_open()
886 mutex_exit(zs->zs_excl); in zsa_open()
887 mutex_exit(zs->zs_ocexcl); in zsa_open()
893 zsopinit(zs, &zsops_null); in zsa_open()
894 mutex_exit(zs->zs_excl); in zsa_open()
895 mutex_exit(zs->zs_ocexcl); in zsa_open()
904 ZSA_GETBLOCK(zs, allocbcount); in zsa_open()
906 mutex_exit(zs->zs_excl); in zsa_open()
907 mutex_exit(zs->zs_ocexcl); in zsa_open()
915 struct zscom *zs = za->za_common; in zs_progress_check() local
923 mutex_enter(zs->zs_excl); in zs_progress_check()
924 if (!(zs->zs_flags & ZS_PROGRESS) && in zs_progress_check()
927 mutex_enter(zs->zs_excl_hi); in zs_progress_check()
929 zs->zs_wr_cur = NULL; in zs_progress_check()
930 zs->zs_wr_lim = NULL; in zs_progress_check()
933 mutex_exit(zs->zs_excl_hi); in zs_progress_check()
934 zs->zs_timer = 0; in zs_progress_check()
935 mutex_exit(zs->zs_excl); in zs_progress_check()
945 cv_broadcast(&zs->zs_flags_cv); in zs_progress_check()
947 zs->zs_flags &= ~ZS_PROGRESS; in zs_progress_check()
948 zs->zs_timer = timeout(zs_progress_check, za, in zs_progress_check()
950 mutex_exit(zs->zs_excl); in zs_progress_check()
968 struct zscom *zs; in zsa_close() local
978 zs = za->za_common; in zsa_close()
980 mutex_enter(zs->zs_excl); in zsa_close()
981 zs->zs_flags |= ZS_CLOSING; in zsa_close()
992 if (!(za->za_flags & ZAS_BREAK) && (zs->zs_wreg[5] & ZSWR5_BREAK)) in zsa_close()
1027 zs->zs_flags &= ~ZS_PROGRESS; in zsa_close()
1028 zs->zs_timer = timeout(zs_progress_check, za, in zsa_close()
1032 while (zs->zs_wr_cur != NULL || in zsa_close()
1035 if (cv_wait_sig(&zs->zs_flags_cv, zs->zs_excl) == 0) in zsa_close()
1039 if (zs->zs_timer != 0) { in zsa_close()
1040 (void) untimeout(zs->zs_timer); in zsa_close()
1041 zs->zs_timer = 0; in zsa_close()
1048 mutex_enter(zs->zs_excl_hi); in zsa_close()
1049 if (zs->zs_wreg[5] & ZSWR5_BREAK) { in zsa_close()
1068 zsopinit(zs, &zsops_null_async); in zsa_close()
1085 (void) zsmctl(zs, ZS_ON, DMSET); in zsa_close()
1087 (void) zsmctl(zs, ZS_OFF, DMSET); in zsa_close()
1088 mutex_exit(zs->zs_excl_hi); in zsa_close()
1094 tmp = cv_reltimedwait_sig(&zs->zs_flags_cv, zs->zs_excl, in zsa_close()
1096 if (zs->zs_suspended) { in zsa_close()
1097 mutex_exit(zs->zs_excl); in zsa_close()
1098 (void) ddi_dev_is_needed(zs->zs_dip, 0, 1); in zsa_close()
1099 mutex_enter(zs->zs_excl); in zsa_close()
1103 mutex_enter(zs->zs_excl_hi); in zsa_close()
1111 mutex_exit(zs->zs_excl_hi); in zsa_close()
1122 mutex_enter(zs->zs_excl_hi); in zsa_close()
1124 zs->zs_wr_cur = NULL; in zsa_close()
1125 zs->zs_wr_lim = NULL; in zsa_close()
1128 mutex_exit(zs->zs_excl_hi); in zsa_close()
1132 mutex_enter(zs->zs_excl_hi); in zsa_close()
1133 zs->zs_rd_cur = NULL; in zsa_close()
1134 zs->zs_rd_lim = NULL; in zsa_close()
1137 mutex_exit(zs->zs_excl_hi); in zsa_close()
1142 mutex_enter(zs->zs_excl_hi); in zsa_close()
1145 mutex_exit(zs->zs_excl_hi); in zsa_close()
1151 zs->zs_flags |= ZS_CLOSED; in zsa_close()
1153 cv_wait(&zs->zs_flags_cv, zs->zs_excl); in zsa_close()
1155 if (zs->zs_suspended) { in zsa_close()
1156 mutex_exit(zs->zs_excl); in zsa_close()
1157 (void) ddi_dev_is_needed(zs->zs_dip, 0, 1); in zsa_close()
1158 mutex_enter(zs->zs_excl); in zsa_close()
1164 mutex_exit(zs->zs_excl); in zsa_close()
1184 zsopinit(zs, &zsops_null); in zsa_close()
1185 cv_broadcast(&zs->zs_flags_cv); in zsa_close()
1188 (void) pm_idle_component(zs->zs_dip, zs->zs_unit%2+1); in zsa_close()
1207 register struct zscom *zs; in zsa_wput() local
1214 zs = za->za_common; in zsa_wput()
1215 if (zs->zs_flags & ZS_NEEDSOFT) { in zsa_wput()
1216 zs->zs_flags &= ~ZS_NEEDSOFT; in zsa_wput()
1217 (void) zsa_softint(zs); in zsa_wput()
1227 mutex_enter(zs->zs_excl); in zsa_wput()
1228 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1230 if ((zs->zs_wr_cur) != NULL) { in zsa_wput()
1234 bp->b_rptr = zs->zs_wr_cur; in zsa_wput()
1235 zs->zs_wr_cur = NULL; in zsa_wput()
1236 zs->zs_wr_lim = NULL; in zsa_wput()
1239 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1243 mutex_exit(zs->zs_excl); in zsa_wput()
1247 mutex_enter(zs->zs_excl); in zsa_wput()
1255 zsa_start(zs); in zsa_wput()
1258 mutex_exit(zs->zs_excl); in zsa_wput()
1262 mutex_enter(zs->zs_excl); in zsa_wput()
1371 zsa_start(zs); in zsa_wput()
1381 mutex_exit(zs->zs_excl); in zsa_wput()
1387 mutex_enter(zs->zs_excl); in zsa_wput()
1394 mutex_exit(zs->zs_excl); in zsa_wput()
1400 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1401 (void) zsmctl(zs, dmtozs(*(int *)mp->b_cont->b_rptr), in zsa_wput()
1403 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1409 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1410 (void) zsmctl(zs, dmtozs(*(int *)mp->b_cont->b_rptr), in zsa_wput()
1412 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1418 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1419 (void) zsmctl(zs, dmtozs(*(int *)mp->b_cont->b_rptr), in zsa_wput()
1421 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1435 mutex_exit(zs->zs_excl); in zsa_wput()
1440 mutex_enter(zs->zs_excl); in zsa_wput()
1448 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1450 zs->zs_wr_cur = NULL; in zsa_wput()
1451 zs->zs_wr_lim = NULL; in zsa_wput()
1454 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1468 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1478 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1479 mutex_exit(zs->zs_excl); in zsa_wput()
1482 mutex_enter(zs->zs_excl); in zsa_wput()
1483 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1496 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1511 zsa_start(zs); in zsa_wput()
1512 mutex_exit(zs->zs_excl); in zsa_wput()
1518 mutex_enter(zs->zs_excl); in zsa_wput()
1524 zsa_start(zs); in zsa_wput()
1525 mutex_exit(zs->zs_excl); in zsa_wput()
1529 mutex_enter(zs->zs_excl); in zsa_wput()
1530 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1532 if ((zs->zs_wr_cur) != NULL) { in zsa_wput()
1535 bp->b_rptr = zs->zs_wr_cur; in zsa_wput()
1536 zs->zs_wr_cur = NULL; in zsa_wput()
1537 zs->zs_wr_lim = NULL; in zsa_wput()
1540 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1544 zsa_start(zs); /* poke the start routine */ in zsa_wput()
1546 mutex_exit(zs->zs_excl); in zsa_wput()
1550 mutex_enter(zs->zs_excl); in zsa_wput()
1551 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1553 if ((zs->zs_wr_cur) != NULL) { in zsa_wput()
1556 bp->b_rptr = zs->zs_wr_cur; in zsa_wput()
1557 zs->zs_wr_cur = NULL; in zsa_wput()
1558 zs->zs_wr_lim = NULL; in zsa_wput()
1561 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1565 zsa_start(zs); /* poke the start routine */ in zsa_wput()
1567 mutex_exit(zs->zs_excl); in zsa_wput()
1583 mutex_enter(zs->zs_excl); in zsa_wput()
1587 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1589 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1593 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1595 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1599 mutex_exit(zs->zs_excl); in zsa_wput()
1620 struct zscom *zs; in zsa_rsrv() local
1624 zs = za->za_common; in zsa_rsrv()
1625 mutex_enter(zs->zs_excl_hi); in zsa_rsrv()
1626 ZSSETSOFT(zs); in zsa_rsrv()
1627 mutex_exit(zs->zs_excl_hi); in zsa_rsrv()
1639 zsa_txint(struct zscom *zs) in zsa_txint() argument
1641 register struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_txint()
1647 if ((wr_cur = zs->zs_wr_cur) != NULL) { in zsa_txint()
1648 if (wr_cur < zs->zs_wr_lim) { in zsa_txint()
1659 zs->zs_wr_cur = wr_cur; in zsa_txint()
1660 zs->zs_flags |= ZS_PROGRESS; in zsa_txint()
1663 zs->zs_wr_cur = NULL; in zsa_txint()
1664 zs->zs_wr_lim = NULL; in zsa_txint()
1671 ZSSETSOFT(zs); in zsa_txint()
1693 ZSSETSOFT(zs); in zsa_txint()
1700 zsa_xsint(struct zscom *zs) in zsa_xsint() argument
1702 register struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_xsint()
1825 ZSSETSOFT(zs); in zsa_xsint()
1832 zsa_rxint(struct zscom *zs) in zsa_rxint() argument
1834 register struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_rxint()
1836 register uchar_t *rd_cur = zs->zs_rd_cur; in zsa_rxint()
1837 register uchar_t *rd_lim = zs->zs_rd_lim; in zsa_rxint()
1866 zsa_xsint(zs); in zsa_rxint()
1884 zsa_xsint(zs); in zsa_rxint()
1908 ZSSETSOFT(zs); in zsa_rxint()
1912 zs->zs_rd_cur = rd_cur = bp->b_wptr; in zsa_rxint()
1913 zs->zs_rd_lim = rd_lim = bp->b_datap->db_lim; in zsa_rxint()
1915 ZSSETSOFT(zs); in zsa_rxint()
1926 zs->zs_rd_cur = rd_cur = bp->b_wptr; in zsa_rxint()
1927 zs->zs_rd_lim = rd_lim = bp->b_datap->db_lim; in zsa_rxint()
1934 zs->zs_rd_cur = rd_cur; in zsa_rxint()
1940 ZSSETSOFT(zs); in zsa_rxint()
1955 zsa_srint(struct zscom *zs) in zsa_srint() argument
1957 register struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_srint()
1962 register uchar_t *rd_cur = zs->zs_rd_cur; in zsa_srint()
2041 if (bp && zs->zs_rd_cur) { /* M_DATA msg */ in zsa_srint()
2049 ZSSETSOFT(zs); in zsa_srint()
2052 zs->zs_rd_cur = rd_cur = bp->b_wptr; in zsa_srint()
2053 zs->zs_rd_lim = bp->b_datap->db_lim; in zsa_srint()
2055 zs->zs_rd_cur = rd_cur; in zsa_srint()
2060 ZSSETSOFT(zs); in zsa_srint()
2067 ZSSETSOFT(zs); in zsa_srint()
2079 zsa_softint(struct zscom *zs) in zsa_softint() argument
2081 register struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_softint()
2093 mutex_enter(zs->zs_excl); in zsa_softint()
2094 if (zs->zs_suspended || (zs->zs_flags & ZS_CLOSED)) { in zsa_softint()
2095 mutex_exit(zs->zs_excl); in zsa_softint()
2101 mutex_enter(zs->zs_excl_hi); in zsa_softint()
2104 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2115 mutex_exit(zs->zs_excl); in zsa_softint()
2116 cv_broadcast(&zs->zs_flags_cv); in zsa_softint()
2121 mutex_exit(zs->zs_excl); in zsa_softint()
2126 mutex_exit(zs->zs_excl); in zsa_softint()
2134 mutex_enter(zs->zs_excl_hi); in zsa_softint()
2137 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2179 ZSA_GETBLOCK(zs, allocbcount); in zsa_softint()
2182 mutex_enter(zs->zs_excl_hi); in zsa_softint()
2207 (void) zsmctl(zs, ZSWR5_DTR, DMBIC); in zsa_softint()
2209 (zs->zs_wr_cur != NULL)) { in zsa_softint()
2210 zs->zs_wr_cur = NULL; in zsa_softint()
2211 zs->zs_wr_lim = NULL; in zsa_softint()
2221 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2229 mutex_enter(zs->zs_excl_hi); in zsa_softint()
2231 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2243 mutex_enter(zs->zs_excl_hi); in zsa_softint()
2250 zs->zs_wr_cur) in zsa_softint()
2257 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2260 zsa_start(zs); in zsa_softint()
2265 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2276 if ((!za->za_kick_rcv_id) && (zs->zs_rd_cur || za_kick_active)) { in zsa_softint()
2278 za->za_kick_rcv_id = timeout(zsa_kick_rcv, zs, in zsa_softint()
2281 za->za_kick_rcv_id = timeout(zsa_kick_rcv, zs, in zsa_softint()
2286 mutex_exit(zs->zs_excl); in zsa_softint()
2290 mutex_enter(zs->zs_excl); in zsa_softint()
2291 zsa_start(zs); in zsa_softint()
2292 mutex_exit(zs->zs_excl); in zsa_softint()
2330 flushflag = (zs->zs_flags & ZS_CLOSING) ? FLUSHALL : FLUSHDATA; in zsa_softint()
2340 if (wakeup || (zs->zs_flags & ZS_CLOSED)) in zsa_softint()
2341 cv_broadcast(&zs->zs_flags_cv); in zsa_softint()
2350 zsa_start(struct zscom *zs) in zsa_start() argument
2352 register struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_start()
2364 zs->zs_suspended) in zsa_start()
2368 mutex_enter(zs->zs_excl_hi); in zsa_start()
2370 rptr = zs->zs_wr_cur; in zsa_start()
2371 wptr = zs->zs_wr_lim; in zsa_start()
2375 mutex_exit(zs->zs_excl_hi); in zsa_start()
2382 mutex_enter(zs->zs_excl_hi); in zsa_start()
2386 mutex_exit(zs->zs_excl_hi); in zsa_start()
2390 mutex_exit(zs->zs_excl_hi); in zsa_start()
2397 mutex_exit(zs->zs_excl_hi); in zsa_start()
2431 mutex_enter(zs->zs_excl_hi); in zsa_start()
2433 mutex_exit(zs->zs_excl_hi); in zsa_start()
2436 timeout(zsa_restart, zs, hz/4); in zsa_start()
2450 zs, in zsa_start()
2513 mutex_enter(zs->zs_excl_hi); in zsa_start()
2514 zs->zs_wr_cur = rptr; in zsa_start()
2515 zs->zs_wr_lim = wptr; in zsa_start()
2524 mutex_exit(zs->zs_excl_hi); in zsa_start()
2531 mutex_exit(zs->zs_excl_hi); in zsa_start()
2544 zs->zs_wr_cur = rptr; in zsa_start()
2546 zs->zs_flags |= ZS_PROGRESS; in zsa_start()
2547 mutex_exit(zs->zs_excl_hi); in zsa_start()
2556 struct zscom *zs = arg; in zsa_restart() local
2557 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_restart()
2562 mutex_enter(zs->zs_excl); in zsa_restart()
2564 mutex_exit(zs->zs_excl); in zsa_restart()
2569 mutex_enter(zs->zs_excl_hi); in zsa_restart()
2571 mutex_exit(zs->zs_excl_hi); in zsa_restart()
2575 zsa_start(zs); in zsa_restart()
2576 mutex_exit(zs->zs_excl); in zsa_restart()
2577 cv_broadcast(&zs->zs_flags_cv); in zsa_restart()
2586 struct zscom *zs = arg; in zsa_kick_rcv() local
2587 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_kick_rcv()
2596 mutex_enter(zs->zs_excl); in zsa_kick_rcv()
2597 if (za->za_kick_rcv_id == 0 || (zs->zs_flags & ZS_CLOSED)) { in zsa_kick_rcv()
2598 mutex_exit(zs->zs_excl); in zsa_kick_rcv()
2605 mutex_exit(zs->zs_excl); in zsa_kick_rcv()
2608 mutex_enter(zs->zs_excl_hi); in zsa_kick_rcv()
2609 if (zs->zs_rd_cur) { in zsa_kick_rcv()
2615 mutex_exit(zs->zs_excl_hi); in zsa_kick_rcv()
2618 zs, g_zsticks); in zsa_kick_rcv()
2621 zs, zsticks[SPEED(za->za_ttycommon.t_cflag)]); in zsa_kick_rcv()
2623 mutex_exit(zs->zs_excl); in zsa_kick_rcv()
2628 mutex_exit(zs->zs_excl_hi); in zsa_kick_rcv()
2669 ZSA_GETBLOCK(zs, allocbcount); in zsa_kick_rcv()
2672 mutex_exit(zs->zs_excl); in zsa_kick_rcv()
2676 mutex_enter(zs->zs_excl); in zsa_kick_rcv()
2677 zsa_start(zs); in zsa_kick_rcv()
2678 mutex_exit(zs->zs_excl); in zsa_kick_rcv()
2694 if (zs->zs_flags & ZS_CLOSED) in zsa_kick_rcv()
2695 cv_broadcast(&zs->zs_flags_cv); in zsa_kick_rcv()
2706 struct zscom *zs = za->za_common; in zsa_reioctl() local
2713 mutex_enter(zs->zs_excl); in zsa_reioctl()
2715 mutex_exit(zs->zs_excl); in zsa_reioctl()
2720 mutex_exit(zs->zs_excl); in zsa_reioctl()
2730 mutex_exit(zs->zs_excl); in zsa_reioctl()
2742 register struct zscom *zs = za->za_common; in zsa_ioctl() local
2771 mutex_exit(zs->zs_excl); in zsa_ioctl()
2773 mutex_enter(zs->zs_excl); in zsa_ioctl()
2775 zssoftCAR[zs->zs_unit] = 1; in zsa_ioctl()
2777 zssoftCAR[zs->zs_unit] = 0; in zsa_ioctl()
2799 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2802 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2823 mutex_exit(zs->zs_excl); in zsa_ioctl()
2825 mutex_enter(zs->zs_excl); in zsa_ioctl()
2833 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2836 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2838 timeout(zsa_restart, zs, hz / 4); in zsa_ioctl()
2839 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2842 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2847 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2849 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2854 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2856 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2876 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2879 (void) zsmctl(zs, dmtozs(mlines), DMSET); in zsa_ioctl()
2882 (void) zsmctl(zs, dmtozs(mlines), DMBIS); in zsa_ioctl()
2885 (void) zsmctl(zs, dmtozs(mlines), DMBIC); in zsa_ioctl()
2888 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2905 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2907 zstodm(zsmctl(zs, 0, DMGET)); in zsa_ioctl()
2908 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2973 register struct zscom *zs = za->za_common; in zsa_program() local
2981 (void) zsmctl(zs, ZS_OFF, DMSET); in zsa_program()
3012 wr5 = (zs->zs_wreg[5] & (ZSWR5_RTS|ZSWR5_DTR)) | ZSWR5_TX_ENABLE; in zsa_program()
3083 speed = zs->zs_wreg[12] + (zs->zs_wreg[13] << 8); in zsa_program()
3096 if (((zs->zs_wreg[1] & ZSWR1_PARITY_SPECIAL) && in zsa_program()
3098 (!(zs->zs_wreg[1] & ZSWR1_PARITY_SPECIAL) && in zsa_program()
3100 wr3 != zs->zs_wreg[3] || wr4 != zs->zs_wreg[4] || in zsa_program()
3101 wr5 != zs->zs_wreg[5] || wr15 != zs->zs_wreg[15] || in zsa_program()
3105 zspp = &zs_prog[zs->zs_unit]; in zsa_program()
3106 zspp->zs = zs; in zsa_program()
3130 register struct zscom *zs; in zsgetspeed() local
3134 zs = &zscom[UNIT(dev)]; in zsgetspeed()
3153 struct zscom *zs = arg; in zsa_callback() local
3154 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_callback()
3157 mutex_enter(zs->zs_excl); in zsa_callback()
3160 ZSA_GETBLOCK(zs, allocbcount); in zsa_callback()
3162 mutex_exit(zs->zs_excl); in zsa_callback()
3205 zsa_suspend(struct zscom *zs) in zsa_suspend() argument
3213 za = (struct asyncline *)&zs->zs_priv_str; in zsa_suspend()
3214 mutex_enter(zs->zs_excl); in zsa_suspend()
3215 if (zs->zs_suspended) { in zsa_suspend()
3216 mutex_exit(zs->zs_excl); in zsa_suspend()
3219 zs->zs_suspended = 1; in zsa_suspend()
3224 mutex_enter(zs->zs_excl_hi); in zsa_suspend()
3231 mutex_exit(zs->zs_excl_hi); in zsa_suspend()
3232 mutex_exit(zs->zs_excl); in zsa_suspend()
3252 mutex_enter(zs->zs_excl); in zsa_suspend()
3254 mutex_enter(zs->zs_excl_hi); in zsa_suspend()
3255 if ((zs->zs_wr_cur) != NULL) { in zsa_suspend()
3259 bp->b_rptr = zs->zs_wr_cur; in zsa_suspend()
3260 zs->zs_wr_cur = NULL; in zsa_suspend()
3261 zs->zs_wr_lim = NULL; in zsa_suspend()
3264 mutex_exit(zs->zs_excl_hi); in zsa_suspend()
3272 mutex_enter(zs->zs_excl_hi); in zsa_suspend()
3273 if (zs->zs_wreg[5] & ZSWR5_BREAK) { in zsa_suspend()
3281 zspp = &zs_prog[zs->zs_unit]; in zsa_suspend()
3282 zspp->zs = zs; in zsa_suspend()
3284 zspp->wr3 = zs->zs_wreg[3]; in zsa_suspend()
3285 zspp->wr4 = zs->zs_wreg[4]; in zsa_suspend()
3286 zspp->wr5 = zs->zs_wreg[5]; in zsa_suspend()
3287 zspp->wr11 = zs->zs_wreg[11]; in zsa_suspend()
3288 zspp->wr12 = zs->zs_wreg[12]; in zsa_suspend()
3289 zspp->wr13 = zs->zs_wreg[13]; in zsa_suspend()
3290 zspp->wr15 = zs->zs_wreg[15]; in zsa_suspend()
3291 mutex_exit(zs->zs_excl_hi); in zsa_suspend()
3292 mutex_exit(zs->zs_excl); in zsa_suspend()
3297 cv_broadcast(&zs->zs_flags_cv); in zsa_suspend()
3302 zsa_resume(struct zscom *zs) in zsa_resume() argument
3307 za = (struct asyncline *)&zs->zs_priv_str; in zsa_resume()
3308 mutex_enter(zs->zs_excl); in zsa_resume()
3309 if (!(zs->zs_suspended)) { in zsa_resume()
3310 mutex_exit(zs->zs_excl); in zsa_resume()
3317 mutex_enter(zs->zs_excl_hi); in zsa_resume()
3318 zspp = &zs_prog[zs->zs_unit]; in zsa_resume()
3330 zs->zs_suspended = 0; in zsa_resume()
3333 ZSSETSOFT(zs); in zsa_resume()
3334 mutex_exit(zs->zs_excl_hi); in zsa_resume()
3335 mutex_exit(zs->zs_excl); in zsa_resume()
3342 zsa_print_info(struct zscom *zs) in zsa_print_info() argument
3344 register struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_print_info()
3348 printf("unit=%d\n", zs->zs_unit); in zsa_print_info()