Lines Matching refs:zst
312 struct zskbd_softc *zst = (void *) self; local
320 timeout_set(&zst->zst_diag_ch, zskbd_diag, zst);
321 timeout_set(&zst->zst_bellto, zskbd_bellstop, zst);
323 zst->zst_tbp = zst->zst_tba = zst->zst_tbeg = zst->zst_tbuf;
324 zst->zst_tend = zst->zst_tbeg + ZSKBD_RING_SIZE;
326 tty_unit = zst->zst_dev.dv_unit;
329 cs->cs_private = zst;
332 zst->zst_cs = cs;
333 zst->zst_swflags = cf->cf_flags; /* softcar, etc. */
334 zst->zst_hwflags = args->hwflags;
337 if (zst->zst_swflags)
338 printf(", flags 0x%x", zst->zst_swflags);
345 if ((zst->zst_hwflags & ZS_HWFLAG_CONSOLE_INPUT) != 0) {
355 zst->zst_rbuf = malloc(zskbd_rbuf_size << 1, M_DEVBUF, M_WAITOK);
356 zst->zst_ebuf = zst->zst_rbuf + (zskbd_rbuf_size << 1);
358 zst->zst_r_hiwat = 0;
359 zst->zst_r_lowat = 0;
360 zst->zst_rbget = zst->zst_rbput = zst->zst_rbuf;
361 zst->zst_rbavail = zskbd_rbuf_size;
371 if (ISSET(zst->zst_hwflags, ZS_HWFLAG_CONSOLE)) {
376 } else if (!ISSET(zst->zst_hwflags, ZS_HWFLAG_NORESET)) {
393 if (zskbd_init(zst)) {
399 zs_modem(zst, 1);
404 zs_modem(zst, 0);
414 zst->zst_click = 0;
420 zst->zst_click = 1;
425 if (ISTYPE5(zst->zst_layout)) {
426 printf(": keyboard, type 5, layout 0x%x", zst->zst_layout);
429 if (zst->zst_layout < MAXSUNLAYOUT &&
430 sunkbd_layouts[zst->zst_layout] != -1)
432 sunkbd_layouts[zst->zst_layout];
435 printf(": keyboard, type %d", zst->zst_id);
436 if (zst->zst_id >= KB_SUN4)
437 printf(", layout 0x%x", zst->zst_layout);
440 if (zst->zst_layout < MAXSUNLAYOUT &&
441 sunkbd_layouts[zst->zst_layout] != -1)
443 sunkbd_layouts[zst->zst_layout];
447 a.accesscookie = zst;
452 wskbd_cnattach(&zskbd_consops, zst, a.keymap);
454 zst->zst_wskbddev = config_found(self, &a, wskbddevprint);
458 zskbd_init(zst) in zskbd_init() argument
459 struct zskbd_softc *zst; in zskbd_init()
461 struct zs_chanstate *cs = zst->zst_cs;
477 zs_maskintr(zst);
494 if (zst->zst_tx_busy) {
495 zst->zst_heldtbc = zst->zst_tbc;
496 zst->zst_tbc = 0;
507 zst->zst_r_hiwat = 0;
508 zst->zst_r_lowat = 0;
509 if (ISSET(zst->zst_rx_flags, RX_TTY_OVERFLOWED)) {
510 CLR(zst->zst_rx_flags, RX_TTY_OVERFLOWED);
511 zst->zst_rx_ready = 1;
514 if (ISSET(zst->zst_rx_flags, RX_TTY_BLOCKED|RX_IBUF_BLOCKED)) {
515 CLR(zst->zst_rx_flags, RX_TTY_BLOCKED|RX_IBUF_BLOCKED);
516 zs_hwiflow(zst);
531 if (zst->zst_tx_stopped) {
532 zst->zst_tx_stopped = 0;
533 zsstart_tx(zst);
545 zst->zst_leds = 0;
546 zst->zst_layout = -1;
549 zskbd_putc(zst, SKBD_CMD_RESET);
555 zskbd_raw(zst, *cs->cs_reg_data);
556 if (zst->zst_kbdstate == SKBD_STATE_RESET)
569 zskbd_raw(zst, *cs->cs_reg_data);
570 if (zst->zst_kbdstate == SKBD_STATE_GETKEY)
580 if (zst->zst_id == KB_SUN4) {
581 zskbd_putc(zst, SKBD_CMD_LAYOUT);
587 zskbd_raw(zst, *cs->cs_reg_data);
588 if (zst->zst_layout != -1)
597 zst->zst_layout = 0;
609 zskbd_raw(zst, c) in zskbd_raw() argument
610 struct zskbd_softc *zst; in zskbd_raw()
615 if (zst->zst_kbdstate == SKBD_STATE_LAYOUT) {
616 zst->zst_kbdstate = SKBD_STATE_GETKEY;
617 zst->zst_layout = c;
623 zst->zst_kbdstate = SKBD_STATE_RESET;
627 zst->zst_kbdstate = SKBD_STATE_LAYOUT;
631 zst->zst_kbdstate = SKBD_STATE_GETKEY;
639 switch (zst->zst_kbdstate) {
641 zst->zst_kbdstate = SKBD_STATE_GETKEY;
644 zst->zst_dev.dv_xname, c);
646 zst->zst_id = c;
654 zskbd_putc(zst, c) in zskbd_putc() argument
655 struct zskbd_softc *zst; in zskbd_putc()
663 rr0 = *zst->zst_cs->cs_reg_csr;
665 *zst->zst_cs->cs_reg_data = c;
671 zsenqueue_tx(zst, str, len) in zsenqueue_tx() argument
672 struct zskbd_softc *zst; in zsenqueue_tx()
679 if (zst->zst_tbc + len > ZSKBD_RING_SIZE)
681 zst->zst_tbc += len;
683 *zst->zst_tbp = str[i];
684 if (++zst->zst_tbp == zst->zst_tend)
685 zst->zst_tbp = zst->zst_tbeg;
688 zsstart_tx(zst);
693 zsstart_tx(zst) in zsstart_tx() argument
694 struct zskbd_softc *zst; in zsstart_tx()
696 struct zs_chanstate *cs = zst->zst_cs;
701 if (zst->zst_tx_stopped)
703 if (zst->zst_tbc == 0)
708 zst->zst_tx_busy = 1;
716 zs_write_data(cs, *zst->zst_tba);
718 zst->zst_tbc--;
719 if (++zst->zst_tba == zst->zst_tend)
720 zst->zst_tba = zst->zst_tbeg;
734 zs_maskintr(zst) in zs_maskintr() argument
735 struct zskbd_softc *zst; in zs_maskintr()
737 struct zs_chanstate *cs = zst->zst_cs;
741 if (zst->zst_ppsmask != 0)
761 zs_modem(zst, onoff) in zs_modem() argument
762 struct zskbd_softc *zst; in zs_modem()
765 struct zs_chanstate *cs = zst->zst_cs;
776 if (zst->zst_tx_busy) {
777 zst->zst_heldtbc = zst->zst_tbc;
778 zst->zst_tbc = 0;
790 zs_hwiflow(zst) in zs_hwiflow() argument
791 struct zskbd_softc *zst; in zs_hwiflow()
793 struct zs_chanstate *cs = zst->zst_cs;
798 if (ISSET(zst->zst_rx_flags, RX_ANY_BLOCK)) {
825 struct zskbd_softc *zst = cs->cs_private; local
830 end = zst->zst_ebuf;
831 put = zst->zst_rbput;
832 cc = zst->zst_rbavail;
851 put = zst->zst_rbuf;
867 zst->zst_rbput = put;
868 zst->zst_rbavail = cc;
869 if (!ISSET(zst->zst_rx_flags, RX_TTY_OVERFLOWED)) {
870 zst->zst_rx_ready = 1;
878 if (!ISSET(zst->zst_rx_flags, RX_IBUF_BLOCKED) &&
879 cc < zst->zst_r_hiwat) {
880 SET(zst->zst_rx_flags, RX_IBUF_BLOCKED);
881 zs_hwiflow(zst);
889 SET(zst->zst_rx_flags, RX_IBUF_OVERFLOWED);
903 struct zskbd_softc *zst = cs->cs_private; local
912 zst->zst_tbc = zst->zst_heldtbc;
913 zst->zst_heldtbc = 0;
917 if (zst->zst_tbc > 0) {
918 zs_write_data(cs, *zst->zst_tba);
919 zst->zst_tbc--;
920 if (++zst->zst_tba == zst->zst_tend)
921 zst->zst_tba = zst->zst_tbeg;
929 if (zst->zst_tx_busy) {
930 zst->zst_tx_busy = 0;
931 zst->zst_tx_done = 1;
945 struct zskbd_softc *zst = cs->cs_private; local
969 zst->zst_tbc = 0;
970 zst->zst_heldtbc = 0;
973 zst->zst_st_check = 1;
982 struct zskbd_softc *zst = arg; local
987 overflows = zst->zst_overflows;
988 zst->zst_overflows = 0;
989 floods = zst->zst_floods;
990 zst->zst_floods = 0;
991 zst->zst_errors = 0;
995 zst->zst_dev.dv_xname,
1001 zskbd_rxsoft(zst) in zskbd_rxsoft() argument
1002 struct zskbd_softc *zst; in zskbd_rxsoft()
1004 struct zs_chanstate *cs = zst->zst_cs;
1011 end = zst->zst_ebuf;
1012 get = zst->zst_rbget;
1013 scc = cc = zskbd_rbuf_size - zst->zst_rbavail;
1016 zst->zst_floods++;
1017 if (zst->zst_errors++ == 0)
1018 timeout_add(&zst->zst_diag_ch, 60 * hz);
1026 zst->zst_overflows++;
1027 if (zst->zst_errors++ == 0)
1028 timeout_add(&zst->zst_diag_ch, 60 * hz);
1047 wskbd_input(zst->zst_wskbddev, type, value);
1051 get = zst->zst_rbuf;
1056 zst->zst_rbget = get;
1058 cc = zst->zst_rbavail += scc - cc;
1060 if (cc >= zst->zst_r_lowat) {
1061 if (ISSET(zst->zst_rx_flags, RX_IBUF_OVERFLOWED)) {
1062 CLR(zst->zst_rx_flags, RX_IBUF_OVERFLOWED);
1067 if (ISSET(zst->zst_rx_flags, RX_IBUF_BLOCKED)) {
1068 CLR(zst->zst_rx_flags, RX_IBUF_BLOCKED);
1069 zs_hwiflow(zst);
1077 zskbd_txsoft(zst) in zskbd_txsoft() argument
1078 struct zskbd_softc *zst; in zskbd_txsoft()
1083 zskbd_stsoft(zst) in zskbd_stsoft() argument
1084 struct zskbd_softc *zst; in zskbd_stsoft()
1086 struct zs_chanstate *cs = zst->zst_cs;
1099 zst->zst_tx_stopped = 0;
1101 zst->zst_tx_stopped = 1;
1121 struct zskbd_softc *zst = cs->cs_private; local
1126 if (zst->zst_rx_ready) {
1127 zst->zst_rx_ready = 0;
1128 zskbd_rxsoft(zst);
1131 if (zst->zst_st_check) {
1132 zst->zst_st_check = 0;
1133 zskbd_stsoft(zst);
1136 if (zst->zst_tx_done) {
1137 zst->zst_tx_done = 0;
1138 zskbd_txsoft(zst);
1164 struct zskbd_softc *zst = v; local
1168 zst->zst_leds = wled;
1181 zsenqueue_tx(zst, cmd, sizeof(cmd));
1185 zskbd_get_leds(zst) in zskbd_get_leds() argument
1186 struct zskbd_softc *zst; in zskbd_get_leds()
1188 return (zst->zst_leds);
1199 struct zskbd_softc *zst = v; local
1205 if (ISTYPE5(zst->zst_layout)) {
1212 zskbd_set_leds(zst, *d_int);
1215 *d_int = zskbd_get_leds(zst);
1218 zskbd_bell(zst, d_bell->period,
1226 zskbd_bell(zst, period, pitch, volume) in zskbd_bell() argument
1227 struct zskbd_softc *zst; in zskbd_bell()
1238 if (zst->zst_bellactive) {
1239 if (zst->zst_belltimeout == 0)
1240 timeout_del(&zst->zst_bellto);
1243 zskbd_bellstop(zst);
1247 if (!zst->zst_bellactive) {
1248 zst->zst_bellactive = 1;
1249 zst->zst_belltimeout = 1;
1250 zsenqueue_tx(zst, &c, 1);
1251 timeout_add(&zst->zst_bellto, ticks);
1260 struct zskbd_softc *zst = v; local
1265 zst->zst_belltimeout = 0;
1267 zsenqueue_tx(zst, &c, 1);
1268 zst->zst_bellactive = 0;
1291 struct zskbd_softc *zst = v; local
1297 rr0 = *zst->zst_cs->cs_reg_csr;
1300 c = *zst->zst_cs->cs_reg_data;
1317 zskbd_reset(zst) in zskbd_reset() argument
1318 struct zskbd_softc *zst; in zskbd_reset()
1329 switch (zst->zst_id) {
1335 if (zst->zst_click == 0)
1340 if (zst->zst_click != 0)
1348 zsenqueue_tx(zst, &c, 1);