Lines Matching refs:scp
169 struct genfb_private *scp;
175 scp = sc->sc_private = kmem_zalloc(sizeof(*sc->sc_private), KM_SLEEP);
208 scp->sc_shadowfb = NULL;
210 &scp->sc_enable_shadowfb))
212 scp->sc_enable_shadowfb = true;
214 scp->sc_enable_shadowfb = false;
230 scp->sc_devcmap = NULL;
233 scp->sc_devcmap = (uint32_t *)(uintptr_t)devcmap;
237 scp->sc_cmcb = NULL;
240 scp->sc_cmcb = (void *)(vaddr_t)cmap_cb;
251 scp->sc_modecb = NULL;
254 scp->sc_modecb = (void *)(vaddr_t)mode_cb;
258 scp->sc_backlight = NULL;
261 scp->sc_backlight = (void *)(vaddr_t)bl_cb;
268 scp->sc_brightness = NULL;
271 scp->sc_brightness = (void *)(vaddr_t)br_cb;
275 scp->sc_brightness->gpc_upd_parameter != NULL) {
296 struct genfb_private *scp = sc->sc_private;
309 KASSERTMSG(scp != NULL, "missing genfb_init");
316 if (prop_dictionary_get_bool(dict, "clear-screen", &scp->sc_want_clear)
318 scp->sc_want_clear = true;
332 scp->sc_defaultscreen_descr = (struct wsscreen_descr){
341 scp->sc_screens[0] = &scp->sc_defaultscreen_descr;
342 scp->sc_screenlist = (struct wsscreen_list){1, scp->sc_screens};
343 memcpy(&scp->sc_ops, ops, sizeof(struct genfb_ops));
344 scp->sc_mode = WSDISPLAYIO_MODE_EMUL;
345 if (scp->sc_modecb != NULL)
346 scp->sc_modecb->gmc_setmode(sc, scp->sc_mode);
348 scp->sc_accessops.ioctl = genfb_ioctl;
349 scp->sc_accessops.mmap = genfb_mmap;
350 scp->sc_accessops.pollc = genfb_pollc;
352 if (scp->sc_enable_shadowfb) {
353 scp->sc_shadowfb = kmem_alloc(sc->sc_fbsize, KM_SLEEP);
354 if (scp->sc_want_clear == false) {
355 memcpy(scp->sc_shadowfb, sc->sc_fbaddr, sc->sc_fbsize);
362 vcons_init(&sc->vd, sc, &scp->sc_defaultscreen_descr,
363 &scp->sc_accessops);
369 ri = &scp->sc_console_screen.scr_ri;
371 vcons_init_screen(&sc->vd, &scp->sc_console_screen, 1,
373 scp->sc_console_screen.scr_flags |= VCONS_SCREEN_IS_STATIC;
386 vcons_redraw_screen(&scp->sc_console_screen);
388 scp->sc_defaultscreen_descr.textops = &ri->ri_ops;
389 scp->sc_defaultscreen_descr.capabilities = ri->ri_caps;
390 scp->sc_defaultscreen_descr.nrows = ri->ri_rows;
391 scp->sc_defaultscreen_descr.ncols = ri->ri_cols;
395 scp->sc_want_clear = 1;
399 wsdisplay_cnattach(&scp->sc_defaultscreen_descr, ri, 0, crow,
403 if (scp->sc_want_clear)
412 &scp->sc_cmap_red[i],
413 &scp->sc_cmap_green[i],
414 &scp->sc_cmap_blue[i]);
416 scp->sc_cmap_red[i] = rasops_cmap[j];
417 scp->sc_cmap_green[i] = rasops_cmap[j + 1];
418 scp->sc_cmap_blue[i] = rasops_cmap[j + 2];
424 scp->sc_splash.si_depth = sc->sc_depth;
425 scp->sc_splash.si_bits = scp->sc_console_screen.scr_ri.ri_origbits;
426 scp->sc_splash.si_hwbits = sc->sc_fbaddr;
427 scp->sc_splash.si_width = sc->sc_width;
428 scp->sc_splash.si_height = sc->sc_height;
429 scp->sc_splash.si_stride = sc->sc_stride;
430 scp->sc_splash.si_fillrect = NULL;
432 error = splash_render(&scp->sc_splash,
435 SCREEN_ENABLE_DRAWING(&scp->sc_console_screen);
437 vcons_replay_msgbuf(&scp->sc_console_screen);
443 vcons_replay_msgbuf(&scp->sc_console_screen);
450 aa.scrdata = &scp->sc_screenlist;
451 aa.accessops = &scp->sc_accessops;
456 SCREEN_DISABLE_DRAWING(&scp->sc_console_screen);
471 struct genfb_private *scp = sc->sc_private;
503 if (scp->sc_ops.genfb_ioctl) {
504 error = scp->sc_ops.genfb_ioctl(sc, vs,
510 if (new_mode != scp->sc_mode) {
511 scp->sc_mode = new_mode;
512 if (scp->sc_modecb != NULL) {
513 scp->sc_modecb->gmc_setmode(sc, scp->sc_mode);
525 SCREEN_DISABLE_DRAWING(&scp->sc_console_screen);
526 splash_render(&scp->sc_splash,
529 SCREEN_ENABLE_DRAWING(&scp->sc_console_screen);
541 if (scp->sc_brightness == NULL)
545 return scp->sc_brightness->gpc_get_parameter(
546 scp->sc_brightness->gpc_cookie,
549 if (scp->sc_backlight == NULL)
553 return scp->sc_backlight->gpc_get_parameter(
554 scp->sc_backlight->gpc_cookie,
563 if (scp->sc_brightness == NULL)
570 return scp->sc_brightness->gpc_set_parameter(
571 scp->sc_brightness->gpc_cookie, val);
573 if (scp->sc_backlight == NULL)
580 return scp->sc_backlight->gpc_set_parameter(
581 scp->sc_backlight->gpc_cookie, val);
586 if (scp->sc_ops.genfb_ioctl)
587 ret = scp->sc_ops.genfb_ioctl(sc, vs, cmd, data, flag, l);
616 struct genfb_private *scp = sc->sc_private;
618 if (scp->sc_ops.genfb_mmap)
619 return scp->sc_ops.genfb_mmap(sc, vs, offset, prot);
644 struct genfb_private *scp = sc->sc_private;
654 if (scp->sc_want_clear)
659 if (scp->sc_shadowfb != NULL) {
661 ri->ri_bits = (char *)scp->sc_shadowfb;
667 if (existing && scp->sc_want_clear)
716 if (scp->sc_cmcb != NULL)
736 if (scp->sc_devcmap != NULL) {
737 memcpy(ri->ri_devcmap, scp->sc_devcmap, sizeof(ri->ri_devcmap));
742 scp->sc_putchar = ri->ri_ops.putchar;
746 if (scr == &scp->sc_console_screen && !DISABLESPLASH)
747 SCREEN_DISABLE_DRAWING(&scp->sc_console_screen);
795 struct genfb_private *scp = sc->sc_private;
818 memcpy(&scp->sc_cmap_red[index], &rbuf[index], count);
819 memcpy(&scp->sc_cmap_green[index], &gbuf[index], count);
820 memcpy(&scp->sc_cmap_blue[index], &bbuf[index], count);
822 r = &scp->sc_cmap_red[index];
823 g = &scp->sc_cmap_green[index];
824 b = &scp->sc_cmap_blue[index];
837 struct genfb_private *scp = sc->sc_private;
845 error = copyout(&scp->sc_cmap_red[index], cm->red, count);
848 error = copyout(&scp->sc_cmap_green[index], cm->green, count);
851 error = copyout(&scp->sc_cmap_blue[index], cm->blue, count);
861 struct genfb_private *scp = sc->sc_private;
866 genfb_putpalreg(sc, i, scp->sc_cmap_red[i],
867 scp->sc_cmap_green[i], scp->sc_cmap_blue[i]);
875 struct genfb_private *scp = sc->sc_private;
887 scp->sc_cmap_red[i] = tmp;
891 scp->sc_cmap_green[i] = tmp;
896 scp->sc_cmap_blue[i] = tmp;
898 genfb_putpalreg(sc, i, scp->sc_cmap_red[i],
899 scp->sc_cmap_green[i],
900 scp->sc_cmap_blue[i]);
906 scp->sc_cmap_red[i] = rasops_cmap[j];
907 scp->sc_cmap_green[i] = rasops_cmap[j + 1];
908 scp->sc_cmap_blue[i] = rasops_cmap[j + 2];
918 struct genfb_private *scp = sc->sc_private;
920 if (scp->sc_cmcb) {
921 scp->sc_cmcb->gcc_set_mapreg(scp->sc_cmcb->gcc_cookie,
980 struct genfb_private *scp = sc->sc_private;
982 KASSERT(scp->sc_brightness != NULL);
983 KASSERT(scp->sc_brightness->gpc_upd_parameter != NULL);
985 (void)scp->sc_brightness->gpc_upd_parameter(
986 scp->sc_brightness->gpc_cookie, GENFB_BRIGHTNESS_STEP);
993 struct genfb_private *scp = sc->sc_private;
995 KASSERT(scp->sc_brightness != NULL);
996 KASSERT(scp->sc_brightness->gpc_upd_parameter != NULL);
998 (void)scp->sc_brightness->gpc_upd_parameter(
999 scp->sc_brightness->gpc_cookie, -GENFB_BRIGHTNESS_STEP);
1006 struct genfb_private *scp = sc->sc_private;
1008 if (scp == NULL)
1011 if (scp->sc_console_screen.scr_vd) {
1012 SCREEN_ENABLE_DRAWING(&scp->sc_console_screen);
1013 vcons_hard_switch(&scp->sc_console_screen);
1015 if (scp->sc_ops.genfb_enable_polling)
1016 (*scp->sc_ops.genfb_enable_polling)(sc);
1024 struct genfb_private *scp = sc->sc_private;
1026 if (scp == NULL)
1029 if (scp->sc_console_screen.scr_vd) {
1030 if (scp->sc_ops.genfb_disable_polling)
1031 (*scp->sc_ops.genfb_disable_polling)(sc);
1051 struct genfb_private *scp = sc->sc_private;
1052 struct rasops_info *ri = &scp->sc_console_screen.scr_ri,
1053 *cri = &scp->sc_cache_ri;
1057 scp->sc_cache = kmem_alloc(GLYPHCACHESIZE, KM_SLEEP);
1065 cri->ri_ops.putchar = scp->sc_putchar;
1068 cri->ri_bits = scp->sc_cache;
1070 cri->ri_origbits = scp->sc_cache;
1081 scp->sc_nbuckets = uimin(256, cri->ri_rows / 223);
1082 scp->sc_buckets = kmem_alloc(sizeof(gc_bucket) * scp->sc_nbuckets,
1084 printf("buckets: %d\n", scp->sc_nbuckets);
1085 for (i = 0; i < scp->sc_nbuckets; i++) {
1086 b = &scp->sc_buckets[i];
1097 scp->sc_attrmap[i] = -1;
1105 scp->sc_attrmap[idx] = 0;
1106 scp->sc_buckets[0].gb_index = idx;
1118 struct genfb_private *scp = sc->sc_private;
1129 bi = scp->sc_attrmap[idx];
1133 while ((bi < scp->sc_nbuckets) &&
1134 (scp->sc_buckets[bi].gb_index != -1)) {
1137 if (bi < scp->sc_nbuckets) {
1139 scp->sc_attrmap[idx] = bi;
1140 b = &scp->sc_buckets[bi];
1153 for (i = 1; i < scp->sc_nbuckets; i++) {
1154 if (scp->sc_buckets[i].gb_lastread < moo) {
1156 moo = scp->sc_buckets[i].gb_lastread;
1161 b = &scp->sc_buckets[oldest];
1162 scp->sc_attrmap[b->gb_index] = -1;
1165 scp->sc_attrmap[idx] = oldest;
1174 b = &scp->sc_buckets[bi];
1187 scp->sc_putchar(&scp->sc_cache_ri, cell, 0, c, attr);
1191 src = scp->sc_cache + cell * scp->sc_cache_ri.ri_yscale;
1199 src = scp->sc_cache + cell * scp->sc_cache_ri.ri_yscale;
1211 scp->sc_putchar(cookie, row, col, c, attr);