Lines Matching refs:dc
143 igsfb_cnattach_subr(struct igsfb_devconfig *dc) in igsfb_cnattach_subr() argument
148 KASSERT(dc == &igsfb_console_dc); in igsfb_cnattach_subr()
150 igsfb_init_video(dc); in igsfb_cnattach_subr()
151 dc->dc_vd.active = NULL; in igsfb_cnattach_subr()
152 igsfb_init_wsdisplay(dc, &dc->dc_console, 1, &defattr); in igsfb_cnattach_subr()
154 ri = &dc->dc_console.scr_ri; in igsfb_cnattach_subr()
155 ri->ri_hw = &dc->dc_console; in igsfb_cnattach_subr()
156 dc->dc_console.scr_cookie = dc; in igsfb_cnattach_subr()
179 struct igsfb_devconfig *dc = sc->sc_dc; in igsfb_attach_subr() local
184 KASSERT(dc != NULL); in igsfb_attach_subr()
187 igsfb_init_video(dc); in igsfb_attach_subr()
190 vcons_init(&dc->dc_vd, dc, &igsfb_stdscreen, &igsfb_accessops); in igsfb_attach_subr()
191 dc->dc_vd.init_screen = igsfb_init_wsdisplay; in igsfb_attach_subr()
193 vcons_init_screen(&dc->dc_vd, &dc->dc_console, 1, &defattr); in igsfb_attach_subr()
194 dc->dc_console.scr_flags |= VCONS_SCREEN_IS_STATIC; in igsfb_attach_subr()
198 (uint32_t)(dc->dc_vmemsz >> 20), in igsfb_attach_subr()
199 (dc->dc_hwflags & IGSFB_HW_BSWAP) in igsfb_attach_subr()
200 ? (dc->dc_hwflags & IGSFB_HW_BE_SELECT) in igsfb_attach_subr()
203 dc->dc_width, dc->dc_height, dc->dc_depth); in igsfb_attach_subr()
205 dc->dc_maxdepth); in igsfb_attach_subr()
206 ri = &dc->dc_console.scr_ri; in igsfb_attach_subr()
210 vcons_replay_msgbuf(&dc->dc_console); in igsfb_attach_subr()
216 waa.accesscookie = &dc->dc_vd; in igsfb_attach_subr()
223 igsfb_init_video(struct igsfb_devconfig *dc) in igsfb_init_video() argument
234 busctl = igs_ext_read(dc->dc_iot, dc->dc_ioh, IGS_EXT_BUS_CTL); in igsfb_init_video()
236 dc->dc_vmemsz = 4; in igsfb_init_video()
238 dc->dc_vmemsz = 2; in igsfb_init_video()
240 dc->dc_vmemsz = 1; in igsfb_init_video()
241 dc->dc_vmemsz <<= 20; /* megabytes -> bytes */ in igsfb_init_video()
247 if (bus_space_map(dc->dc_memt, in igsfb_init_video()
248 dc->dc_memaddr + dc->dc_vmemsz - sizeof(uint32_t), in igsfb_init_video()
250 dc->dc_memflags | BUS_SPACE_MAP_LINEAR, in igsfb_init_video()
257 p = bus_space_vaddr(dc->dc_memt, tmph); in igsfb_init_video()
268 bus_space_unmap(dc->dc_memt, tmph, sizeof(uint32_t)); in igsfb_init_video()
273 fbaddr = dc->dc_memaddr; in igsfb_init_video()
275 dc->dc_hwflags |= IGSFB_HW_BSWAP; in igsfb_init_video()
276 if (dc->dc_id >= 0x2000) { in igsfb_init_video()
277 dc->dc_hwflags |= IGSFB_HW_BE_SELECT; in igsfb_init_video()
285 if (dc->dc_id >= 0x2000) { /* XXX */ in igsfb_init_video()
286 if (bus_space_map(dc->dc_iot, in igsfb_init_video()
287 dc->dc_iobase + IGS_COP_BASE_B, IGS_COP_SIZE, in igsfb_init_video()
288 dc->dc_ioflags, in igsfb_init_video()
289 &dc->dc_coph) != 0) in igsfb_init_video()
296 igsfb_hw_setup(dc); in igsfb_init_video()
301 dc->dc_fbsz = dc->dc_stride * dc->dc_height; in igsfb_init_video()
302 if (bus_space_map(dc->dc_memt, fbaddr, dc->dc_fbsz, in igsfb_init_video()
303 dc->dc_memflags | BUS_SPACE_MAP_LINEAR, in igsfb_init_video()
304 &dc->dc_fbh) != 0) in igsfb_init_video()
306 if (dc->dc_id >= 0x2000) { /* XXX */ in igsfb_init_video()
307 bus_space_unmap(dc->dc_iot, dc->dc_coph, IGS_COP_SIZE); in igsfb_init_video()
309 bus_space_unmap(dc->dc_iot, dc->dc_ioh, IGS_REG_SIZE); in igsfb_init_video()
314 igsfb_init_cmap(dc); in igsfb_init_video()
319 croffset = dc->dc_vmemsz - IGS_CURSOR_DATA_SIZE; in igsfb_init_video()
321 if (bus_space_map(dc->dc_memt, craddr, IGS_CURSOR_DATA_SIZE, in igsfb_init_video()
322 dc->dc_memflags | BUS_SPACE_MAP_LINEAR, in igsfb_init_video()
323 &dc->dc_crh) != 0) in igsfb_init_video()
325 if (dc->dc_id >= 0x2000) { /* XXX */ in igsfb_init_video()
326 bus_space_unmap(dc->dc_iot, dc->dc_coph, IGS_COP_SIZE); in igsfb_init_video()
328 bus_space_unmap(dc->dc_iot, dc->dc_ioh, IGS_REG_SIZE); in igsfb_init_video()
329 bus_space_unmap(dc->dc_memt, dc->dc_fbh, dc->dc_fbsz); in igsfb_init_video()
339 igs_ext_write(dc->dc_iot, dc->dc_ioh, in igsfb_init_video()
341 igs_ext_write(dc->dc_iot, dc->dc_ioh, in igsfb_init_video()
345 igsfb_init_bit_table(dc); in igsfb_init_video()
348 memset(&dc->dc_cursor, 0, sizeof(struct igs_hwcursor)); in igsfb_init_video()
349 va = bus_space_vaddr(dc->dc_memt, dc->dc_crh); in igsfb_init_video()
352 curctl = igs_ext_read(dc->dc_iot, dc->dc_ioh, IGS_EXT_SPRITE_CTL); in igsfb_init_video()
355 igs_ext_write(dc->dc_iot, dc->dc_ioh, IGS_EXT_SPRITE_CTL, curctl); in igsfb_init_video()
356 dc->dc_curenb = 0; in igsfb_init_video()
361 if (dc->dc_id >= 0x2000) { /* XXX */ in igsfb_init_video()
362 bus_space_write_2(dc->dc_iot, dc->dc_coph, in igsfb_init_video()
364 dc->dc_width - 1); in igsfb_init_video()
365 bus_space_write_2(dc->dc_iot, dc->dc_coph, in igsfb_init_video()
367 dc->dc_width - 1); in igsfb_init_video()
369 bus_space_write_1(dc->dc_iot, dc->dc_coph, in igsfb_init_video()
371 howmany(dc->dc_depth, NBBY) - 1); in igsfb_init_video()
375 dc->dc_blanked = 0; in igsfb_init_video()
376 igsfb_blank_screen(dc, dc->dc_blanked); in igsfb_init_video()
383 igsfb_init_cmap(struct igsfb_devconfig *dc) in igsfb_init_cmap() argument
385 bus_space_tag_t iot = dc->dc_iot; in igsfb_init_cmap()
386 bus_space_handle_t ioh = dc->dc_ioh; in igsfb_init_cmap()
394 dc->dc_cmap.r[i] = p[0]; in igsfb_init_cmap()
395 dc->dc_cmap.g[i] = p[1]; in igsfb_init_cmap()
396 dc->dc_cmap.b[i] = p[2]; in igsfb_init_cmap()
400 igsfb_update_cmap(dc, 0, IGS_CMAP_SIZE); in igsfb_init_cmap()
414 struct igsfb_devconfig *dc = cookie; in igsfb_init_wsdisplay() local
418 if (scr == &dc->dc_console) { in igsfb_init_wsdisplay()
429 if (IGSFB_HW_SOFT_BSWAP(dc)) in igsfb_init_wsdisplay()
432 ri->ri_depth = dc->dc_depth; in igsfb_init_wsdisplay()
433 ri->ri_width = dc->dc_width; in igsfb_init_wsdisplay()
434 ri->ri_height = dc->dc_height; in igsfb_init_wsdisplay()
435 ri->ri_stride = dc->dc_stride; in igsfb_init_wsdisplay()
436 ri->ri_bits = bus_space_vaddr(dc->dc_memt, dc->dc_fbh); in igsfb_init_wsdisplay()
476 igsfb_make_text_cursor(dc, scr); in igsfb_init_wsdisplay()
479 dc->dc_hwflags |= IGSFB_HW_TEXT_CURSOR; in igsfb_init_wsdisplay()
482 igsfb_update_cursor(dc, WSDISPLAY_CURSOR_DOSHAPE); in igsfb_init_wsdisplay()
487 if (dc->dc_id >= 0x2000) { /* XXX */ in igsfb_init_wsdisplay()
495 dc->dc_ri_putchar = ri->ri_ops.putchar; in igsfb_init_wsdisplay()
510 igsfb_make_text_cursor(struct igsfb_devconfig *dc, struct vcons_screen *scr) in igsfb_make_text_cursor() argument
535 dc->dc_cursor.cc_size.x = f->fontwidth; in igsfb_make_text_cursor()
536 dc->dc_cursor.cc_size.y = f->fontheight; in igsfb_make_text_cursor()
538 dc->dc_cursor.cc_hot.x = 0; in igsfb_make_text_cursor()
539 dc->dc_cursor.cc_hot.y = 0; in igsfb_make_text_cursor()
542 memset(dc->dc_cursor.cc_sprite, 0xaa, IGS_CURSOR_DATA_SIZE); in igsfb_make_text_cursor()
545 memcpy(&dc->dc_cursor.cc_sprite[i * 8], in igsfb_make_text_cursor()
573 igsfb_init_bit_table(struct igsfb_devconfig *dc) in igsfb_init_bit_table() argument
575 uint16_t *expand = dc->dc_bexpand; in igsfb_init_bit_table()
594 struct igsfb_devconfig *dc = vd->cookie; in igsfb_mmap() local
596 if (offset < dc->dc_memsz && offset >= 0) in igsfb_mmap()
597 return bus_space_mmap(dc->dc_memt, dc->dc_memaddr, offset, in igsfb_mmap()
598 prot, dc->dc_memflags | BUS_SPACE_MAP_LINEAR); in igsfb_mmap()
599 if (dc->dc_mmap) in igsfb_mmap()
600 return dc->dc_mmap(v, vs, offset, prot); in igsfb_mmap()
613 struct igsfb_devconfig *dc = vd->cookie; in igsfb_ioctl() local
618 cursor_busy = !dc->dc_mapped in igsfb_ioctl()
619 && (dc->dc_hwflags & IGSFB_HW_TEXT_CURSOR); in igsfb_ioctl()
629 wsd_fbip->height = dc->dc_height; in igsfb_ioctl()
630 wsd_fbip->width = dc->dc_width; in igsfb_ioctl()
631 wsd_fbip->depth = dc->dc_maxdepth; in igsfb_ioctl()
637 *(int *)data = dc->dc_width * howmany(dc->dc_maxdepth, NBBY); in igsfb_ioctl()
643 dc->dc_mapped = 1; in igsfb_ioctl()
645 if (dc->dc_hwflags & IGSFB_HW_TEXT_CURSOR) { in igsfb_ioctl()
646 dc->dc_curenb = 0; in igsfb_ioctl()
647 igsfb_update_cursor(dc, in igsfb_ioctl()
650 if ((dc->dc_mode != NULL) && (dc->dc_maxdepth != 8)) in igsfb_ioctl()
651 igsfb_set_mode(dc, dc->dc_mode, in igsfb_ioctl()
652 dc->dc_maxdepth); in igsfb_ioctl()
654 dc->dc_mapped = 0; in igsfb_ioctl()
655 if ((dc->dc_mode != NULL) && (dc->dc_maxdepth != 8)) in igsfb_ioctl()
656 igsfb_set_mode(dc, dc->dc_mode, 8); in igsfb_ioctl()
657 igsfb_init_cmap(dc); in igsfb_ioctl()
659 if (dc->dc_hwflags & IGSFB_HW_TEXT_CURSOR) { in igsfb_ioctl()
660 igsfb_make_text_cursor(dc, dc->dc_vd.active); in igsfb_ioctl()
661 dc->dc_curenb = 0; in igsfb_ioctl()
662 igsfb_update_cursor(dc, in igsfb_ioctl()
671 *(u_int *)data = dc->dc_blanked ? in igsfb_ioctl()
677 if (dc->dc_blanked != turnoff) { in igsfb_ioctl()
678 dc->dc_blanked = turnoff; in igsfb_ioctl()
679 igsfb_blank_screen(dc, dc->dc_blanked); in igsfb_ioctl()
684 return igsfb_get_cmap(dc, (struct wsdisplay_cmap *)data); in igsfb_ioctl()
687 return igsfb_set_cmap(dc, (struct wsdisplay_cmap *)data); in igsfb_ioctl()
697 *(struct wsdisplay_curpos *)data = dc->dc_cursor.cc_pos; in igsfb_ioctl()
703 igsfb_set_curpos(dc, (struct wsdisplay_curpos *)data); in igsfb_ioctl()
709 return igsfb_get_cursor(dc, (struct wsdisplay_cursor *)data); in igsfb_ioctl()
714 return igsfb_set_cursor(dc, (struct wsdisplay_cursor *)data); in igsfb_ioctl()
725 igsfb_blank_screen(struct igsfb_devconfig *dc, int blank) in igsfb_blank_screen() argument
728 igs_ext_write(dc->dc_iot, dc->dc_ioh, in igsfb_blank_screen()
740 igsfb_get_cmap(struct igsfb_devconfig *dc, struct wsdisplay_cmap *p) in igsfb_get_cmap() argument
751 err = copyout(&dc->dc_cmap.r[index], p->red, count); in igsfb_get_cmap()
754 err = copyout(&dc->dc_cmap.g[index], p->green, count); in igsfb_get_cmap()
757 err = copyout(&dc->dc_cmap.b[index], p->blue, count); in igsfb_get_cmap()
770 igsfb_set_cmap(struct igsfb_devconfig *dc, const struct wsdisplay_cmap *p) in igsfb_set_cmap() argument
792 memcpy(&dc->dc_cmap.r[index], &r[index], count); in igsfb_set_cmap()
793 memcpy(&dc->dc_cmap.g[index], &g[index], count); in igsfb_set_cmap()
794 memcpy(&dc->dc_cmap.b[index], &b[index], count); in igsfb_set_cmap()
797 igsfb_update_cmap(dc, index, count); in igsfb_set_cmap()
806 igsfb_update_cmap(struct igsfb_devconfig *dc, u_int index, u_int count) in igsfb_update_cmap() argument
820 t = dc->dc_iot; in igsfb_update_cmap()
821 h = dc->dc_ioh; in igsfb_update_cmap()
827 bus_space_write_1(t, h, IGS_DAC_PEL_DATA, dc->dc_cmap.r[i]); in igsfb_update_cmap()
828 bus_space_write_1(t, h, IGS_DAC_PEL_DATA, dc->dc_cmap.g[i]); in igsfb_update_cmap()
829 bus_space_write_1(t, h, IGS_DAC_PEL_DATA, dc->dc_cmap.b[i]); in igsfb_update_cmap()
838 igsfb_set_curpos(struct igsfb_devconfig *dc, in igsfb_set_curpos() argument
841 struct rasops_info *ri = &dc->dc_vd.active->scr_ri; in igsfb_set_curpos()
849 dc->dc_cursor.cc_pos.x = x; in igsfb_set_curpos()
850 dc->dc_cursor.cc_pos.y = y; in igsfb_set_curpos()
853 igsfb_update_curpos(dc); in igsfb_set_curpos()
858 igsfb_update_curpos(struct igsfb_devconfig *dc) in igsfb_update_curpos() argument
865 x = dc->dc_cursor.cc_pos.x - dc->dc_cursor.cc_hot.x; in igsfb_update_curpos()
872 y = dc->dc_cursor.cc_pos.y - dc->dc_cursor.cc_hot.y; in igsfb_update_curpos()
878 t = dc->dc_iot; in igsfb_update_curpos()
879 h = dc->dc_ioh; in igsfb_update_curpos()
895 igsfb_get_cursor(struct igsfb_devconfig *dc, struct wsdisplay_cursor *p) in igsfb_get_cursor() argument
907 igsfb_set_cursor(struct igsfb_devconfig *dc, const struct wsdisplay_cursor *p) in igsfb_set_cursor() argument
915 cc = &dc->dc_cursor; in igsfb_set_cursor()
955 struct rasops_info *ri = &dc->dc_vd.active->scr_ri; in igsfb_set_cursor()
984 dc->dc_curenb = p->enable; in igsfb_set_cursor()
1014 igsfb_convert_cursor_data(dc, iwidth, p->size.y); in igsfb_set_cursor()
1018 igsfb_update_cursor(dc, v); in igsfb_set_cursor()
1028 igsfb_convert_cursor_data(struct igsfb_devconfig *dc, in igsfb_convert_cursor_data() argument
1031 struct igs_hwcursor *cc = &dc->dc_cursor; in igsfb_convert_cursor_data()
1032 uint16_t *expand = dc->dc_bexpand; in igsfb_convert_cursor_data()
1066 igsfb_update_cursor(struct igsfb_devconfig *dc, u_int which) in igsfb_update_cursor() argument
1068 bus_space_tag_t iot = dc->dc_iot; in igsfb_update_cursor()
1069 bus_space_handle_t ioh = dc->dc_ioh; in igsfb_update_cursor()
1083 uint8_t *dst = bus_space_vaddr(dc->dc_memt, dc->dc_crh); in igsfb_update_cursor()
1091 if (IGSFB_HW_SOFT_BSWAP(dc)) { in igsfb_update_cursor()
1092 uint8_t *src = (uint8_t *)dc->dc_cursor.cc_sprite; in igsfb_update_cursor()
1098 memcpy(dst, dc->dc_cursor.cc_sprite, in igsfb_update_cursor()
1105 igsfb_update_curpos(dc); in igsfb_update_cursor()
1115 p = dc->dc_cursor.cc_color; in igsfb_update_cursor()
1133 && dc->dc_curenb) in igsfb_update_cursor()
1137 && !dc->dc_curenb) in igsfb_update_cursor()
1152 struct igsfb_devconfig *dc = scr->scr_cookie; in igsfb_accel_cursor() local
1153 struct igs_hwcursor *cc = &dc->dc_cursor; in igsfb_accel_cursor()
1172 if (dc->dc_curenb != on) { in igsfb_accel_cursor()
1173 dc->dc_curenb = on; in igsfb_accel_cursor()
1178 igsfb_update_cursor(dc, which); in igsfb_accel_cursor()
1188 igsfb_accel_wait(struct igsfb_devconfig *dc) in igsfb_accel_wait() argument
1190 bus_space_tag_t t = dc->dc_iot; in igsfb_accel_wait()
1191 bus_space_handle_t h = dc->dc_coph; in igsfb_accel_wait()
1196 howmany(dc->dc_depth, NBBY) - 1); in igsfb_accel_wait()
1208 igsfb_accel_copy(struct igsfb_devconfig *dc, uint32_t src, uint32_t dst, in igsfb_accel_copy() argument
1211 bus_space_tag_t t = dc->dc_iot; in igsfb_accel_copy()
1212 bus_space_handle_t h = dc->dc_coph; in igsfb_accel_copy()
1218 toend = dc->dc_vd.active->scr_ri.ri_width * (height - 1) + (width - 1); in igsfb_accel_copy()
1224 igsfb_accel_wait(dc); in igsfb_accel_copy()
1244 igsfb_accel_fill(struct igsfb_devconfig *dc, uint32_t color, uint32_t dst, in igsfb_accel_fill() argument
1247 bus_space_tag_t t = dc->dc_iot; in igsfb_accel_fill()
1248 bus_space_handle_t h = dc->dc_coph; in igsfb_accel_fill()
1250 igsfb_accel_wait(dc); in igsfb_accel_fill()
1273 struct igsfb_devconfig *dc = (struct igsfb_devconfig *)scr->scr_cookie; in igsfb_accel_copyrows() local
1287 igsfb_accel_copy(dc, srp, dsp, width, height); in igsfb_accel_copyrows()
1296 struct igsfb_devconfig *dc = (struct igsfb_devconfig *)scr->scr_cookie; in igsfb_accel_copycols() local
1310 igsfb_accel_copy(dc, srp, dsp, width, height); in igsfb_accel_copycols()
1319 struct igsfb_devconfig *dc = (struct igsfb_devconfig *)scr->scr_cookie; in igsfb_accel_eraserows() local
1340 igsfb_accel_fill(dc, color, dsp, width, height); in igsfb_accel_eraserows()
1349 struct igsfb_devconfig *dc = (struct igsfb_devconfig *)scr->scr_cookie; in igsfb_accel_erasecols() local
1366 igsfb_accel_fill(dc, color, dsp, width, height); in igsfb_accel_erasecols()
1379 struct igsfb_devconfig *dc = (struct igsfb_devconfig *)scr->scr_cookie; in igsfb_accel_putchar() local
1381 igsfb_accel_wait(dc); in igsfb_accel_putchar()
1382 (*dc->dc_ri_putchar)(cookie, row, col, uc, attr); in igsfb_accel_putchar()