Lines Matching defs:adp

78 	video_adapter_t *adp;
85 error = (*sw->probe)(unit, &adp, NULL, flags);
88 bcopy(adp, buf, sizeof(*buf));
102 error = (*sw->probe)(unit, &sc->adp, NULL, flags);
105 return (*sw->init)(unit, sc->adp, flags);
120 return genfbopen(&sc->gensc, sc->adp, flag, mode, td);
126 return genfbclose(&sc->gensc, sc->adp, flag, mode, td);
132 return genfbread(&sc->gensc, sc->adp, uio, flag);
138 return genfbread(&sc->gensc, sc->adp, uio, flag);
145 return genfbioctl(&sc->gensc, sc->adp, cmd, arg, flag, td);
152 return genfbmmap(&sc->gensc, sc->adp, offset, paddr, prot, memattr);
164 #define probe_done(adp) ((adp)->va_flags & V_ADP_PROBED)
165 #define init_done(adp) ((adp)->va_flags & V_ADP_INITIALIZED)
166 #define config_done(adp) ((adp)->va_flags & V_ADP_REGISTERED)
453 static void clear_mode_map(video_adapter_t *adp, u_char *map[], int max,
462 static void fill_adapter_param(int code, video_adapter_t *adp);
464 static int verify_adapter(video_adapter_t *adp);
465 static void update_adapter_info(video_adapter_t *adp, video_info_t *info);
473 static int set_line_length(video_adapter_t *adp, int pixel);
474 static int set_display_start(video_adapter_t *adp, int x, int y);
484 static void set_font_mode(video_adapter_t *adp, u_char *buf);
485 static void set_normal_mode(video_adapter_t *adp, u_char *buf);
490 static void planar_fill(video_adapter_t *adp, int val);
491 static void packed_fill(video_adapter_t *adp, int val);
492 static void direct_fill(video_adapter_t *adp, int val);
494 static void planar_fill_rect(video_adapter_t *adp, int val, int x, int y,
496 static void packed_fill_rect(video_adapter_t *adp, int val, int x, int y,
498 static void direct_fill_rect16(video_adapter_t *adp, int val, int x, int y,
500 static void direct_fill_rect24(video_adapter_t *adp, int val, int x, int y,
502 static void direct_fill_rect32(video_adapter_t *adp, int val, int x, int y,
513 #define prologue(adp, flag, err) \
514 if (!vga_init_done || !((adp)->va_flags & (flag))) \
557 clear_mode_map(video_adapter_t *adp, u_char *map[], int max, int color)
567 if (vga_get_info(adp, i, &info))
757 fill_adapter_param(int code, video_adapter_t *adp)
778 adp[V_ADP_PRIMARY] = adapter_init_value[DCC_MONO];
779 adp[V_ADP_SECONDARY] = adapter_init_value[DCC_CGA80];
781 adp[V_ADP_PRIMARY] = adapter_init_value[dcc[code].primary];
782 adp[V_ADP_SECONDARY] = adapter_init_value[dcc[code].secondary];
788 verify_adapter(video_adapter_t *adp)
796 buf = BIOS_PADDRTOVADDR(adp->va_window);
803 switch (adp->va_type) {
806 outb(adp->va_crtc_addr, 7);
807 if (inb(adp->va_crtc_addr) == 7) {
808 adp->va_type = KD_VGA;
809 adp->va_name = "vga";
810 adp->va_flags |= V_ADP_STATESAVE | V_ADP_PALETTE;
812 adp->va_flags |= V_ADP_STATELOAD | V_ADP_BORDER;
829 adp->va_flags |= V_ADP_COLOR | V_ADP_BORDER;
853 update_adapter_info(video_adapter_t *adp, video_info_t *info)
855 adp->va_flags &= ~V_ADP_COLOR;
856 adp->va_flags |=
858 adp->va_crtc_addr =
859 (adp->va_flags & V_ADP_COLOR) ? COLOR_CRTC : MONO_CRTC;
860 adp->va_window = BIOS_PADDRTOVADDR(info->vi_window);
861 adp->va_window_size = info->vi_window_size;
862 adp->va_window_gran = info->vi_window_gran;
863 adp->va_window_orig = 0;
865 adp->va_buffer = info->vi_buffer;
866 adp->va_buffer_size = info->vi_buffer_size;
867 adp->va_flags &= ~V_ADP_CWIDTH9;
869 adp->va_flags |= V_ADP_CWIDTH9;
871 adp->va_line_width = info->vi_width/2;
875 adp->va_line_width = info->vi_width/8;
878 adp->va_line_width = info->vi_width/4;
881 adp->va_line_width = info->vi_width/2;
885 adp->va_line_width = info->vi_width;
889 adp->va_line_width = info->vi_width;
891 adp->va_disp_start.x = 0;
892 adp->va_disp_start.y = 0;
893 bcopy(info, &adp->va_info, sizeof(adp->va_info));
942 video_adapter_t *adp;
1088 adp = &biosadapter[V_ADP_PRIMARY];
1091 adp = &biosadapter[V_ADP_SECONDARY];
1093 adp = NULL;
1096 if (adp != NULL) {
1097 if (adp->va_type == KD_VGA) {
1098 vga_save_state(adp, &adpstate, sizeof(adpstate));
1100 mode_map[adp->va_initial_mode] = adpstate.regs;
1104 mode_map[adp->va_initial_mode] = adpstate.regs;
1109 mp = get_mode_param(adp->va_initial_mode);
1134 mode_map[adp->va_initial_mode] = adpstate.regs;
1150 mode_map[adp->va_initial_mode] = adpstate.regs;
1155 if (bios_vmode[i].vi_mode == adp->va_initial_mode) {
1162 if (bios_vmode[i].vi_mode != adp->va_initial_mode &&
1164 adp->va_initial_mode &&
1176 adp->va_flags |= V_ADP_MODECHANGE;
1179 adp->va_flags |= V_ADP_FONT;
1181 } else if (adp->va_type == KD_EGA) {
1190 mp = get_mode_param(adp->va_initial_mode);
1192 adp->va_flags |= V_ADP_MODECHANGE;
1194 adp->va_flags |= V_ADP_FONT;
1281 set_line_length(video_adapter_t *adp, int pixel)
1288 if ((adp->va_type != KD_VGA) && (adp->va_type != KD_EGA))
1290 mp = get_mode_param(adp->va_mode);
1294 switch (adp->va_info.vi_mem_model) {
1296 ppw = 16/(adp->va_info.vi_depth/adp->va_info.vi_planes);
1314 outb(adp->va_crtc_addr, 0x13);
1315 outb(adp->va_crtc_addr + 1, count);
1316 adp->va_line_width = bpl;
1322 set_display_start(video_adapter_t *adp, int x, int y)
1329 if ((adp->va_type != KD_VGA) && (adp->va_type != KD_EGA))
1331 if (adp->va_info.vi_flags & V_INFO_GRAPHICS) {
1332 ppb = 8/(adp->va_info.vi_depth/adp->va_info.vi_planes);
1333 off = y*adp->va_line_width + x/ppb;
1337 if ((adp->va_type == KD_VGA) || (adp->va_type == KD_EGA)) {
1346 off = y/adp->va_info.vi_cheight*adp->va_line_width + x/ppb;
1347 roff = y%adp->va_info.vi_cheight;
1356 outb(adp->va_crtc_addr, 0xc); /* high */
1357 outb(adp->va_crtc_addr + 1, off >> 8);
1358 outb(adp->va_crtc_addr, 0xd); /* low */
1359 outb(adp->va_crtc_addr + 1, off & 0xff);
1362 if ((adp->va_type == KD_VGA) || (adp->va_type == KD_EGA)) {
1363 inb(adp->va_crtc_addr + 6);
1366 inb(adp->va_crtc_addr + 6);
1371 outb(adp->va_crtc_addr, 8);
1372 outb(adp->va_crtc_addr + 1, roff);
1374 adp->va_disp_start.x = x;
1375 adp->va_disp_start.y = y;
1430 vga_init(int unit, video_adapter_t *adp, int flags)
1432 if ((unit >= biosadapters) || (adp == NULL) || !probe_done(adp))
1435 if (!init_done(adp)) {
1437 adp->va_flags |= V_ADP_INITIALIZED;
1440 if (!config_done(adp)) {
1441 if (vid_register(adp) < 0)
1443 adp->va_flags |= V_ADP_REGISTERED;
1458 vga_get_info(video_adapter_t *adp, int mode, video_info_t *info)
1465 mode = map_gen_mode_num(adp->va_type, adp->va_flags & V_ADP_COLOR, mode);
1467 if (adp->va_flags & V_ADP_MODECHANGE) {
1482 if (mode != adp->va_initial_mode)
1508 vga_query_mode(video_adapter_t *adp, video_info_t *info)
1543 if (vga_get_info(adp, bios_vmode[i].vi_mode, info))
1580 vga_set_mode(video_adapter_t *adp, int mode)
1586 prologue(adp, V_ADP_MODECHANGE, ENODEV);
1588 mode = map_gen_mode_num(adp->va_type,
1589 adp->va_flags & V_ADP_COLOR, mode);
1590 if (vga_get_info(adp, mode, &info))
1662 vga_load_state(adp, &params);
1694 vga_load_state(adp, &params);
1701 adp->va_mode = mode;
1703 update_adapter_info(adp, &info);
1706 vidd_set_hw_cursor(adp, -1, -1);
1717 set_font_mode(video_adapter_t *adp, u_char *buf)
1725 if (adp->va_type == KD_VGA) {
1731 inb(adp->va_crtc_addr + 6);
1733 } else /* if (adp->va_type == KD_EGA) */ {
1738 mp = get_mode_param(adp->va_mode);
1748 inb(adp->va_crtc_addr + 6); /* reset flip-flop */
1750 inb(adp->va_crtc_addr + 6); /* reset flip-flop */
1783 set_normal_mode(video_adapter_t *adp, u_char *buf)
1790 inb(adp->va_crtc_addr + 6); /* reset flip-flop */
1792 inb(adp->va_crtc_addr + 6); /* reset flip-flop */
1806 if (adp->va_crtc_addr == MONO_CRTC) {
1822 if (adp->va_crtc_addr == MONO_CRTC)
1840 vga_save_font(video_adapter_t *adp, int page, int fontsize, int fontwidth,
1852 prologue(adp, V_ADP_FONT, ENODEV);
1874 if (adp->va_type == KD_VGA) { /* what about EGA? XXX */
1884 set_font_mode(adp, buf);
1893 set_normal_mode(adp, buf);
1896 if (adp->va_type == KD_VGA) {
1920 vga_load_font(video_adapter_t *adp, int page, int fontsize, int fontwidth,
1932 prologue(adp, V_ADP_FONT, ENODEV);
1954 if (adp->va_type == KD_VGA) { /* what about EGA? XXX */
1964 set_font_mode(adp, buf);
1973 set_normal_mode(adp, buf);
1976 if (adp->va_type == KD_VGA) {
2000 vga_show_font(video_adapter_t *adp, int page)
2006 prologue(adp, V_ADP_FONT, ENODEV);
2027 vga_save_palette(video_adapter_t *adp, u_char *palette)
2032 prologue(adp, V_ADP_PALETTE, ENODEV);
2039 bits = (adp->va_flags & V_ADP_DAC8) != 0 ? 0 : 2;
2042 inb(adp->va_crtc_addr + 6); /* reset flip/flop */
2047 vga_save_palette2(video_adapter_t *adp, int base, int count,
2053 prologue(adp, V_ADP_PALETTE, ENODEV);
2056 bits = (adp->va_flags & V_ADP_DAC8) != 0 ? 0 : 2;
2062 inb(adp->va_crtc_addr + 6); /* reset flip/flop */
2073 vga_load_palette(video_adapter_t *adp, u_char *palette)
2078 prologue(adp, V_ADP_PALETTE, ENODEV);
2082 bits = (adp->va_flags & V_ADP_DAC8) != 0 ? 0 : 2;
2085 inb(adp->va_crtc_addr + 6); /* reset flip/flop */
2091 vga_load_palette2(video_adapter_t *adp, int base, int count,
2097 prologue(adp, V_ADP_PALETTE, ENODEV);
2101 bits = (adp->va_flags & V_ADP_DAC8) != 0 ? 0 : 2;
2107 inb(adp->va_crtc_addr + 6); /* reset flip/flop */
2119 vga_set_border(video_adapter_t *adp, int color)
2121 prologue(adp, V_ADP_BORDER, ENODEV);
2123 switch (adp->va_type) {
2126 inb(adp->va_crtc_addr + 6); /* reset flip-flop */
2130 outb(adp->va_crtc_addr + 5, color & 0x0f); /* color select register */
2149 vga_save_state(video_adapter_t *adp, void *p, size_t size)
2159 prologue(adp, V_ADP_STATESAVE, 0);
2162 prologue(adp, V_ADP_STATESAVE, ENODEV);
2170 crtc_addr = adp->va_crtc_addr;
2201 if (vga_get_info(adp, adp->va_mode, &info) == 0) {
2231 vga_load_state(video_adapter_t *adp, void *p)
2238 prologue(adp, V_ADP_STATELOAD, ENODEV);
2243 crtc_addr = adp->va_crtc_addr;
2278 if (adp->va_unit == V_ADP_PRIMARY) {
2299 vga_set_origin(video_adapter_t *adp, off_t offset)
2315 vga_read_hw_cursor(video_adapter_t *adp, int *col, int *row)
2323 if (adp->va_info.vi_flags & V_INFO_GRAPHICS)
2327 outb(adp->va_crtc_addr, 14);
2328 off = inb(adp->va_crtc_addr + 1);
2329 outb(adp->va_crtc_addr, 15);
2330 off = (off << 8) | inb(adp->va_crtc_addr + 1);
2333 *row = off / adp->va_info.vi_width;
2334 *col = off % adp->va_info.vi_width;
2347 vga_set_hw_cursor(video_adapter_t *adp, int col, int row)
2358 if (adp->va_info.vi_flags & V_INFO_GRAPHICS)
2360 off = row*adp->va_info.vi_width + col;
2364 outb(adp->va_crtc_addr, 14);
2365 outb(adp->va_crtc_addr + 1, off >> 8);
2366 outb(adp->va_crtc_addr, 15);
2367 outb(adp->va_crtc_addr + 1, off & 0x00ff);
2381 vga_set_hw_cursor_shape(video_adapter_t *adp, int base, int height,
2390 switch (adp->va_type) {
2398 outb(adp->va_crtc_addr, 10);
2399 outb(adp->va_crtc_addr + 1, 32);
2400 outb(adp->va_crtc_addr, 11);
2401 outb(adp->va_crtc_addr + 1, 0);
2403 outb(adp->va_crtc_addr, 10);
2404 outb(adp->va_crtc_addr + 1, celsize - base - height);
2405 outb(adp->va_crtc_addr, 11);
2406 outb(adp->va_crtc_addr + 1, celsize - base - 1);
2412 outb(adp->va_crtc_addr, 10);
2413 outb(adp->va_crtc_addr + 1, celsize);
2414 outb(adp->va_crtc_addr, 11);
2415 outb(adp->va_crtc_addr + 1, 0);
2417 outb(adp->va_crtc_addr, 10);
2418 outb(adp->va_crtc_addr + 1, celsize - base - height);
2419 outb(adp->va_crtc_addr, 11);
2420 outb(adp->va_crtc_addr + 1, celsize - base);
2436 vga_blank_display(video_adapter_t *adp, int mode)
2442 switch (adp->va_type) {
2451 outb(adp->va_crtc_addr, 0x17);
2452 val = inb(adp->va_crtc_addr + 1);
2453 outb(adp->va_crtc_addr + 1, val & ~0x80);
2466 outb(adp->va_crtc_addr, 0x17);
2467 val = inb(adp->va_crtc_addr + 1);
2468 outb(adp->va_crtc_addr + 1, val | 0x80);
2483 outb(adp->va_crtc_addr + 4, 0x25);
2486 outb(adp->va_crtc_addr + 4, 0x2d);
2497 outb(adp->va_crtc_addr + 4, 0x21);
2500 outb(adp->va_crtc_addr + 4, 0x29);
2519 vga_mmap_buf(video_adapter_t *adp, vm_ooffset_t offset, vm_paddr_t *paddr,
2522 if (adp->va_info.vi_flags & V_INFO_LINEAR)
2527 (uintmax_t)adp->va_info.vi_window, (uintmax_t)offset);
2531 if (offset > adp->va_window_size - PAGE_SIZE)
2534 *paddr = adp->va_info.vi_window + offset;
2541 planar_fill(video_adapter_t *adp, int val)
2553 length = adp->va_line_width*adp->va_info.vi_height;
2555 l = imin(length, adp->va_window_size);
2556 vidd_set_win_org(adp, at);
2557 bzero_io(adp->va_window, l);
2566 packed_fill(video_adapter_t *adp, int val)
2573 length = adp->va_line_width*adp->va_info.vi_height;
2575 l = imin(length, adp->va_window_size);
2576 vidd_set_win_org(adp, at);
2577 fill_io(val, adp->va_window, l);
2584 direct_fill(video_adapter_t *adp, int val)
2591 length = adp->va_line_width*adp->va_info.vi_height;
2593 l = imin(length, adp->va_window_size);
2594 vidd_set_win_org(adp, at);
2595 switch (adp->va_info.vi_pixel_size) {
2597 fillw_io(val, adp->va_window, l/sizeof(u_int16_t));
2603 filll_io(val, adp->va_window, l/sizeof(u_int32_t));
2612 vga_clear(video_adapter_t *adp)
2614 switch (adp->va_info.vi_mem_model) {
2619 planar_fill(adp, 0);
2622 packed_fill(adp, 0);
2625 direct_fill(adp, 0);
2633 planar_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2648 banksize = adp->va_window_size;
2651 pos = adp->va_line_width*y + x/8;
2653 vidd_set_win_org(adp, pos);
2660 writeb(adp->va_window + offset, 0);
2666 vidd_set_win_org(adp, bank*banksize);
2672 bzero_io(adp->va_window + offset, l);
2678 vidd_set_win_org(adp, bank*banksize);
2683 writeb(adp->va_window + offset, 0);
2688 vidd_set_win_org(adp, bank*banksize);
2702 packed_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2710 banksize = adp->va_window_size;
2712 cx *= adp->va_info.vi_pixel_size;
2714 pos = adp->va_line_width*y + x*adp->va_info.vi_pixel_size;
2716 vidd_set_win_org(adp, pos);
2721 fill_io(val, adp->va_window + offset,
2722 (end - offset)/adp->va_info.vi_pixel_size);
2726 vidd_set_win_org(adp, bank*banksize);
2728 fill_io(val, adp->va_window, end/adp->va_info.vi_pixel_size);
2736 direct_fill_rect16(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2748 banksize = adp->va_window_size;
2752 pos = adp->va_line_width*y + x*sizeof(u_int16_t);
2754 vidd_set_win_org(adp, pos);
2759 fillw_io(val, adp->va_window + offset,
2764 vidd_set_win_org(adp, bank*banksize);
2766 fillw_io(val, adp->va_window, end/sizeof(u_int16_t));
2774 direct_fill_rect24(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2788 banksize = adp->va_window_size;
2792 pos = adp->va_line_width*y + x*3;
2794 vidd_set_win_org(adp, pos);
2800 writeb(adp->va_window + j, b[i]);
2805 vidd_set_win_org(adp, bank*banksize);
2809 writeb(adp->va_window + j, b[i]);
2818 direct_fill_rect32(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2830 banksize = adp->va_window_size;
2834 pos = adp->va_line_width*y + x*sizeof(u_int32_t);
2836 vidd_set_win_org(adp, pos);
2841 filll_io(val, adp->va_window + offset,
2846 vidd_set_win_org(adp, bank*banksize);
2848 filll_io(val, adp->va_window, end/sizeof(u_int32_t));
2856 vga_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2858 switch (adp->va_info.vi_mem_model) {
2863 planar_fill_rect(adp, val, x, y, cx, cy);
2866 packed_fill_rect(adp, val, x, y, cx, cy);
2869 switch (adp->va_info.vi_pixel_size) {
2871 direct_fill_rect16(adp, val, x, y, cx, cy);
2874 direct_fill_rect24(adp, val, x, y, cx, cy);
2877 direct_fill_rect32(adp, val, x, y, cx, cy);
2886 vga_fill_rect(video_adapter_t *adp, int val, int x, int y, int cx, int cy)
2893 vga_bitblt(video_adapter_t *adp,...)
2902 get_palette(video_adapter_t *adp, int base, int count,
2916 if (vga_save_palette2(adp, base, count, r, g, b)) {
2933 set_palette(video_adapter_t *adp, int base, int count,
2954 err = vga_load_palette2(adp, base, count, r, g, b);
2961 vga_dev_ioctl(video_adapter_t *adp, u_long cmd, caddr_t arg)
2972 return (set_display_start(adp,
2978 return (set_line_length(adp, *(u_int *)arg) ? ENODEV : 0);
2981 return get_palette(adp, ((video_color_palette_t *)arg)->index,
2989 return set_palette(adp, ((video_color_palette_t *)arg)->index,
2997 ((struct fbtype *)arg)->fb_type = fb_type(adp->va_type);
2998 ((struct fbtype *)arg)->fb_height = adp->va_info.vi_height;
2999 ((struct fbtype *)arg)->fb_width = adp->va_info.vi_width;
3000 ((struct fbtype *)arg)->fb_depth = adp->va_info.vi_depth;
3001 if ((adp->va_info.vi_depth <= 1) || (adp->va_info.vi_depth > 8))
3004 ((struct fbtype *)arg)->fb_cmsize = 1 << adp->va_info.vi_depth;
3005 ((struct fbtype *)arg)->fb_size = adp->va_buffer_size;
3009 return get_palette(adp, ((struct fbcmap *)arg)->index,
3016 return set_palette(adp, ((struct fbcmap *)arg)->index,
3023 return fb_commonioctl(adp, cmd, arg);
3047 vga_diag(video_adapter_t *adp, int level)
3077 fb_dump_adp_info(VGA_DRIVER_NAME, adp, level);
3080 if (adp->va_flags & V_ADP_MODECHANGE) {
3086 fb_dump_mode_info(VGA_DRIVER_NAME, adp, &bios_vmode[i], level);
3089 vga_get_info(adp, adp->va_initial_mode, &info); /* shouldn't fail */
3090 fb_dump_mode_info(VGA_DRIVER_NAME, adp, &info, level);
3094 if ((adp->va_type != KD_EGA) && (adp->va_type != KD_VGA))
3100 adp->va_unit, adp->va_name);
3105 if (adp->va_type == KD_VGA) {
3108 printf("VGA parameters in BIOS for mode %d\n", adp->va_initial_mode);
3112 mp = get_mode_param(adp->va_initial_mode);
3115 printf("EGA/VGA parameters to be used for mode %d\n", adp->va_initial_mode);