Lines Matching refs:zs

70 #define	KIOIP		KSTAT_INTR_PTR(zs->intrstats)
127 void zsopinit(struct zscom *zs, struct zsops *zso);
129 static void zsnull_intr(struct zscom *zs);
130 static int zsnull_softint(struct zscom *zs);
131 static int zsnull_suspend(struct zscom *zs);
132 static int zsnull_resume(struct zscom *zs);
313 struct zscom *zs; in zsattach() local
330 zs = &zscom[current_chip*2]; in zsattach()
334 if (!zs->zs_resume || (zs->zs_resume)(zs) != DDI_SUCCESS) in zsattach()
339 zs++; in zsattach()
340 if (!zs->zs_resume || (zs->zs_resume)(zs) != DDI_SUCCESS) { in zsattach()
341 zs--; in zsattach()
342 if (!zs->zs_suspend || in zsattach()
343 (zs->zs_suspend)(zs) != DDI_SUCCESS) in zsattach()
377 zs = &zscom[current_chip*2]; in zsattach()
382 if (ddi_map_regs(dev, 0, (caddr_t *)&zs->zs_addr, 0, 0)) { in zsattach()
388 tmpzs = zs->zs_addr; in zsattach()
465 zs->zs_addr = (struct zscc_device *) in zsattach()
467 (zs+1)->zs_excl_hi = zs->zs_excl_hi = &zs_curr_lock; in zsattach()
469 zs++; in zsattach()
470 zs->zs_addr = (struct zscc_device *) in zsattach()
472 zscurr = zs; in zsattach()
474 zs->zs_unit = current_chip * 2 + i; in zsattach()
475 zs->zs_dip = dev; in zsattach()
476 zs->zs_excl = kmem_zalloc(sizeof (kmutex_t), KM_SLEEP); in zsattach()
477 mutex_init(zs->zs_excl, NULL, MUTEX_DRIVER, (void *)ZS_PL); in zsattach()
478 zs->zs_ocexcl = kmem_zalloc(sizeof (kmutex_t), KM_SLEEP); in zsattach()
479 mutex_init(zs->zs_ocexcl, NULL, MUTEX_DRIVER, (void *)ZS_PL); in zsattach()
481 zsopinit(zs, &zsops_null); in zsattach()
485 zssoftCAR[zs->zs_unit] = softcd; in zsattach()
489 keyboard_prop = GETPROP((dev_info_t *)(zs->zs_dip), in zsattach()
524 zs->zs_dtrlow = gethrestime_sec() - default_dtrlow; in zsattach()
525 cv_init(&zs->zs_flags_cv, NULL, CV_DEFAULT, NULL); in zsattach()
526 zsa_init(zs); in zsattach()
562 if (zs > zslast) in zsattach()
563 zslast = zs; in zsattach()
572 if (!GETPROP(zs->zs_dip, "keyboard", 0)) { in zsattach()
699 zs->intrstats = kstat_create("zs", current_chip, name, "controller", in zsattach()
701 if (zs->intrstats) { in zsattach()
702 kstat_install(zs->intrstats); in zsattach()
711 struct zscom *zs; in zsdetach() local
719 zs = &zscom[current_chip*2]; in zsdetach()
723 if (!zs->zs_suspend || (zs->zs_suspend)(zs) != DDI_SUCCESS) in zsdetach()
728 zs++; in zsdetach()
729 if (!zs->zs_suspend || (zs->zs_suspend)(zs) != DDI_SUCCESS) { in zsdetach()
730 zs--; in zsdetach()
731 if (!zs->zs_resume || in zsdetach()
732 (zs->zs_resume)(zs) != DDI_SUCCESS) in zsdetach()
771 struct zscom *zs; in zs_high_intr() local
777 zs = zscurr; /* Points at Channel B */ in zs_high_intr()
779 ZSNEXTPOLL(zs, zscurr); in zs_high_intr()
786 (zs->zs_xsint)(zs); in zs_high_intr()
789 (zs->zs_txint)(zs); in zs_high_intr()
793 (zs->zs_srint)(zs); in zs_high_intr()
795 (zs->zs_rxint)(zs); in zs_high_intr()
799 zs -= 1; in zs_high_intr()
801 (zs->zs_xsint)(zs); in zs_high_intr()
804 (zs->zs_txint)(zs); in zs_high_intr()
808 (zs->zs_srint)(zs); in zs_high_intr()
810 (zs->zs_rxint)(zs); in zs_high_intr()
814 zs = zscurr; in zs_high_intr()
821 zs += 2; /* Always Channel B */ in zs_high_intr()
822 if (zs > zslast) in zs_high_intr()
823 zs = &zscom[1]; in zs_high_intr()
824 if (!zs->zs_ops) in zs_high_intr()
828 zscurr = zs; /* update zscurr and */ in zs_high_intr()
832 if (zs->intrstats) { in zs_high_intr()
839 if (zs->intrstats) { in zs_high_intr()
854 struct zscom *zs; in zsintr() local
871 for (zs = &zscom[0]; zs <= zslast; zs++) { in zsintr()
872 if (zs->zs_flags & ZS_NEEDSOFT) { in zsintr()
873 zs->zs_flags &= ~ZS_NEEDSOFT; in zsintr()
874 (*zs->zs_ops->zsop_softint)(zs); in zsintr()
875 if (zs->intrstats) { in zsintr()
896 zsopinit(struct zscom *zs, struct zsops *zso) in zsopinit() argument
898 zs->zs_txint = zso->zsop_txint; in zsopinit()
899 zs->zs_xsint = zso->zsop_xsint; in zsopinit()
900 zs->zs_rxint = zso->zsop_rxint; in zsopinit()
901 zs->zs_srint = zso->zsop_srint; in zsopinit()
902 zs->zs_suspend = zso->zsop_suspend; in zsopinit()
903 zs->zs_resume = zso->zsop_resume; in zsopinit()
904 zs->zs_ops = zso; in zsopinit()
905 zs->zs_flags = 0; in zsopinit()
916 zsmctl(struct zscom *zs, int bits, int how) in zsmctl() argument
921 ASSERT(mutex_owned(zs->zs_excl_hi)); in zsmctl()
922 ASSERT(mutex_owned(zs->zs_excl)); in zsmctl()
925 mbits = zs->zs_wreg[5] & (ZSWR5_RTS|ZSWR5_DTR); in zsmctl()
950 held = now - zs->zs_dtrlow; in zsmctl()
956 zs->zs_dtrlow = now; in zsmctl()
962 mutex_exit(zs->zs_excl_hi); in zsmctl()
963 cv_wait(&lbolt_cv, zs->zs_excl); in zsmctl()
964 if (zs->zs_suspended) in zsmctl()
965 (void) ddi_dev_is_needed(zs->zs_dip, 0, 1); in zsmctl()
966 mutex_enter(zs->zs_excl_hi); in zsmctl()
970 zs->zs_wreg[5] &= ~(ZSWR5_RTS|ZSWR5_DTR); in zsmctl()
981 struct zscom *zs = zspp->zs; in zs_program() local
986 ASSERT(mutex_owned(zs->zs_excl)); in zs_program()
987 ASSERT(mutex_owned(zs->zs_excl_hi)); in zs_program()
1062 zsnull_intr(struct zscom *zs) in zsnull_intr() argument
1077 zsnull_softint(struct zscom *zs) in zsnull_softint() argument
1079 cmn_err(CE_WARN, "zs%d: unexpected soft int\n", zs->zs_unit); in zsnull_softint()
1087 zsnull_suspend(struct zscom *zs) in zsnull_suspend() argument
1089 struct zs_prog *zspp = &zs_prog[zs->zs_unit]; in zsnull_suspend()
1094 mutex_enter(zs->zs_excl); in zsnull_suspend()
1095 mutex_enter(zs->zs_excl_hi); in zsnull_suspend()
1096 zspp->zs = zs; in zsnull_suspend()
1098 zspp->wr3 = zs->zs_wreg[3]; in zsnull_suspend()
1099 zspp->wr4 = zs->zs_wreg[4]; in zsnull_suspend()
1100 zspp->wr5 = zs->zs_wreg[5]; in zsnull_suspend()
1101 zspp->wr11 = zs->zs_wreg[11]; in zsnull_suspend()
1102 zspp->wr12 = zs->zs_wreg[12]; in zsnull_suspend()
1103 zspp->wr13 = zs->zs_wreg[13]; in zsnull_suspend()
1104 zspp->wr15 = zs->zs_wreg[15]; in zsnull_suspend()
1105 mutex_exit(zs->zs_excl_hi); in zsnull_suspend()
1106 mutex_exit(zs->zs_excl); in zsnull_suspend()
1112 zsnull_resume(struct zscom *zs) in zsnull_resume() argument
1114 struct zs_prog *zspp = &zs_prog[zs->zs_unit]; in zsnull_resume()
1119 mutex_enter(zs->zs_excl); in zsnull_resume()
1120 mutex_enter(zs->zs_excl_hi); in zsnull_resume()
1124 mutex_exit(zs->zs_excl_hi); in zsnull_resume()
1125 mutex_exit(zs->zs_excl); in zsnull_resume()