Home | History | Annotate | Download | only in tc

Lines Matching refs:si

276 stic_init(struct stic_info *si)
282 stic_reset(si);
283 vdac = si->si_vdac;
290 *si->si_vdac_reset = 0;
328 if (wsfont_lock(cookie, &si->si_font))
331 si->si_fontw = si->si_font->fontwidth;
332 si->si_fonth = si->si_font->fontheight;
333 si->si_consw = (1280 / si->si_fontw) & ~1;
334 si->si_consh = 1024 / si->si_fonth;
335 stic_stdscreen.ncols = si->si_consw;
336 stic_stdscreen.nrows = si->si_consh;
339 if ((u_int)si->si_fonth > 32 || (u_int)si->si_fontw > 16)
343 stic_setup_vdac(si);
344 stic_clear_screen(si);
345 si->si_dispmode = WSDISPLAYIO_MODE_EMUL;
349 stic_reset(struct stic_info *si)
354 sr = si->si_stic;
372 si->si_stampw = (xconfig ? 5 : 4);
373 si->si_stamph = (1 << yconfig);
374 si->si_stamphm = si->si_stamph - 1;
376 si->si_option = (char)((modtype >> 12) & 3);
380 si->si_stamp[0x000b0] = config;
381 si->si_stamp[0x000b4] = 0x0;
385 si->si_stamp[0x100b0] = config | 8;
386 si->si_stamp[0x100b4] = 0;
406 stic_attach(device_t self, struct stic_info *si, int console)
411 stic_info[stic_unit] = si;
412 si->si_unit = stic_unit++;
414 si->si_unit = -1;
416 callout_init(&si->si_switch_callout, 0);
425 stic_setup_backing(si, &stic_consscr);
430 waa.accesscookie = si;
436 stic_cnattach(struct stic_info *si)
442 si->si_curscreen = ss;
444 ss->ss_si = si;
446 si->si_flags |= SI_CURENB_CHANGED;
447 stic_flush(si);
450 stic_eraserows(ss, 0, si->si_consh, 0);
455 stic_setup_vdac(struct stic_info *si)
462 ip = (uint8_t *)si->si_cursor.cc_image;
463 mp = (uint8_t *)si->si_cursor.cc_mask;
464 memset(ip, 0, sizeof(si->si_cursor.cc_image));
465 memset(mp, 0, sizeof(si->si_cursor.cc_mask));
467 for (r = 0; r < si->si_fonth; r++) {
468 for (c = r & 1; c < si->si_fontw; c += 2) {
479 si->si_cursor.cc_size.x = 64;
480 si->si_cursor.cc_size.y = si->si_fonth;
481 si->si_cursor.cc_hot.x = 0;
482 si->si_cursor.cc_hot.y = 0;
484 si->si_cursor.cc_color[0] = 0xff;
485 si->si_cursor.cc_color[2] = 0xff;
486 si->si_cursor.cc_color[4] = 0xff;
487 si->si_cursor.cc_color[1] = 0x00;
488 si->si_cursor.cc_color[3] = 0x00;
489 si->si_cursor.cc_color[5] = 0x00;
491 memset(&si->si_cmap, 0, sizeof(si->si_cmap));
493 si->si_cmap.r[i] = stic_cmap[i*3 + 0];
494 si->si_cmap.g[i] = stic_cmap[i*3 + 1];
495 si->si_cmap.b[i] = stic_cmap[i*3 + 2];
498 si->si_flags |= SI_CMAP_CHANGED | SI_CURSHAPE_CHANGED |
505 stic_clear_screen(struct stic_info *si)
515 pb = (*si->si_pbuf_get)(si);
526 (*si->si_pbuf_post)(si, pb);
533 struct stic_info *si;
536 si = v;
540 *(u_int *)data = si->si_disptype;
547 wsd_fbip->depth = si->si_depth == 8 ? 8 : 32;
553 return (stic_get_cmap(si, (struct wsdisplay_cmap *)data));
556 return (stic_set_cmap(si, (struct wsdisplay_cmap *)data));
561 if ((si->si_blanked == 0) ^ turnoff)
562 si->si_blanked = turnoff;
568 *(u_int *)data = si->si_blanked ?
574 *(struct wsdisplay_curpos *)data = si->si_cursor.cc_pos;
578 stic_set_curpos(si, (struct wsdisplay_curpos *)data);
587 si, (struct wsdisplay_cursor *)data));
590 return (stic_set_cursor(si, (struct wsdisplay_cursor *)data));
593 si->si_dispmode = *(int *)data;
594 if (si->si_dispmode == WSDISPLAYIO_MODE_EMUL) {
595 (*si->si_ioctl)(si, STICIO_STOPQ, NULL, flag, l);
596 stic_setup_vdac(si);
598 stic_flush(si);
600 stic_clear_screen(si);
601 stic_do_switch(si->si_curscreen);
606 stic_reset(si);
610 if (si->si_ioctl != NULL)
611 return ((*si->si_ioctl)(si, cmd, data, flag, l));
617 stic_setup_backing(struct stic_info *si, struct stic_screen *ss)
621 size = si->si_consw * si->si_consh * sizeof(*ss->ss_backing);
629 struct stic_info *si;
632 si = (struct stic_info *)v;
639 stic_setup_backing(si, ss);
641 ss->ss_si = si;
674 struct stic_info *si;
676 si = (struct stic_info *)v;
677 if (si->si_switchcbarg != NULL)
679 si->si_switchcb = cb;
680 si->si_switchcbarg = cbarg;
683 callout_reset(&si->si_switch_callout, 0, stic_do_switch,
696 struct stic_info *si;
701 si = ss->ss_si;
709 if (si->si_curscreen != NULL)
710 si->si_curscreen->ss_flags ^= SS_ACTIVE;
711 si->si_curscreen = ss;
720 nr = si->si_consh;
723 nc = si->si_consw;
740 si->si_cursor.cc_pos.x = ss->ss_curx;
741 si->si_cursor.cc_pos.y = ss->ss_cury;
742 stic_set_hwcurpos(si);
743 si->si_flags |= SI_CURENB_CHANGED;
749 if (si->si_disptype == WSDISPLAY_TYPE_PXG)
750 stic_flush(si);
753 if (si->si_switchcbarg != NULL) {
754 cookie = si->si_switchcbarg;
755 si->si_switchcbarg = NULL;
756 (*si->si_switchcb)(cookie, 0, 0);
784 struct stic_info *si;
791 si = ss->ss_si;
794 p = ss->ss_backing + row * si->si_consw + col;
801 col = (col * si->si_fontw) << 19;
802 num = (num * si->si_fontw) << 19;
803 row = row * si->si_fonth;
805 linewidth = (si->si_fonth << 2) - 1;
808 pb = (*si->si_pbuf_get)(si);
819 (*si->si_pbuf_post)(si, pb);
825 struct stic_info *si;
831 si = ss->ss_si;
834 pb = (uint32_t *)(ss->ss_backing + row * si->si_consw);
835 for (i = si->si_consw * num; i > 0; i -= 2)
841 row *= si->si_fonth;
842 num *= si->si_fonth;
847 pb = (*si->si_pbuf_get)(si);
858 (*si->si_pbuf_post)(si, pb);
864 struct stic_info *si;
870 si = ss->ss_si;
873 bcopy(ss->ss_backing + src * si->si_consw,
874 ss->ss_backing + dst * si->si_consw,
875 si->si_consw * sizeof(*ss->ss_backing) * height);
893 src = (src * si->si_fonth + adj) << 3;
894 dst = (dst * si->si_fonth + adj) << 3;
895 height *= si->si_fonth;
901 pbs = (*si->si_pbuf_get)(si);
917 (*si->si_pbuf_post)(si, pbs);
924 struct stic_info *si;
930 si = ss->ss_si;
933 bcopy(ss->ss_backing + row * si->si_consw + src,
934 ss->ss_backing + row * si->si_consw + dst,
949 row = (row * si->si_fonth) << 3;
950 num = (num * si->si_fontw) << 3;
951 src = row | ((src * si->si_fontw) << 19);
952 dst = row | ((dst * si->si_fontw) << 19);
953 height = si->si_fonth;
955 pbs = (*si->si_pbuf_get)(si);
970 (*si->si_pbuf_post)(si, pbs);
978 struct stic_info *si;
984 si = ss->ss_si;
993 ss->ss_backing[r * si->si_consw + c] =
998 font = si->si_font;
999 pb = (*si->si_pbuf_get)(si);
1024 xya = XYMASKADDR(si->si_stampw, si->si_stamphm, c, r, 0, 0);
1090 (*si->si_pbuf_post)(si, pb);
1096 struct stic_info *si;
1098 si = ((struct stic_screen *)cookie)->ss_si;
1100 if (c < si->si_font->firstchar || c == ' ') {
1105 if (c - si->si_font->firstchar >= si->si_font->numchars) {
1118 struct stic_info *si;
1122 si = ss->ss_si;
1124 ss->ss_curx = col * si->si_fontw;
1125 ss->ss_cury = row * si->si_fonth;
1135 si->si_cursor.cc_pos.x = ss->ss_curx;
1136 si->si_cursor.cc_pos.y = ss->ss_cury;
1137 si->si_flags |= SI_CURENB_CHANGED;
1138 stic_set_hwcurpos(si);
1144 if (si->si_disptype == WSDISPLAY_TYPE_PXG)
1145 stic_flush(si);
1152 stic_flush(struct stic_info *si)
1157 if ((si->si_flags & SI_ALL_CHANGED) == 0)
1160 vdac = si->si_vdac;
1161 v = si->si_flags;
1162 si->si_flags &= ~SI_ALL_CHANGED;
1166 if ((si->si_curscreen->ss_flags & SS_CURENB) != 0)
1176 cp = si->si_cursor.cc_color;
1192 ip = (uint8_t *)si->si_cursor.cc_image;
1193 mp = (uint8_t *)si->si_cursor.cc_mask;
1216 cm = &si->si_cmap;
1232 stic_get_cmap(struct stic_info *si, struct wsdisplay_cmap *p)
1240 error = copyout(&si->si_cmap.r[index], p->red, count);
1243 error = copyout(&si->si_cmap.g[index], p->green, count);
1246 error = copyout(&si->si_cmap.b[index], p->blue, count);
1251 stic_set_cmap(struct stic_info *si, struct wsdisplay_cmap *p)
1274 memcpy(&si->si_cmap.r[index], &cmap.r[index], count);
1275 memcpy(&si->si_cmap.g[index], &cmap.g[index], count);
1276 memcpy(&si->si_cmap.b[index], &cmap.b[index], count);
1277 si->si_flags |= SI_CMAP_CHANGED;
1284 if (si->si_disptype == WSDISPLAY_TYPE_PXG)
1285 stic_flush(si);
1291 stic_set_cursor(struct stic_info *si, struct wsdisplay_cursor *p)
1293 #define cc (&si->si_cursor)
1300 ss = si->si_curscreen;
1331 stic_set_curpos(si, &p->pos);
1340 si->si_flags |= SI_CURENB_CHANGED;
1346 si->si_flags |= SI_CURCMAP_CHANGED;
1353 si->si_flags |= SI_CURSHAPE_CHANGED;
1361 if (si->si_disptype == WSDISPLAY_TYPE_PXG)
1362 stic_flush(si);
1369 stic_get_cursor(struct stic_info *si, struct wsdisplay_cursor *p)
1377 stic_set_curpos(struct stic_info *si, struct wsdisplay_curpos *curpos)
1393 si->si_cursor.cc_pos.x = x;
1394 si->si_cursor.cc_pos.y = y;
1395 stic_set_hwcurpos(si);
1399 stic_set_hwcurpos(struct stic_info *si)
1404 vdac = si->si_vdac;
1406 x = si->si_cursor.cc_pos.x - si->si_cursor.cc_hot.x;
1407 y = si->si_cursor.cc_pos.y - si->si_cursor.cc_hot.y;
1428 struct stic_info *si;
1437 if ((si = stic_info[minor(dev)]) == NULL)
1441 if ((si->si_flags & SI_DVOPEN) != 0) {
1445 si->si_flags |= SI_DVOPEN;
1454 struct stic_info *si;
1457 si = stic_info[minor(dev)];
1459 si->si_flags &= ~SI_DVOPEN;
1468 struct stic_info *si;
1472 si = stic_info[minor(dev)];
1475 if (si->si_dispmode != WSDISPLAYIO_MODE_MAPPED)
1482 pa = STIC_KSEG_TO_PHYS(si->si_stic);
1488 pa = STIC_KSEG_TO_PHYS(si->si_slotbase);
1493 if (offset < si->si_buf_size)
1494 return (machine_btop(si->si_buf_phys + offset));