Lines Matching refs:adp

76 	video_adapter_t *adp;
83 error = (*sw->probe)(unit, &adp, NULL, flags);
86 bcopy(adp, buf, sizeof(*buf));
100 error = (*sw->probe)(unit, &sc->adp, NULL, flags);
103 return (*sw->init)(unit, sc->adp, flags);
118 return genfbopen(&sc->gensc, sc->adp, flag, mode, td);
124 return genfbclose(&sc->gensc, sc->adp, flag, mode, td);
130 return genfbread(&sc->gensc, sc->adp, uio, flag);
136 return genfbread(&sc->gensc, sc->adp, uio, flag);
143 return genfbioctl(&sc->gensc, sc->adp, cmd, arg, flag, td);
150 return genfbmmap(&sc->gensc, sc->adp, offset, paddr, prot, memattr);
162 #define probe_done(adp) ((adp)->va_flags & V_ADP_PROBED)
163 #define init_done(adp) ((adp)->va_flags & V_ADP_INITIALIZED)
164 #define config_done(adp) ((adp)->va_flags & V_ADP_REGISTERED)
451 static void clear_mode_map(video_adapter_t *adp, u_char *map[], int max,
460 static void fill_adapter_param(int code, video_adapter_t *adp);
462 static int verify_adapter(video_adapter_t *adp);
463 static void update_adapter_info(video_adapter_t *adp, video_info_t *info);
471 static int set_line_length(video_adapter_t *adp, int pixel);
472 static int set_display_start(video_adapter_t *adp, int x, int y);
482 static void set_font_mode(video_adapter_t *adp, u_char *buf);
483 static void set_normal_mode(video_adapter_t *adp, u_char *buf);
488 static void planar_fill(video_adapter_t *adp, int val);
489 static void packed_fill(video_adapter_t *adp, int val);
490 static void direct_fill(video_adapter_t *adp, int val);
492 static void planar_fill_rect(video_adapter_t *adp, int val, int x, int y,
494 static void packed_fill_rect(video_adapter_t *adp, int val, int x, int y,
496 static void direct_fill_rect16(video_adapter_t *adp, int val, int x, int y,
498 static void direct_fill_rect24(video_adapter_t *adp, int val, int x, int y,
500 static void direct_fill_rect32(video_adapter_t *adp, int val, int x, int y,
511 #define prologue(adp, flag, err) \
512 if (!vga_init_done || !((adp)->va_flags & (flag))) \
555 clear_mode_map(video_adapter_t *adp, u_char *map[], int max, int color)
565 if (vga_get_info(adp, i, &info))
755 fill_adapter_param(int code, video_adapter_t *adp)
776 adp[V_ADP_PRIMARY] = adapter_init_value[DCC_MONO];
777 adp[V_ADP_SECONDARY] = adapter_init_value[DCC_CGA80];
779 adp[V_ADP_PRIMARY] = adapter_init_value[dcc[code].primary];
780 adp[V_ADP_SECONDARY] = adapter_init_value[dcc[code].secondary];
786 verify_adapter(video_adapter_t *adp)
794 buf = BIOS_PADDRTOVADDR(adp->va_window);
801 switch (adp->va_type) {
804 outb(adp->va_crtc_addr, 7);
805 if (inb(adp->va_crtc_addr) == 7) {
806 adp->va_type = KD_VGA;
807 adp->va_name = "vga";
808 adp->va_flags |= V_ADP_STATESAVE | V_ADP_PALETTE;
810 adp->va_flags |= V_ADP_STATELOAD | V_ADP_BORDER;
827 adp->va_flags |= V_ADP_COLOR | V_ADP_BORDER;
851 update_adapter_info(video_adapter_t *adp, video_info_t *info)
853 adp->va_flags &= ~V_ADP_COLOR;
854 adp->va_flags |=
856 adp->va_crtc_addr =
857 (adp->va_flags & V_ADP_COLOR) ? COLOR_CRTC : MONO_CRTC;
858 adp->va_window = BIOS_PADDRTOVADDR(info->vi_window);
859 adp->va_window_size = info->vi_window_size;
860 adp->va_window_gran = info->vi_window_gran;
861 adp->va_window_orig = 0;
863 adp->va_buffer = info->vi_buffer;
864 adp->va_buffer_size = info->vi_buffer_size;
866 adp->va_line_width = info->vi_width/2;
870 adp->va_line_width = info->vi_width/8;
873 adp->va_line_width = info->vi_width/4;
876 adp->va_line_width = info->vi_width/2;
880 adp->va_line_width = info->vi_width;
884 adp->va_line_width = info->vi_width;
886 adp->va_disp_start.x = 0;
887 adp->va_disp_start.y = 0;
888 bcopy(info, &adp->va_info, sizeof(adp->va_info));
937 video_adapter_t *adp;
1083 adp = &biosadapter[V_ADP_PRIMARY];
1086 adp = &biosadapter[V_ADP_SECONDARY];
1088 adp = NULL;
1091 if (adp != NULL) {
1092 if (adp->va_type == KD_VGA) {
1093 vga_save_state(adp, &adpstate, sizeof(adpstate));
1095 mode_map[adp->va_initial_mode] = adpstate.regs;
1099 mode_map[adp->va_initial_mode] = adpstate.regs;
1104 mp = get_mode_param(adp->va_initial_mode);
1129 mode_map[adp->va_initial_mode] = adpstate.regs;
1144 mode_map[adp->va_initial_mode] = adpstate.regs;
1152 adp->va_flags |= V_ADP_MODECHANGE;
1155 adp->va_flags |= V_ADP_FONT;
1157 } else if (adp->va_type == KD_EGA) {
1166 mp = get_mode_param(adp->va_initial_mode);
1168 adp->va_flags |= V_ADP_MODECHANGE;
1170 adp->va_flags |= V_ADP_FONT;
1234 set_line_length(video_adapter_t *adp, int pixel)
1241 if ((adp->va_type != KD_VGA) && (adp->va_type != KD_EGA))
1243 mp = get_mode_param(adp->va_mode);
1247 switch (adp->va_info.vi_mem_model) {
1249 ppw = 16/(adp->va_info.vi_depth/adp->va_info.vi_planes);
1267 outb(adp->va_crtc_addr, 0x13);
1268 outb(adp->va_crtc_addr + 1, count);
1269 adp->va_line_width = bpl;
1275 set_display_start(video_adapter_t *adp, int x, int y)
1282 if ((adp->va_type != KD_VGA) && (adp->va_type != KD_EGA))
1284 if (adp->va_info.vi_flags & V_INFO_GRAPHICS) {
1285 ppb = 8/(adp->va_info.vi_depth/adp->va_info.vi_planes);
1286 off = y*adp->va_line_width + x/ppb;
1290 if ((adp->va_type == KD_VGA) || (adp->va_type == KD_EGA)) {
1299 off = y/adp->va_info.vi_cheight*adp->va_line_width + x/ppb;
1300 roff = y%adp->va_info.vi_cheight;
1309 outb(adp->va_crtc_addr, 0xc); /* high */
1310 outb(adp->va_crtc_addr + 1, off >> 8);
1311 outb(adp->va_crtc_addr, 0xd); /* low */
1312 outb(adp->va_crtc_addr + 1, off & 0xff);
1315 if ((adp->va_type == KD_VGA) || (adp->va_type == KD_EGA)) {
1316 inb(adp->va_crtc_addr + 6);
1319 inb(adp->va_crtc_addr + 6);
1324 outb(adp->va_crtc_addr, 8);
1325 outb(adp->va_crtc_addr + 1, roff);
1327 adp->va_disp_start.x = x;
1328 adp->va_disp_start.y = y;
1383 vga_init(int unit, video_adapter_t *adp, int flags)
1385 if ((unit >= biosadapters) || (adp == NULL) || !probe_done(adp))
1388 if (!init_done(adp)) {
1390 adp->va_flags |= V_ADP_INITIALIZED;
1393 if (!config_done(adp)) {
1394 if (vid_register(adp) < 0)
1396 adp->va_flags |= V_ADP_REGISTERED;
1411 vga_get_info(video_adapter_t *adp, int mode, video_info_t *info)
1418 mode = map_gen_mode_num(adp->va_type, adp->va_flags & V_ADP_COLOR, mode);
1420 if (adp->va_flags & V_ADP_MODECHANGE) {
1435 if (mode != adp->va_initial_mode)
1461 vga_query_mode(video_adapter_t *adp, video_info_t *info)
1496 if (vga_get_info(adp, bios_vmode[i].vi_mode, info))
1533 vga_set_mode(video_adapter_t *adp, int mode)
1539 prologue(adp, V_ADP_MODECHANGE, ENODEV);
1541 mode = map_gen_mode_num(adp->va_type,
1542 adp->va_flags & V_ADP_COLOR, mode);
1543 if (vga_get_info(adp, mode, &info))
1615 vga_load_state(adp, &params);
1647 vga_load_state(adp, &params);
1654 adp->va_mode = mode;
1656 update_adapter_info(adp, &info);
1659 vidd_set_hw_cursor(adp, -1, -1);
1670 set_font_mode(video_adapter_t *adp, u_char *buf)
1678 if (adp->va_type == KD_VGA) {
1684 inb(adp->va_crtc_addr + 6);
1686 } else /* if (adp->va_type == KD_EGA) */ {
1691 mp = get_mode_param(adp->va_mode);
1701 inb(adp->va_crtc_addr + 6); /* reset flip-flop */
1703 inb(adp->va_crtc_addr + 6); /* reset flip-flop */
1736 set_normal_mode(video_adapter_t *adp, u_char *buf)
1743 inb(adp->va_crtc_addr + 6); /* reset flip-flop */
1745 inb(adp->va_crtc_addr + 6); /* reset flip-flop */
1759 if (adp->va_crtc_addr == MONO_CRTC) {
1775 if (adp->va_crtc_addr == MONO_CRTC)
1793 vga_save_font(video_adapter_t *adp, int page, int fontsize, int fontwidth,
1805 prologue(adp, V_ADP_FONT, ENODEV);
1827 if (adp->va_type == KD_VGA) { /* what about EGA? XXX */
1837 set_font_mode(adp, buf);
1846 set_normal_mode(adp, buf);
1849 if (adp->va_type == KD_VGA) {
1873 vga_load_font(video_adapter_t *adp, int page, int fontsize, int fontwidth,
1885 prologue(adp, V_ADP_FONT, ENODEV);
1907 if (adp->va_type == KD_VGA) { /* what about EGA? XXX */
1917 set_font_mode(adp, buf);
1926 set_normal_mode(adp, buf);
1929 if (adp->va_type == KD_VGA) {
1953 vga_show_font(video_adapter_t *adp, int page)
1959 prologue(adp, V_ADP_FONT, ENODEV);
1980 vga_save_palette(video_adapter_t *adp, u_char *palette)
1985 prologue(adp, V_ADP_PALETTE, ENODEV);
1992 bits = (adp->va_flags & V_ADP_DAC8) != 0 ? 0 : 2;
1995 inb(adp->va_crtc_addr + 6); /* reset flip/flop */
2000 vga_save_palette2(video_adapter_t *adp, int base, int count,
2006 prologue(adp, V_ADP_PALETTE, ENODEV);
2009 bits = (adp->va_flags & V_ADP_DAC8) != 0 ? 0 : 2;
2015 inb(adp->va_crtc_addr + 6); /* reset flip/flop */
2026 vga_load_palette(video_adapter_t *adp, u_char *palette)
2031 prologue(adp, V_ADP_PALETTE, ENODEV);
2035 bits = (adp->va_flags & V_ADP_DAC8) != 0 ? 0 : 2;
2038 inb(adp->va_crtc_addr + 6); /* reset flip/flop */
2044 vga_load_palette2(video_adapter_t *adp, int base, int count,
2050 prologue(adp, V_ADP_PALETTE, ENODEV);
2054 bits = (adp->va_flags & V_ADP_DAC8) != 0 ? 0 : 2;
2060 inb(adp->va_crtc_addr + 6); /* reset flip/flop */
2072 vga_set_border(video_adapter_t *adp, int color)
2074 prologue(adp, V_ADP_BORDER, ENODEV);
2076 switch (adp->va_type) {
2079 inb(adp->va_crtc_addr + 6); /* reset flip-flop */
2083 outb(adp->va_crtc_addr + 5, color & 0x0f); /* color select register */
2102 vga_save_state(video_adapter_t *adp, void *p, size_t size)
2112 prologue(adp, V_ADP_STATESAVE, 0);
2115 prologue(adp, V_ADP_STATESAVE, ENODEV);
2123 crtc_addr = adp->va_crtc_addr;
2154 if (vga_get_info(adp, adp->va_mode, &info) == 0) {
2184 vga_load_state(video_adapter_t *adp, void *p)
2191 prologue(adp, V_ADP_STATELOAD, ENODEV);
2196 crtc_addr = adp->va_crtc_addr;
2231 if (adp->va_unit == V_ADP_PRIMARY) {
2252 vga_set_origin(video_adapter_t *adp, off_t offset)
2268 vga_read_hw_cursor(video_adapter_t *adp, int *col, int *row)
2276 if (adp->va_info.vi_flags & V_INFO_GRAPHICS)
2280 outb(adp->va_crtc_addr, 14);
2281 off = inb(adp->va_crtc_addr + 1);
2282 outb(adp->va_crtc_addr, 15);
2283 off = (off << 8) | inb(adp->va_crtc_addr + 1);
2286 *row = off / adp->va_info.vi_width;
2287 *col = off % adp->va_info.vi_width;
2300 vga_set_hw_cursor(video_adapter_t *adp, int col, int row)
2311 if (adp->va_info.vi_flags & V_INFO_GRAPHICS)
2313 off = row*adp->va_info.vi_width + col;
2317 outb(adp->va_crtc_addr, 14);
2318 outb(adp->va_crtc_addr + 1, off >> 8);
2319 outb(adp->va_crtc_addr, 15);
2320 outb(adp->va_crtc_addr + 1, off & 0x00ff);
2334 vga_set_hw_cursor_shape(video_adapter_t *adp, int base, int height,
2343 switch (adp->va_type) {
2351 outb(adp->va_crtc_addr, 10);
2352 outb(adp->va_crtc_addr + 1, 32);
2353 outb(adp->va_crtc_addr, 11);
2354 outb(adp->va_crtc_addr + 1, 0);
2356 outb(adp->va_crtc_addr, 10);
2357 outb(adp->va_crtc_addr + 1, celsize - base - height);
2358 outb(adp->va_crtc_addr, 11);
2359 outb(adp->va_crtc_addr + 1, celsize - base - 1);
2365 outb(adp->va_crtc_addr, 10);
2366 outb(adp->va_crtc_addr + 1, celsize);
2367 outb(adp->va_crtc_addr, 11);
2368 outb(adp->va_crtc_addr + 1, 0);
2370 outb(adp->va_crtc_addr, 10);
2371 outb(adp->va_crtc_addr + 1, celsize - base - height);
2372 outb(adp->va_crtc_addr, 11);
2373 outb(adp->va_crtc_addr + 1, celsize - base);
2389 vga_blank_display(video_adapter_t *adp, int mode)
2395 switch (adp->va_type) {
2404 outb(adp->va_crtc_addr, 0x17);
2405 val = inb(adp->va_crtc_addr + 1);
2406 outb(adp->va_crtc_addr + 1, val & ~0x80);
2419 outb(adp->va_crtc_addr, 0x17);
2420 val = inb(adp->va_crtc_addr + 1);
2421 outb(adp->va_crtc_addr + 1, val | 0x80);
2436 outb(adp->va_crtc_addr + 4, 0x25);
2439 outb(adp->va_crtc_addr + 4, 0x2d);
2450 outb(adp->va_crtc_addr + 4, 0x21);
2453 outb(adp->va_crtc_addr + 4, 0x29);
2472 vga_mmap_buf(video_adapter_t *adp, vm_ooffset_t offset, vm_paddr_t *paddr,
2475 if (adp->va_info.vi_flags & V_INFO_LINEAR)
2480 (uintmax_t)adp->va_info.vi_window, (uintmax_t)offset);
2484 if (offset > adp->va_window_size - PAGE_SIZE)
2487 *paddr = adp->va_info.vi_window + offset;
2494 planar_fill(video_adapter_t *adp, int val)
2506 length = adp->va_line_width*adp->va_info.vi_height;
2508 l = imin(length, adp->va_window_size);
2509 vidd_set_win_org(adp, at);
2510 bzero_io(adp->va_window, l);
2519 packed_fill(video_adapter_t *adp, int val)
2526 length = adp->va_line_width*adp->va_info.vi_height;
2528 l = imin(length, adp->va_window_size);
2529 vidd_set_win_org(adp, at);
2530 fill_io(val, adp->va_window, l);
2537 direct_fill(video_adapter_t *adp, int val)
2544 length = adp->va_line_width*adp->va_info.vi_height;
2546 l = imin(length, adp->va_window_size);
2547 vidd_set_win_org(adp, at);
2548 switch (adp->va_info.vi_pixel_size) {
2550 fillw_io(val, adp->va_window, l/sizeof(u_int16_t));
2556 filll_io(val, adp->va_window, l/sizeof(u_int32_t));
2565 vga_clear(video_adapter_t *adp)
2567 switch (adp->va_info.vi_mem_model) {
2572 planar_fill(adp, 0);
2575 packed_fill(adp, 0);
2578 direct_fill(adp, 0);
2586 planar_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2601 banksize = adp->va_window_size;
2604 pos = adp->va_line_width*y + x/8;
2606 vidd_set_win_org(adp, pos);
2613 writeb(adp->va_window + offset, 0);
2619 vidd_set_win_org(adp, bank*banksize);
2625 bzero_io(adp->va_window + offset, l);
2631 vidd_set_win_org(adp, bank*banksize);
2636 writeb(adp->va_window + offset, 0);
2641 vidd_set_win_org(adp, bank*banksize);
2655 packed_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2663 banksize = adp->va_window_size;
2665 cx *= adp->va_info.vi_pixel_size;
2667 pos = adp->va_line_width*y + x*adp->va_info.vi_pixel_size;
2669 vidd_set_win_org(adp, pos);
2674 fill_io(val, adp->va_window + offset,
2675 (end - offset)/adp->va_info.vi_pixel_size);
2679 vidd_set_win_org(adp, bank*banksize);
2681 fill_io(val, adp->va_window, end/adp->va_info.vi_pixel_size);
2689 direct_fill_rect16(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2701 banksize = adp->va_window_size;
2705 pos = adp->va_line_width*y + x*sizeof(u_int16_t);
2707 vidd_set_win_org(adp, pos);
2712 fillw_io(val, adp->va_window + offset,
2717 vidd_set_win_org(adp, bank*banksize);
2719 fillw_io(val, adp->va_window, end/sizeof(u_int16_t));
2727 direct_fill_rect24(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2741 banksize = adp->va_window_size;
2745 pos = adp->va_line_width*y + x*3;
2747 vidd_set_win_org(adp, pos);
2753 writeb(adp->va_window + j, b[i]);
2758 vidd_set_win_org(adp, bank*banksize);
2762 writeb(adp->va_window + j, b[i]);
2771 direct_fill_rect32(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2783 banksize = adp->va_window_size;
2787 pos = adp->va_line_width*y + x*sizeof(u_int32_t);
2789 vidd_set_win_org(adp, pos);
2794 filll_io(val, adp->va_window + offset,
2799 vidd_set_win_org(adp, bank*banksize);
2801 filll_io(val, adp->va_window, end/sizeof(u_int32_t));
2809 vga_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2811 switch (adp->va_info.vi_mem_model) {
2816 planar_fill_rect(adp, val, x, y, cx, cy);
2819 packed_fill_rect(adp, val, x, y, cx, cy);
2822 switch (adp->va_info.vi_pixel_size) {
2824 direct_fill_rect16(adp, val, x, y, cx, cy);
2827 direct_fill_rect24(adp, val, x, y, cx, cy);
2830 direct_fill_rect32(adp, val, x, y, cx, cy);
2839 vga_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2846 vga_bitblt(video_adapter_t *adp,...)
2855 get_palette(video_adapter_t *adp, int base, int count,
2869 if (vga_save_palette2(adp, base, count, r, g, b)) {
2886 set_palette(video_adapter_t *adp, int base, int count,
2907 err = vga_load_palette2(adp, base, count, r, g, b);
2914 vga_dev_ioctl(video_adapter_t *adp, u_long cmd, caddr_t arg)
2925 return (set_display_start(adp,
2931 return (set_line_length(adp, *(u_int *)arg) ? ENODEV : 0);
2934 return get_palette(adp, ((video_color_palette_t *)arg)->index,
2942 return set_palette(adp, ((video_color_palette_t *)arg)->index,
2950 ((struct fbtype *)arg)->fb_type = fb_type(adp->va_type);
2951 ((struct fbtype *)arg)->fb_height = adp->va_info.vi_height;
2952 ((struct fbtype *)arg)->fb_width = adp->va_info.vi_width;
2953 ((struct fbtype *)arg)->fb_depth = adp->va_info.vi_depth;
2954 if ((adp->va_info.vi_depth <= 1) || (adp->va_info.vi_depth > 8))
2957 ((struct fbtype *)arg)->fb_cmsize = 1 << adp->va_info.vi_depth;
2958 ((struct fbtype *)arg)->fb_size = adp->va_buffer_size;
2962 return get_palette(adp, ((struct fbcmap *)arg)->index,
2969 return set_palette(adp, ((struct fbcmap *)arg)->index,
2976 return fb_commonioctl(adp, cmd, arg);
3000 vga_diag(video_adapter_t *adp, int level)
3030 fb_dump_adp_info(VGA_DRIVER_NAME, adp, level);
3033 if (adp->va_flags & V_ADP_MODECHANGE) {
3039 fb_dump_mode_info(VGA_DRIVER_NAME, adp, &bios_vmode[i], level);
3042 vga_get_info(adp, adp->va_initial_mode, &info); /* shouldn't fail */
3043 fb_dump_mode_info(VGA_DRIVER_NAME, adp, &info, level);
3047 if ((adp->va_type != KD_EGA) && (adp->va_type != KD_VGA))
3053 adp->va_unit, adp->va_name);
3058 if (adp->va_type == KD_VGA) {
3061 printf("VGA parameters in BIOS for mode %d\n", adp->va_initial_mode);
3065 mp = get_mode_param(adp->va_initial_mode);
3068 printf("EGA/VGA parameters to be used for mode %d\n", adp->va_initial_mode);