Lines Matching refs:zs

226 #define	ZSA_GETBLOCK(zs, allocbcount) \  argument
236 zsa_callback, zs); \
244 mutex_enter(zs->zs_excl_hi); \
245 if (!(zs->zs_wreg[5] & ZSWR5_RTS)) { \
254 mutex_exit(zs->zs_excl_hi); \
272 if (zs->zs_wreg[5] & ZSWR5_RTS) \
276 } else if (zs->zs_wreg[5] & ZSWR5_RTS) { \
293 mutex_enter(zs->zs_excl_hi); \
295 ZSSETSOFT(zs); \
296 mutex_exit(zs->zs_excl_hi); \
326 if (zs->zs_rd_cur) { /* M_DATA */ \
327 mp->b_wptr = zs->zs_rd_cur; \
328 zs->zs_rd_cur = NULL; \
329 zs->zs_rd_lim = NULL; \
333 ZSSETSOFT(zs); \
394 zs_h_log[zs_h_log_n++] = 'A' + zs->zs_unit; \
407 if (zsa_h_log_n[zs->zs_unit] >= ZSA_H_LOG_MAX) \
408 zsa_h_log_n[zs->zs_unit] = 0; \
409 zsa_h_log[zs->zs_unit][zsa_h_log_n[zs->zs_unit]++] = c; \
410 zsa_h_log[zs->zs_unit][zsa_h_log_n[zs->zs_unit]] = '\0'; \
416 for (p = &zsa_h_log[zs->zs_unit][ZSA_H_LOG_MAX]; \
417 p >= &zsa_h_log[zs->zs_unit][0]; /* null */) \
419 zsa_h_log_n[zs->zs_unit] = 0; \
490 static void zsa_txint(struct zscom *zs);
491 static void zsa_xsint(struct zscom *zs);
492 static void zsa_rxint(struct zscom *zs);
493 static void zsa_srint(struct zscom *zs);
494 static int zsa_softint(struct zscom *zs);
495 static int zsa_suspend(struct zscom *zs);
496 static int zsa_resume(struct zscom *zs);
499 zsa_null(struct zscom *zs) in zsa_null() argument
512 zsa_null_int(struct zscom *zs) in zsa_null_int() argument
543 static void zsa_start(struct zscom *zs);
558 struct zscom *zs; in zsc_info() local
565 zs = &zscom[unit]; in zsc_info()
566 *result = zs->zs_dip; in zsc_info()
673 zsa_init(struct zscom *zs) in zsa_init() argument
680 mutex_enter(zs->zs_excl); in zsa_init()
681 mutex_enter(zs->zs_excl_hi); in zsa_init()
690 if (zsa_channel_is_active_in_rom(zs->zs_dip, zs->zs_unit)) in zsa_init()
691 (void) zsmctl(zs, ZS_ON, DMSET); /* raise dtr */ in zsa_init()
692 else if (zsasoftdtr && (zssoftCAR[zs->zs_unit])) in zsa_init()
693 (void) zsmctl(zs, ZS_ON, DMSET); /* raise dtr */ in zsa_init()
695 (void) zsmctl(zs, ZS_OFF, DMSET); /* drop dtr */ in zsa_init()
706 mutex_exit(zs->zs_excl_hi); in zsa_init()
707 mutex_exit(zs->zs_excl); in zsa_init()
718 struct zscom *zs; in zsa_open() local
731 zs = &zscom[unit]; in zsa_open()
732 if (zs->zs_ops == NULL) { in zsa_open()
736 mutex_enter(zs->zs_ocexcl); in zsa_open()
737 mutex_enter(zs->zs_excl); in zsa_open()
739 if ((zs->zs_ops != &zsops_null) && in zsa_open()
740 (zs->zs_ops != &zsops_async)) { in zsa_open()
741 mutex_exit(zs->zs_excl); in zsa_open()
742 mutex_exit(zs->zs_ocexcl); in zsa_open()
746 za = (struct asyncline *)&zs->zs_priv_str; in zsa_open()
748 if (zs->zs_suspended) { in zsa_open()
749 mutex_exit(zs->zs_excl); in zsa_open()
750 mutex_exit(zs->zs_ocexcl); in zsa_open()
751 (void) ddi_dev_is_needed(zs->zs_dip, 0, 1); in zsa_open()
752 mutex_enter(zs->zs_ocexcl); in zsa_open()
753 mutex_enter(zs->zs_excl); in zsa_open()
757 (void) pm_busy_component(zs->zs_dip, unit%2+1); in zsa_open()
759 if (zs->zs_ops == &zsops_null) { in zsa_open()
760 bzero(za, sizeof (zs->zs_priv_str)); in zsa_open()
761 za->za_common = zs; in zsa_open()
762 if (zssoftCAR[zs->zs_unit]) in zsa_open()
764 zsopinit(zs, &zsops_async); in zsa_open()
770 zs->zs_priv = (caddr_t)za; in zsa_open()
776 mutex_enter(zs->zs_excl_hi); in zsa_open()
783 mutex_exit(zs->zs_excl_hi); in zsa_open()
798 mutex_enter(zs->zs_excl_hi); in zsa_open()
825 mutex_exit(zs->zs_excl_hi); in zsa_open()
827 zsopinit(zs, &zsops_null); in zsa_open()
828 mutex_exit(zs->zs_excl); in zsa_open()
829 mutex_exit(zs->zs_ocexcl); in zsa_open()
832 mutex_exit(zs->zs_excl_hi); in zsa_open()
834 zsopinit(zs, &zsops_null); in zsa_open()
835 mutex_exit(zs->zs_excl); in zsa_open()
836 mutex_exit(zs->zs_ocexcl); in zsa_open()
842 (void) zsmctl(zs, ZS_ON, DMSET); in zsa_open()
848 (zsmctl(zs, 0, DMGET) & ZSRR0_CD)) in zsa_open()
850 mutex_exit(zs->zs_excl_hi); in zsa_open()
861 mutex_exit(zs->zs_excl); in zsa_open()
862 if (cv_wait_sig(&zs->zs_flags_cv, zs->zs_ocexcl) == 0) { in zsa_open()
863 mutex_enter(zs->zs_excl); in zsa_open()
864 if (zs->zs_suspended) { in zsa_open()
865 mutex_exit(zs->zs_excl); in zsa_open()
866 mutex_exit(zs->zs_ocexcl); in zsa_open()
867 (void) ddi_dev_is_needed(zs->zs_dip, in zsa_open()
869 mutex_enter(zs->zs_ocexcl); in zsa_open()
870 mutex_enter(zs->zs_excl); in zsa_open()
874 zsopinit(zs, &zsops_null); in zsa_open()
875 mutex_exit(zs->zs_excl); in zsa_open()
876 mutex_exit(zs->zs_ocexcl); in zsa_open()
879 mutex_enter(zs->zs_excl); in zsa_open()
881 if ((zs->zs_ops == &zsops_null) || in zsa_open()
882 (zs->zs_ops == &zsops_async)) in zsa_open()
886 zsopinit(zs, &zsops_null); in zsa_open()
887 mutex_exit(zs->zs_excl); in zsa_open()
888 mutex_exit(zs->zs_ocexcl); in zsa_open()
894 zsopinit(zs, &zsops_null); in zsa_open()
895 mutex_exit(zs->zs_excl); in zsa_open()
896 mutex_exit(zs->zs_ocexcl); in zsa_open()
905 ZSA_GETBLOCK(zs, allocbcount); in zsa_open()
907 mutex_exit(zs->zs_excl); in zsa_open()
908 mutex_exit(zs->zs_ocexcl); in zsa_open()
916 struct zscom *zs = za->za_common; in zs_progress_check() local
924 mutex_enter(zs->zs_excl); in zs_progress_check()
925 if (!(zs->zs_flags & ZS_PROGRESS) && in zs_progress_check()
928 mutex_enter(zs->zs_excl_hi); in zs_progress_check()
930 zs->zs_wr_cur = NULL; in zs_progress_check()
931 zs->zs_wr_lim = NULL; in zs_progress_check()
934 mutex_exit(zs->zs_excl_hi); in zs_progress_check()
935 zs->zs_timer = 0; in zs_progress_check()
936 mutex_exit(zs->zs_excl); in zs_progress_check()
946 cv_broadcast(&zs->zs_flags_cv); in zs_progress_check()
948 zs->zs_flags &= ~ZS_PROGRESS; in zs_progress_check()
949 zs->zs_timer = timeout(zs_progress_check, za, in zs_progress_check()
951 mutex_exit(zs->zs_excl); in zs_progress_check()
969 struct zscom *zs; in zsa_close() local
979 zs = za->za_common; in zsa_close()
981 mutex_enter(zs->zs_excl); in zsa_close()
982 zs->zs_flags |= ZS_CLOSING; in zsa_close()
993 if (!(za->za_flags & ZAS_BREAK) && (zs->zs_wreg[5] & ZSWR5_BREAK)) in zsa_close()
1028 zs->zs_flags &= ~ZS_PROGRESS; in zsa_close()
1029 zs->zs_timer = timeout(zs_progress_check, za, in zsa_close()
1033 while (zs->zs_wr_cur != NULL || in zsa_close()
1036 if (cv_wait_sig(&zs->zs_flags_cv, zs->zs_excl) == 0) in zsa_close()
1040 if (zs->zs_timer != 0) { in zsa_close()
1041 (void) untimeout(zs->zs_timer); in zsa_close()
1042 zs->zs_timer = 0; in zsa_close()
1049 mutex_enter(zs->zs_excl_hi); in zsa_close()
1050 if (zs->zs_wreg[5] & ZSWR5_BREAK) { in zsa_close()
1069 zsopinit(zs, &zsops_null_async); in zsa_close()
1086 (void) zsmctl(zs, ZS_ON, DMSET); in zsa_close()
1088 (void) zsmctl(zs, ZS_OFF, DMSET); in zsa_close()
1089 mutex_exit(zs->zs_excl_hi); in zsa_close()
1095 tmp = cv_reltimedwait_sig(&zs->zs_flags_cv, zs->zs_excl, in zsa_close()
1097 if (zs->zs_suspended) { in zsa_close()
1098 mutex_exit(zs->zs_excl); in zsa_close()
1099 (void) ddi_dev_is_needed(zs->zs_dip, 0, 1); in zsa_close()
1100 mutex_enter(zs->zs_excl); in zsa_close()
1104 mutex_enter(zs->zs_excl_hi); in zsa_close()
1112 mutex_exit(zs->zs_excl_hi); in zsa_close()
1123 mutex_enter(zs->zs_excl_hi); in zsa_close()
1125 zs->zs_wr_cur = NULL; in zsa_close()
1126 zs->zs_wr_lim = NULL; in zsa_close()
1129 mutex_exit(zs->zs_excl_hi); in zsa_close()
1133 mutex_enter(zs->zs_excl_hi); in zsa_close()
1134 zs->zs_rd_cur = NULL; in zsa_close()
1135 zs->zs_rd_lim = NULL; in zsa_close()
1138 mutex_exit(zs->zs_excl_hi); in zsa_close()
1143 mutex_enter(zs->zs_excl_hi); in zsa_close()
1146 mutex_exit(zs->zs_excl_hi); in zsa_close()
1152 zs->zs_flags |= ZS_CLOSED; in zsa_close()
1154 cv_wait(&zs->zs_flags_cv, zs->zs_excl); in zsa_close()
1156 if (zs->zs_suspended) { in zsa_close()
1157 mutex_exit(zs->zs_excl); in zsa_close()
1158 (void) ddi_dev_is_needed(zs->zs_dip, 0, 1); in zsa_close()
1159 mutex_enter(zs->zs_excl); in zsa_close()
1165 mutex_exit(zs->zs_excl); in zsa_close()
1185 zsopinit(zs, &zsops_null); in zsa_close()
1186 cv_broadcast(&zs->zs_flags_cv); in zsa_close()
1189 (void) pm_idle_component(zs->zs_dip, zs->zs_unit%2+1); in zsa_close()
1208 struct zscom *zs; in zsa_wput() local
1215 zs = za->za_common; in zsa_wput()
1216 if (zs->zs_flags & ZS_NEEDSOFT) { in zsa_wput()
1217 zs->zs_flags &= ~ZS_NEEDSOFT; in zsa_wput()
1218 (void) zsa_softint(zs); in zsa_wput()
1228 mutex_enter(zs->zs_excl); in zsa_wput()
1229 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1231 if ((zs->zs_wr_cur) != NULL) { in zsa_wput()
1235 bp->b_rptr = zs->zs_wr_cur; in zsa_wput()
1236 zs->zs_wr_cur = NULL; in zsa_wput()
1237 zs->zs_wr_lim = NULL; in zsa_wput()
1240 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1244 mutex_exit(zs->zs_excl); in zsa_wput()
1248 mutex_enter(zs->zs_excl); in zsa_wput()
1256 zsa_start(zs); in zsa_wput()
1259 mutex_exit(zs->zs_excl); in zsa_wput()
1263 mutex_enter(zs->zs_excl); in zsa_wput()
1372 zsa_start(zs); in zsa_wput()
1382 mutex_exit(zs->zs_excl); in zsa_wput()
1388 mutex_enter(zs->zs_excl); in zsa_wput()
1395 mutex_exit(zs->zs_excl); in zsa_wput()
1401 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1402 (void) zsmctl(zs, dmtozs(*(int *)mp->b_cont->b_rptr), in zsa_wput()
1404 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1410 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1411 (void) zsmctl(zs, dmtozs(*(int *)mp->b_cont->b_rptr), in zsa_wput()
1413 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1419 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1420 (void) zsmctl(zs, dmtozs(*(int *)mp->b_cont->b_rptr), in zsa_wput()
1422 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1436 mutex_exit(zs->zs_excl); in zsa_wput()
1441 mutex_enter(zs->zs_excl); in zsa_wput()
1449 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1451 zs->zs_wr_cur = NULL; in zsa_wput()
1452 zs->zs_wr_lim = NULL; in zsa_wput()
1455 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1469 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1479 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1480 mutex_exit(zs->zs_excl); in zsa_wput()
1483 mutex_enter(zs->zs_excl); in zsa_wput()
1484 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1497 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1512 zsa_start(zs); in zsa_wput()
1513 mutex_exit(zs->zs_excl); in zsa_wput()
1519 mutex_enter(zs->zs_excl); in zsa_wput()
1525 zsa_start(zs); in zsa_wput()
1526 mutex_exit(zs->zs_excl); in zsa_wput()
1530 mutex_enter(zs->zs_excl); in zsa_wput()
1531 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1533 if ((zs->zs_wr_cur) != NULL) { in zsa_wput()
1536 bp->b_rptr = zs->zs_wr_cur; in zsa_wput()
1537 zs->zs_wr_cur = NULL; in zsa_wput()
1538 zs->zs_wr_lim = NULL; in zsa_wput()
1541 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1545 zsa_start(zs); /* poke the start routine */ in zsa_wput()
1547 mutex_exit(zs->zs_excl); in zsa_wput()
1551 mutex_enter(zs->zs_excl); in zsa_wput()
1552 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1554 if ((zs->zs_wr_cur) != NULL) { in zsa_wput()
1557 bp->b_rptr = zs->zs_wr_cur; in zsa_wput()
1558 zs->zs_wr_cur = NULL; in zsa_wput()
1559 zs->zs_wr_lim = NULL; in zsa_wput()
1562 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1566 zsa_start(zs); /* poke the start routine */ in zsa_wput()
1568 mutex_exit(zs->zs_excl); in zsa_wput()
1584 mutex_enter(zs->zs_excl); in zsa_wput()
1588 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1590 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1594 mutex_enter(zs->zs_excl_hi); in zsa_wput()
1596 mutex_exit(zs->zs_excl_hi); in zsa_wput()
1600 mutex_exit(zs->zs_excl); in zsa_wput()
1622 struct zscom *zs; in zsa_rsrv() local
1626 zs = za->za_common; in zsa_rsrv()
1627 mutex_enter(zs->zs_excl_hi); in zsa_rsrv()
1628 ZSSETSOFT(zs); in zsa_rsrv()
1629 mutex_exit(zs->zs_excl_hi); in zsa_rsrv()
1642 zsa_txint(struct zscom *zs) in zsa_txint() argument
1644 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_txint()
1650 if ((wr_cur = zs->zs_wr_cur) != NULL) { in zsa_txint()
1651 if (wr_cur < zs->zs_wr_lim) { in zsa_txint()
1662 zs->zs_wr_cur = wr_cur; in zsa_txint()
1663 zs->zs_flags |= ZS_PROGRESS; in zsa_txint()
1666 zs->zs_wr_cur = NULL; in zsa_txint()
1667 zs->zs_wr_lim = NULL; in zsa_txint()
1674 ZSSETSOFT(zs); in zsa_txint()
1696 ZSSETSOFT(zs); in zsa_txint()
1703 zsa_xsint(struct zscom *zs) in zsa_xsint() argument
1705 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_xsint()
1828 ZSSETSOFT(zs); in zsa_xsint()
1835 zsa_rxint(struct zscom *zs) in zsa_rxint() argument
1837 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_rxint()
1839 uchar_t *rd_cur = zs->zs_rd_cur; in zsa_rxint()
1840 uchar_t *rd_lim = zs->zs_rd_lim; in zsa_rxint()
1869 zsa_xsint(zs); in zsa_rxint()
1887 zsa_xsint(zs); in zsa_rxint()
1911 ZSSETSOFT(zs); in zsa_rxint()
1915 zs->zs_rd_cur = rd_cur = bp->b_wptr; in zsa_rxint()
1916 zs->zs_rd_lim = rd_lim = bp->b_datap->db_lim; in zsa_rxint()
1918 ZSSETSOFT(zs); in zsa_rxint()
1929 zs->zs_rd_cur = rd_cur = bp->b_wptr; in zsa_rxint()
1930 zs->zs_rd_lim = rd_lim = bp->b_datap->db_lim; in zsa_rxint()
1937 zs->zs_rd_cur = rd_cur; in zsa_rxint()
1943 ZSSETSOFT(zs); in zsa_rxint()
1958 zsa_srint(struct zscom *zs) in zsa_srint() argument
1960 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_srint()
1965 uchar_t *rd_cur = zs->zs_rd_cur; in zsa_srint()
2044 if (bp && zs->zs_rd_cur) { /* M_DATA msg */ in zsa_srint()
2052 ZSSETSOFT(zs); in zsa_srint()
2055 zs->zs_rd_cur = rd_cur = bp->b_wptr; in zsa_srint()
2056 zs->zs_rd_lim = bp->b_datap->db_lim; in zsa_srint()
2058 zs->zs_rd_cur = rd_cur; in zsa_srint()
2063 ZSSETSOFT(zs); in zsa_srint()
2070 ZSSETSOFT(zs); in zsa_srint()
2082 zsa_softint(struct zscom *zs) in zsa_softint() argument
2084 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_softint()
2096 mutex_enter(zs->zs_excl); in zsa_softint()
2097 if (zs->zs_suspended || (zs->zs_flags & ZS_CLOSED)) { in zsa_softint()
2098 mutex_exit(zs->zs_excl); in zsa_softint()
2104 mutex_enter(zs->zs_excl_hi); in zsa_softint()
2107 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2118 mutex_exit(zs->zs_excl); in zsa_softint()
2119 cv_broadcast(&zs->zs_flags_cv); in zsa_softint()
2124 mutex_exit(zs->zs_excl); in zsa_softint()
2129 mutex_exit(zs->zs_excl); in zsa_softint()
2137 mutex_enter(zs->zs_excl_hi); in zsa_softint()
2140 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2182 ZSA_GETBLOCK(zs, allocbcount); in zsa_softint()
2185 mutex_enter(zs->zs_excl_hi); in zsa_softint()
2210 (void) zsmctl(zs, ZSWR5_DTR, DMBIC); in zsa_softint()
2212 (zs->zs_wr_cur != NULL)) { in zsa_softint()
2213 zs->zs_wr_cur = NULL; in zsa_softint()
2214 zs->zs_wr_lim = NULL; in zsa_softint()
2224 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2232 mutex_enter(zs->zs_excl_hi); in zsa_softint()
2234 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2246 mutex_enter(zs->zs_excl_hi); in zsa_softint()
2253 zs->zs_wr_cur) in zsa_softint()
2260 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2263 zsa_start(zs); in zsa_softint()
2268 mutex_exit(zs->zs_excl_hi); in zsa_softint()
2279 if ((!za->za_kick_rcv_id) && (zs->zs_rd_cur || za_kick_active)) { in zsa_softint()
2281 za->za_kick_rcv_id = timeout(zsa_kick_rcv, zs, in zsa_softint()
2284 za->za_kick_rcv_id = timeout(zsa_kick_rcv, zs, in zsa_softint()
2289 mutex_exit(zs->zs_excl); in zsa_softint()
2293 mutex_enter(zs->zs_excl); in zsa_softint()
2294 zsa_start(zs); in zsa_softint()
2295 mutex_exit(zs->zs_excl); in zsa_softint()
2333 flushflag = (zs->zs_flags & ZS_CLOSING) ? FLUSHALL : FLUSHDATA; in zsa_softint()
2343 if (wakeup || (zs->zs_flags & ZS_CLOSED)) in zsa_softint()
2344 cv_broadcast(&zs->zs_flags_cv); in zsa_softint()
2353 zsa_start(struct zscom *zs) in zsa_start() argument
2355 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_start()
2367 zs->zs_suspended) in zsa_start()
2371 mutex_enter(zs->zs_excl_hi); in zsa_start()
2373 rptr = zs->zs_wr_cur; in zsa_start()
2374 wptr = zs->zs_wr_lim; in zsa_start()
2378 mutex_exit(zs->zs_excl_hi); in zsa_start()
2385 mutex_enter(zs->zs_excl_hi); in zsa_start()
2389 mutex_exit(zs->zs_excl_hi); in zsa_start()
2393 mutex_exit(zs->zs_excl_hi); in zsa_start()
2400 mutex_exit(zs->zs_excl_hi); in zsa_start()
2434 mutex_enter(zs->zs_excl_hi); in zsa_start()
2436 mutex_exit(zs->zs_excl_hi); in zsa_start()
2439 timeout(zsa_restart, zs, hz/4); in zsa_start()
2453 zs, in zsa_start()
2516 mutex_enter(zs->zs_excl_hi); in zsa_start()
2517 zs->zs_wr_cur = rptr; in zsa_start()
2518 zs->zs_wr_lim = wptr; in zsa_start()
2527 mutex_exit(zs->zs_excl_hi); in zsa_start()
2534 mutex_exit(zs->zs_excl_hi); in zsa_start()
2547 zs->zs_wr_cur = rptr; in zsa_start()
2549 zs->zs_flags |= ZS_PROGRESS; in zsa_start()
2550 mutex_exit(zs->zs_excl_hi); in zsa_start()
2559 struct zscom *zs = arg; in zsa_restart() local
2560 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_restart()
2565 mutex_enter(zs->zs_excl); in zsa_restart()
2567 mutex_exit(zs->zs_excl); in zsa_restart()
2572 mutex_enter(zs->zs_excl_hi); in zsa_restart()
2574 mutex_exit(zs->zs_excl_hi); in zsa_restart()
2578 zsa_start(zs); in zsa_restart()
2579 mutex_exit(zs->zs_excl); in zsa_restart()
2580 cv_broadcast(&zs->zs_flags_cv); in zsa_restart()
2589 struct zscom *zs = arg; in zsa_kick_rcv() local
2590 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_kick_rcv()
2599 mutex_enter(zs->zs_excl); in zsa_kick_rcv()
2600 if (za->za_kick_rcv_id == 0 || (zs->zs_flags & ZS_CLOSED)) { in zsa_kick_rcv()
2601 mutex_exit(zs->zs_excl); in zsa_kick_rcv()
2608 mutex_exit(zs->zs_excl); in zsa_kick_rcv()
2611 mutex_enter(zs->zs_excl_hi); in zsa_kick_rcv()
2612 if (zs->zs_rd_cur) { in zsa_kick_rcv()
2618 mutex_exit(zs->zs_excl_hi); in zsa_kick_rcv()
2621 zs, g_zsticks); in zsa_kick_rcv()
2624 zs, zsticks[SPEED(za->za_ttycommon.t_cflag)]); in zsa_kick_rcv()
2626 mutex_exit(zs->zs_excl); in zsa_kick_rcv()
2631 mutex_exit(zs->zs_excl_hi); in zsa_kick_rcv()
2672 ZSA_GETBLOCK(zs, allocbcount); in zsa_kick_rcv()
2675 mutex_exit(zs->zs_excl); in zsa_kick_rcv()
2679 mutex_enter(zs->zs_excl); in zsa_kick_rcv()
2680 zsa_start(zs); in zsa_kick_rcv()
2681 mutex_exit(zs->zs_excl); in zsa_kick_rcv()
2697 if (zs->zs_flags & ZS_CLOSED) in zsa_kick_rcv()
2698 cv_broadcast(&zs->zs_flags_cv); in zsa_kick_rcv()
2709 struct zscom *zs = za->za_common; in zsa_reioctl() local
2716 mutex_enter(zs->zs_excl); in zsa_reioctl()
2718 mutex_exit(zs->zs_excl); in zsa_reioctl()
2723 mutex_exit(zs->zs_excl); in zsa_reioctl()
2733 mutex_exit(zs->zs_excl); in zsa_reioctl()
2745 struct zscom *zs = za->za_common; in zsa_ioctl() local
2774 mutex_exit(zs->zs_excl); in zsa_ioctl()
2776 mutex_enter(zs->zs_excl); in zsa_ioctl()
2778 zssoftCAR[zs->zs_unit] = 1; in zsa_ioctl()
2780 zssoftCAR[zs->zs_unit] = 0; in zsa_ioctl()
2802 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2805 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2826 mutex_exit(zs->zs_excl); in zsa_ioctl()
2828 mutex_enter(zs->zs_excl); in zsa_ioctl()
2836 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2839 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2841 timeout(zsa_restart, zs, hz / 4); in zsa_ioctl()
2842 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2845 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2850 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2852 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2857 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2859 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2879 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2882 (void) zsmctl(zs, dmtozs(mlines), DMSET); in zsa_ioctl()
2885 (void) zsmctl(zs, dmtozs(mlines), DMBIS); in zsa_ioctl()
2888 (void) zsmctl(zs, dmtozs(mlines), DMBIC); in zsa_ioctl()
2891 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2908 mutex_enter(zs->zs_excl_hi); in zsa_ioctl()
2910 zstodm(zsmctl(zs, 0, DMGET)); in zsa_ioctl()
2911 mutex_exit(zs->zs_excl_hi); in zsa_ioctl()
2976 struct zscom *zs = za->za_common; in zsa_program() local
2984 (void) zsmctl(zs, ZS_OFF, DMSET); in zsa_program()
3015 wr5 = (zs->zs_wreg[5] & (ZSWR5_RTS|ZSWR5_DTR)) | ZSWR5_TX_ENABLE; in zsa_program()
3086 speed = zs->zs_wreg[12] + (zs->zs_wreg[13] << 8); in zsa_program()
3099 if (((zs->zs_wreg[1] & ZSWR1_PARITY_SPECIAL) && in zsa_program()
3101 (!(zs->zs_wreg[1] & ZSWR1_PARITY_SPECIAL) && in zsa_program()
3103 wr3 != zs->zs_wreg[3] || wr4 != zs->zs_wreg[4] || in zsa_program()
3104 wr5 != zs->zs_wreg[5] || wr15 != zs->zs_wreg[15] || in zsa_program()
3108 zspp = &zs_prog[zs->zs_unit]; in zsa_program()
3109 zspp->zs = zs; in zsa_program()
3133 struct zscom *zs; in zsgetspeed() local
3137 zs = &zscom[UNIT(dev)]; in zsgetspeed()
3156 struct zscom *zs = arg; in zsa_callback() local
3157 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_callback()
3160 mutex_enter(zs->zs_excl); in zsa_callback()
3163 ZSA_GETBLOCK(zs, allocbcount); in zsa_callback()
3165 mutex_exit(zs->zs_excl); in zsa_callback()
3208 zsa_suspend(struct zscom *zs) in zsa_suspend() argument
3216 za = (struct asyncline *)&zs->zs_priv_str; in zsa_suspend()
3217 mutex_enter(zs->zs_excl); in zsa_suspend()
3218 if (zs->zs_suspended) { in zsa_suspend()
3219 mutex_exit(zs->zs_excl); in zsa_suspend()
3222 zs->zs_suspended = 1; in zsa_suspend()
3227 mutex_enter(zs->zs_excl_hi); in zsa_suspend()
3234 mutex_exit(zs->zs_excl_hi); in zsa_suspend()
3235 mutex_exit(zs->zs_excl); in zsa_suspend()
3255 mutex_enter(zs->zs_excl); in zsa_suspend()
3257 mutex_enter(zs->zs_excl_hi); in zsa_suspend()
3258 if ((zs->zs_wr_cur) != NULL) { in zsa_suspend()
3262 bp->b_rptr = zs->zs_wr_cur; in zsa_suspend()
3263 zs->zs_wr_cur = NULL; in zsa_suspend()
3264 zs->zs_wr_lim = NULL; in zsa_suspend()
3267 mutex_exit(zs->zs_excl_hi); in zsa_suspend()
3275 mutex_enter(zs->zs_excl_hi); in zsa_suspend()
3276 if (zs->zs_wreg[5] & ZSWR5_BREAK) { in zsa_suspend()
3284 zspp = &zs_prog[zs->zs_unit]; in zsa_suspend()
3285 zspp->zs = zs; in zsa_suspend()
3287 zspp->wr3 = zs->zs_wreg[3]; in zsa_suspend()
3288 zspp->wr4 = zs->zs_wreg[4]; in zsa_suspend()
3289 zspp->wr5 = zs->zs_wreg[5]; in zsa_suspend()
3290 zspp->wr11 = zs->zs_wreg[11]; in zsa_suspend()
3291 zspp->wr12 = zs->zs_wreg[12]; in zsa_suspend()
3292 zspp->wr13 = zs->zs_wreg[13]; in zsa_suspend()
3293 zspp->wr15 = zs->zs_wreg[15]; in zsa_suspend()
3294 mutex_exit(zs->zs_excl_hi); in zsa_suspend()
3295 mutex_exit(zs->zs_excl); in zsa_suspend()
3300 cv_broadcast(&zs->zs_flags_cv); in zsa_suspend()
3305 zsa_resume(struct zscom *zs) in zsa_resume() argument
3310 za = (struct asyncline *)&zs->zs_priv_str; in zsa_resume()
3311 mutex_enter(zs->zs_excl); in zsa_resume()
3312 if (!(zs->zs_suspended)) { in zsa_resume()
3313 mutex_exit(zs->zs_excl); in zsa_resume()
3320 mutex_enter(zs->zs_excl_hi); in zsa_resume()
3321 zspp = &zs_prog[zs->zs_unit]; in zsa_resume()
3333 zs->zs_suspended = 0; in zsa_resume()
3336 ZSSETSOFT(zs); in zsa_resume()
3337 mutex_exit(zs->zs_excl_hi); in zsa_resume()
3338 mutex_exit(zs->zs_excl); in zsa_resume()
3345 zsa_print_info(struct zscom *zs) in zsa_print_info() argument
3347 struct asyncline *za = (struct asyncline *)&zs->zs_priv_str; in zsa_print_info()
3351 printf("unit=%d\n", zs->zs_unit); in zsa_print_info()