Lines Matching defs: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;
330 zs = &zscom[current_chip*2];
334 if (!zs->zs_resume || (zs->zs_resume)(zs) != DDI_SUCCESS)
339 zs++;
340 if (!zs->zs_resume || (zs->zs_resume)(zs) != DDI_SUCCESS) {
341 zs--;
342 if (!zs->zs_suspend ||
343 (zs->zs_suspend)(zs) != DDI_SUCCESS)
345 "zs: inconsistent suspend/resume state");
366 i = GETPROP(dev, "zs-usec-delay", 0);
372 "zs: unable to allocate resources for chip %d.",
374 cmn_err(CE_WARN, "Change zs:maxzs in /etc/system");
377 zs = &zscom[current_chip*2];
382 if (ddi_map_regs(dev, 0, (caddr_t *)&zs->zs_addr, 0, 0)) {
383 cmn_err(CE_WARN, "zs%d: unable to map registers\n",
388 tmpzs = zs->zs_addr;
403 * we're doing to the zs. This has caused some pretty funny bugs
465 zs->zs_addr = (struct zscc_device *)
467 (zs+1)->zs_excl_hi = zs->zs_excl_hi = &zs_curr_lock;
469 zs++;
470 zs->zs_addr = (struct zscc_device *)
472 zscurr = zs;
474 zs->zs_unit = current_chip * 2 + i;
475 zs->zs_dip = dev;
476 zs->zs_excl = kmem_zalloc(sizeof (kmutex_t), KM_SLEEP);
477 mutex_init(zs->zs_excl, NULL, MUTEX_DRIVER, (void *)ZS_PL);
478 zs->zs_ocexcl = kmem_zalloc(sizeof (kmutex_t), KM_SLEEP);
479 mutex_init(zs->zs_ocexcl, NULL, MUTEX_DRIVER, (void *)ZS_PL);
481 zsopinit(zs, &zsops_null);
485 zssoftCAR[zs->zs_unit] = softcd;
489 keyboard_prop = GETPROP((dev_info_t *)(zs->zs_dip),
524 zs->zs_dtrlow = gethrestime_sec() - default_dtrlow;
525 cv_init(&zs->zs_flags_cv, NULL, CV_DEFAULT, NULL);
526 zsa_init(zs);
546 cmn_err(CE_PANIC, "cannot set high level zs interrupt");
555 "cannot set second stage zs interrupt");
562 if (zs > zslast)
563 zslast = zs;
572 if (!GETPROP(zs->zs_dip, "keyboard", 0)) {
699 zs->intrstats = kstat_create("zs", current_chip, name, "controller",
701 if (zs->intrstats) {
702 kstat_install(zs->intrstats);
711 struct zscom *zs;
719 zs = &zscom[current_chip*2];
723 if (!zs->zs_suspend || (zs->zs_suspend)(zs) != DDI_SUCCESS)
728 zs++;
729 if (!zs->zs_suspend || (zs->zs_suspend)(zs) != DDI_SUCCESS) {
730 zs--;
731 if (!zs->zs_resume ||
732 (zs->zs_resume)(zs) != DDI_SUCCESS)
734 "zs: inconsistent suspend/resume state");
771 struct zscom *zs;
777 zs = zscurr; /* Points at Channel B */
779 ZSNEXTPOLL(zs, zscurr);
786 (zs->zs_xsint)(zs);
789 (zs->zs_txint)(zs);
793 (zs->zs_srint)(zs);
795 (zs->zs_rxint)(zs);
799 zs -= 1;
801 (zs->zs_xsint)(zs);
804 (zs->zs_txint)(zs);
808 (zs->zs_srint)(zs);
810 (zs->zs_rxint)(zs);
814 zs = zscurr;
821 zs += 2; /* Always Channel B */
822 if (zs > zslast)
823 zs = &zscom[1];
824 if (!zs->zs_ops)
828 zscurr = zs; /* update zscurr and */
832 if (zs->intrstats) {
839 if (zs->intrstats) {
854 struct zscom *zs;
871 for (zs = &zscom[0]; zs <= zslast; zs++) {
872 if (zs->zs_flags & ZS_NEEDSOFT) {
873 zs->zs_flags &= ~ZS_NEEDSOFT;
874 (*zs->zs_ops->zsop_softint)(zs);
875 if (zs->intrstats) {
896 zsopinit(struct zscom *zs, struct zsops *zso)
898 zs->zs_txint = zso->zsop_txint;
899 zs->zs_xsint = zso->zsop_xsint;
900 zs->zs_rxint = zso->zsop_rxint;
901 zs->zs_srint = zso->zsop_srint;
902 zs->zs_suspend = zso->zsop_suspend;
903 zs->zs_resume = zso->zsop_resume;
904 zs->zs_ops = zso;
905 zs->zs_flags = 0;
916 zsmctl(struct zscom *zs, int bits, int how)
921 ASSERT(mutex_owned(zs->zs_excl_hi));
922 ASSERT(mutex_owned(zs->zs_excl));
925 mbits = zs->zs_wreg[5] & (ZSWR5_RTS|ZSWR5_DTR);
950 held = now - zs->zs_dtrlow;
956 zs->zs_dtrlow = now;
962 mutex_exit(zs->zs_excl_hi);
963 cv_wait(&lbolt_cv, zs->zs_excl);
964 if (zs->zs_suspended)
965 (void) ddi_dev_is_needed(zs->zs_dip, 0, 1);
966 mutex_enter(zs->zs_excl_hi);
970 zs->zs_wreg[5] &= ~(ZSWR5_RTS|ZSWR5_DTR);
981 struct zscom *zs = zspp->zs;
986 ASSERT(mutex_owned(zs->zs_excl));
987 ASSERT(mutex_owned(zs->zs_excl_hi));
1062 zsnull_intr(struct zscom *zs)
1077 zsnull_softint(struct zscom *zs)
1079 cmn_err(CE_WARN, "zs%d: unexpected soft int\n", zs->zs_unit);
1084 * These will be called on suspend/resume for un-opened zs ports.
1087 zsnull_suspend(struct zscom *zs)
1089 struct zs_prog *zspp = &zs_prog[zs->zs_unit];
1094 mutex_enter(zs->zs_excl);
1095 mutex_enter(zs->zs_excl_hi);
1096 zspp->zs = zs;
1098 zspp->wr3 = zs->zs_wreg[3];
1099 zspp->wr4 = zs->zs_wreg[4];
1100 zspp->wr5 = zs->zs_wreg[5];
1101 zspp->wr11 = zs->zs_wreg[11];
1102 zspp->wr12 = zs->zs_wreg[12];
1103 zspp->wr13 = zs->zs_wreg[13];
1104 zspp->wr15 = zs->zs_wreg[15];
1105 mutex_exit(zs->zs_excl_hi);
1106 mutex_exit(zs->zs_excl);
1112 zsnull_resume(struct zscom *zs)
1114 struct zs_prog *zspp = &zs_prog[zs->zs_unit];
1119 mutex_enter(zs->zs_excl);
1120 mutex_enter(zs->zs_excl_hi);
1124 mutex_exit(zs->zs_excl_hi);
1125 mutex_exit(zs->zs_excl);