vga_isa.c (43105) | vga_isa.c (43664) |
---|---|
1/*- 2 * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> 3 * Copyright (c) 1992-1998 S�ren Schmidt 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 12 unchanged lines hidden (view full) --- 21 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, 22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * | 1/*- 2 * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> 3 * Copyright (c) 1992-1998 S�ren Schmidt 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 12 unchanged lines hidden (view full) --- 21 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, 22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * |
29 * $Id: vga_isa.c,v 1.1 1999/01/09 02:44:41 yokota Exp $ | 29 * $Id: vga_isa.c,v 1.1 1999/01/23 16:53:30 dfr Exp $ |
30 */ 31 32#include "vga.h" 33#include "opt_vga.h" 34#include "opt_fb.h" 35#include "opt_syscons.h" /* should be removed in the future, XXX */ 36 37#if NVGA > 0 --- 193 unchanged lines hidden (view full) --- 231 /* attach a virtual frame buffer device */ 232 error = fb_attach(makedev(0, ISAVGA_MKMINOR(unit)), scp->adp, 233 &vga_cdevsw); 234 if (error) 235 return error; 236#endif /* FB_INSTALL_CDEV */ 237 238 if (bootverbose) | 30 */ 31 32#include "vga.h" 33#include "opt_vga.h" 34#include "opt_fb.h" 35#include "opt_syscons.h" /* should be removed in the future, XXX */ 36 37#if NVGA > 0 --- 193 unchanged lines hidden (view full) --- 231 /* attach a virtual frame buffer device */ 232 error = fb_attach(makedev(0, ISAVGA_MKMINOR(unit)), scp->adp, 233 &vga_cdevsw); 234 if (error) 235 return error; 236#endif /* FB_INSTALL_CDEV */ 237 238 if (bootverbose) |
239 (*sw->diag)(sc->adp, bootverbose); | 239 (*vidsw[sc->adp->va_index]->diag)(sc->adp, bootverbose); |
240 241 return 0; 242} 243 244/* LOW-LEVEL */ 245 246#include <machine/clock.h> 247#include <machine/pc/vesa.h> --- 47 unchanged lines hidden (view full) --- 295 * NOTE: `va_window' should have a virtual address, but is initialized 296 * with a physical address in the following table, as verify_adapter() 297 * will perform address conversion at run-time. 298 */ 299static video_adapter_t adapter_init_value[] = { 300 /* DCC_MONO */ 301 { 0, KD_MONO, "mda", 0, 0, 0, IO_MDA, IO_MDASIZE, MONO_CRTC, 302 MDA_BUF_BASE, MDA_BUF_SIZE, MDA_BUF_BASE, MDA_BUF_SIZE, MDA_BUF_SIZE, | 240 241 return 0; 242} 243 244/* LOW-LEVEL */ 245 246#include <machine/clock.h> 247#include <machine/pc/vesa.h> --- 47 unchanged lines hidden (view full) --- 295 * NOTE: `va_window' should have a virtual address, but is initialized 296 * with a physical address in the following table, as verify_adapter() 297 * will perform address conversion at run-time. 298 */ 299static video_adapter_t adapter_init_value[] = { 300 /* DCC_MONO */ 301 { 0, KD_MONO, "mda", 0, 0, 0, IO_MDA, IO_MDASIZE, MONO_CRTC, 302 MDA_BUF_BASE, MDA_BUF_SIZE, MDA_BUF_BASE, MDA_BUF_SIZE, MDA_BUF_SIZE, |
303 0, 0, 0, 7, 0, 0, NULL }, | 303 0, 0, 0, 7, 0, }, |
304 /* DCC_CGA40 */ 305 { 0, KD_CGA, "cga", 0, 0, V_ADP_COLOR, IO_CGA, IO_CGASIZE, COLOR_CRTC, 306 CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_SIZE, | 304 /* DCC_CGA40 */ 305 { 0, KD_CGA, "cga", 0, 0, V_ADP_COLOR, IO_CGA, IO_CGASIZE, COLOR_CRTC, 306 CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_SIZE, |
307 0, 0, 0, 3, 0, 0, NULL }, | 307 0, 0, 0, 3, 0, }, |
308 /* DCC_CGA80 */ 309 { 0, KD_CGA, "cga", 0, 0, V_ADP_COLOR, IO_CGA, IO_CGASIZE, COLOR_CRTC, 310 CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_SIZE, | 308 /* DCC_CGA80 */ 309 { 0, KD_CGA, "cga", 0, 0, V_ADP_COLOR, IO_CGA, IO_CGASIZE, COLOR_CRTC, 310 CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_SIZE, |
311 0, 0, 0, 3, 0, 0, NULL }, | 311 0, 0, 0, 3, 0, }, |
312 /* DCC_EGAMONO */ 313 { 0, KD_EGA, "ega", 0, 0, 0, IO_MDA, 48, MONO_CRTC, 314 EGA_BUF_BASE, EGA_BUF_SIZE, MDA_BUF_BASE, MDA_BUF_SIZE, MDA_BUF_SIZE, | 312 /* DCC_EGAMONO */ 313 { 0, KD_EGA, "ega", 0, 0, 0, IO_MDA, 48, MONO_CRTC, 314 EGA_BUF_BASE, EGA_BUF_SIZE, MDA_BUF_BASE, MDA_BUF_SIZE, MDA_BUF_SIZE, |
315 0, 0, 0, 7, 0, 0, NULL }, | 315 0, 0, 0, 7, 0, }, |
316 /* DCC_EGA40 */ 317 { 0, KD_EGA, "ega", 0, 0, V_ADP_COLOR, IO_MDA, 48, COLOR_CRTC, 318 EGA_BUF_BASE, EGA_BUF_SIZE, CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_SIZE, | 316 /* DCC_EGA40 */ 317 { 0, KD_EGA, "ega", 0, 0, V_ADP_COLOR, IO_MDA, 48, COLOR_CRTC, 318 EGA_BUF_BASE, EGA_BUF_SIZE, CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_SIZE, |
319 0, 0, 0, 3, 0, 0, NULL }, | 319 0, 0, 0, 3, 0, }, |
320 /* DCC_EGA80 */ 321 { 0, KD_EGA, "ega", 0, 0, V_ADP_COLOR, IO_MDA, 48, COLOR_CRTC, 322 EGA_BUF_BASE, EGA_BUF_SIZE, CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_SIZE, | 320 /* DCC_EGA80 */ 321 { 0, KD_EGA, "ega", 0, 0, V_ADP_COLOR, IO_MDA, 48, COLOR_CRTC, 322 EGA_BUF_BASE, EGA_BUF_SIZE, CGA_BUF_BASE, CGA_BUF_SIZE, CGA_BUF_SIZE, |
323 0, 0, 0, 3, 0, 0, NULL }, | 323 0, 0, 0, 3, 0, }, |
324}; 325 326static video_adapter_t biosadapter[2]; 327static int biosadapters = 0; 328 329/* video driver declarations */ 330static int vga_configure(int flags); 331 int (*vga_sub_configure)(int flags); --- 153 unchanged lines hidden (view full) --- 485#endif 486static int map_gen_mode_num(int type, int color, int mode); 487static int map_bios_mode_num(int type, int color, int bios_mode); 488static u_char *get_mode_param(int mode); 489#ifndef VGA_NO_BIOS 490static void fill_adapter_param(int code, video_adapter_t *adp); 491#endif 492static int verify_adapter(video_adapter_t *adp); | 324}; 325 326static video_adapter_t biosadapter[2]; 327static int biosadapters = 0; 328 329/* video driver declarations */ 330static int vga_configure(int flags); 331 int (*vga_sub_configure)(int flags); --- 153 unchanged lines hidden (view full) --- 485#endif 486static int map_gen_mode_num(int type, int color, int mode); 487static int map_bios_mode_num(int type, int color, int bios_mode); 488static u_char *get_mode_param(int mode); 489#ifndef VGA_NO_BIOS 490static void fill_adapter_param(int code, video_adapter_t *adp); 491#endif 492static int verify_adapter(video_adapter_t *adp); |
493static void update_adapter_info(video_adapter_t *adp, video_info_t *info); |
|
493#if !defined(VGA_NO_BIOS) && !defined(VGA_NO_MODE_CHANGE) 494#define COMP_IDENTICAL 0 495#define COMP_SIMILAR 1 496#define COMP_DIFFERENT 2 497static int comp_adpregs(u_char *buf1, u_char *buf2); 498#endif 499static int probe_adapters(void); 500 --- 326 unchanged lines hidden (view full) --- 827 video_mode_ptr2 = (u_char *)BIOS_PADDRTOVADDR(p); 828#endif 829 break; 830 } 831 832 return 0; 833} 834 | 494#if !defined(VGA_NO_BIOS) && !defined(VGA_NO_MODE_CHANGE) 495#define COMP_IDENTICAL 0 496#define COMP_SIMILAR 1 497#define COMP_DIFFERENT 2 498static int comp_adpregs(u_char *buf1, u_char *buf2); 499#endif 500static int probe_adapters(void); 501 --- 326 unchanged lines hidden (view full) --- 828 video_mode_ptr2 = (u_char *)BIOS_PADDRTOVADDR(p); 829#endif 830 break; 831 } 832 833 return 0; 834} 835 |
836static void 837update_adapter_info(video_adapter_t *adp, video_info_t *info) 838{ 839 adp->va_flags &= ~V_ADP_COLOR; 840 adp->va_flags |= 841 (info->vi_flags & V_INFO_COLOR) ? V_ADP_COLOR : 0; 842 adp->va_crtc_addr = 843 (adp->va_flags & V_ADP_COLOR) ? COLOR_CRTC : MONO_CRTC; 844 adp->va_window = BIOS_PADDRTOVADDR(info->vi_window); 845 adp->va_window_size = info->vi_window_size; 846 adp->va_window_gran = info->vi_window_gran; 847 if (info->vi_buffer_size == 0) { 848 adp->va_buffer = 0; 849 adp->va_buffer_size = 0; 850 } else { 851 adp->va_buffer = BIOS_PADDRTOVADDR(info->vi_buffer); 852 adp->va_buffer_size = info->vi_buffer_size; 853 } 854 if (info->vi_flags & V_INFO_GRAPHICS) 855 adp->va_line_width = info->vi_width/8; 856 else 857 adp->va_line_width = info->vi_width; 858 bcopy(info, &adp->va_info, sizeof(adp->va_info)); 859} 860 |
|
835#if !defined(VGA_NO_BIOS) && !defined(VGA_NO_MODE_CHANGE) 836/* compare two parameter table entries */ 837static int 838comp_adpregs(u_char *buf1, u_char *buf2) 839{ 840 static struct { 841 u_char mask; 842 } params[V_MODE_PARAM_SIZE] = { --- 129 unchanged lines hidden (view full) --- 972 biosadapter[V_ADP_PRIMARY].va_flags & V_ADP_COLOR, 973 biosadapter[V_ADP_PRIMARY].va_initial_bios_mode); 974 } else { 975 biosadapter[V_ADP_PRIMARY] = biosadapter[V_ADP_SECONDARY]; 976 biosadapter[V_ADP_SECONDARY].va_type = -1; 977 } 978 if (biosadapters == 0) 979 return biosadapters; | 861#if !defined(VGA_NO_BIOS) && !defined(VGA_NO_MODE_CHANGE) 862/* compare two parameter table entries */ 863static int 864comp_adpregs(u_char *buf1, u_char *buf2) 865{ 866 static struct { 867 u_char mask; 868 } params[V_MODE_PARAM_SIZE] = { --- 129 unchanged lines hidden (view full) --- 998 biosadapter[V_ADP_PRIMARY].va_flags & V_ADP_COLOR, 999 biosadapter[V_ADP_PRIMARY].va_initial_bios_mode); 1000 } else { 1001 biosadapter[V_ADP_PRIMARY] = biosadapter[V_ADP_SECONDARY]; 1002 biosadapter[V_ADP_SECONDARY].va_type = -1; 1003 } 1004 if (biosadapters == 0) 1005 return biosadapters; |
980#if 0 981 biosadapter[V_ADP_PRIMARY].va_index = V_ADP_PRIMARY; 982 biosadapter[V_ADP_SECONDARY].va_index = V_ADP_SECONDARY; 983#endif | |
984 biosadapter[V_ADP_PRIMARY].va_unit = V_ADP_PRIMARY; 985 biosadapter[V_ADP_SECONDARY].va_unit = V_ADP_SECONDARY; 986 987#if 0 /* we don't need these... */ 988 fb_init_struct(&biosadapter[V_ADP_PRIMARY], ...); 989 fb_init_struct(&biosadapter[V_ADP_SECONDARY], ...); 990#endif 991 --- 148 unchanged lines hidden (view full) --- 1140 biosadapter[i].va_io_size = 32; 1141 } 1142 } 1143 } 1144 1145 /* buffer address */ 1146 vga_get_info(&biosadapter[V_ADP_PRIMARY], 1147 biosadapter[V_ADP_PRIMARY].va_initial_mode, &info); | 1006 biosadapter[V_ADP_PRIMARY].va_unit = V_ADP_PRIMARY; 1007 biosadapter[V_ADP_SECONDARY].va_unit = V_ADP_SECONDARY; 1008 1009#if 0 /* we don't need these... */ 1010 fb_init_struct(&biosadapter[V_ADP_PRIMARY], ...); 1011 fb_init_struct(&biosadapter[V_ADP_SECONDARY], ...); 1012#endif 1013 --- 148 unchanged lines hidden (view full) --- 1162 biosadapter[i].va_io_size = 32; 1163 } 1164 } 1165 } 1166 1167 /* buffer address */ 1168 vga_get_info(&biosadapter[V_ADP_PRIMARY], 1169 biosadapter[V_ADP_PRIMARY].va_initial_mode, &info); |
1148 biosadapter[V_ADP_PRIMARY].va_mode_flags = info.vi_flags; 1149 biosadapter[V_ADP_PRIMARY].va_window = BIOS_PADDRTOVADDR(info.vi_window); 1150 biosadapter[V_ADP_PRIMARY].va_window_size = info.vi_window_size; 1151 biosadapter[V_ADP_PRIMARY].va_window_gran = info.vi_window_gran; 1152 if (info.vi_buffer_size == 0) { 1153 biosadapter[V_ADP_PRIMARY].va_buffer = 0; 1154 biosadapter[V_ADP_PRIMARY].va_buffer_size = 0; 1155 } else { 1156 biosadapter[V_ADP_PRIMARY].va_buffer 1157 = BIOS_PADDRTOVADDR(info.vi_buffer); 1158 biosadapter[V_ADP_PRIMARY].va_buffer_size = info.vi_buffer_size; 1159 } | 1170 update_adapter_info(&biosadapter[V_ADP_PRIMARY], &info); |
1160 1161 if (biosadapters > 1) { 1162 vga_get_info(&biosadapter[V_ADP_SECONDARY], 1163 biosadapter[V_ADP_SECONDARY].va_initial_mode, &info); | 1171 1172 if (biosadapters > 1) { 1173 vga_get_info(&biosadapter[V_ADP_SECONDARY], 1174 biosadapter[V_ADP_SECONDARY].va_initial_mode, &info); |
1164 biosadapter[V_ADP_SECONDARY].va_mode_flags = info.vi_flags; 1165 biosadapter[V_ADP_SECONDARY].va_window = 1166 BIOS_PADDRTOVADDR(info.vi_window); 1167 biosadapter[V_ADP_SECONDARY].va_window_size = info.vi_window_size; 1168 biosadapter[V_ADP_SECONDARY].va_window_gran = info.vi_window_gran; 1169 if (info.vi_buffer_size == 0) { 1170 biosadapter[V_ADP_SECONDARY].va_buffer = 0; 1171 biosadapter[V_ADP_SECONDARY].va_buffer_size = 0; 1172 } else { 1173 biosadapter[V_ADP_SECONDARY].va_buffer = 1174 BIOS_PADDRTOVADDR(info.vi_buffer); 1175 biosadapter[V_ADP_SECONDARY].va_buffer_size = info.vi_buffer_size; 1176 } | 1175 update_adapter_info(&biosadapter[V_ADP_SECONDARY], &info); |
1177 } 1178 1179 /* 1180 * XXX: we should verify the following values for the primary adapter... 1181 * crtc I/O port address: *(u_int16_t *)BIOS_PADDRTOVADDR(0x463); 1182 * color/mono display: (*(u_int8_t *)BIOS_PADDRTOVADDR(0x487) & 0x02) 1183 * ? 0 : V_ADP_COLOR; 1184 * columns: *(u_int8_t *)BIOS_PADDRTOVADDR(0x44a); --- 239 unchanged lines hidden (view full) --- 1424 vga_load_state(adp, ¶ms); 1425 break; 1426 1427 default: 1428 return 1; 1429 } 1430 1431 adp->va_mode = mode; | 1176 } 1177 1178 /* 1179 * XXX: we should verify the following values for the primary adapter... 1180 * crtc I/O port address: *(u_int16_t *)BIOS_PADDRTOVADDR(0x463); 1181 * color/mono display: (*(u_int8_t *)BIOS_PADDRTOVADDR(0x487) & 0x02) 1182 * ? 0 : V_ADP_COLOR; 1183 * columns: *(u_int8_t *)BIOS_PADDRTOVADDR(0x44a); --- 239 unchanged lines hidden (view full) --- 1423 vga_load_state(adp, ¶ms); 1424 break; 1425 1426 default: 1427 return 1; 1428 } 1429 1430 adp->va_mode = mode; |
1432 adp->va_mode_flags = info.vi_flags; 1433 adp->va_flags &= ~V_ADP_COLOR; 1434 adp->va_flags |= 1435 (info.vi_flags & V_INFO_COLOR) ? V_ADP_COLOR : 0; 1436 adp->va_crtc_addr = 1437 (adp->va_flags & V_ADP_COLOR) ? COLOR_CRTC : MONO_CRTC; 1438 adp->va_window = BIOS_PADDRTOVADDR(info.vi_window); 1439 adp->va_window_size = info.vi_window_size; 1440 adp->va_window_gran = info.vi_window_gran; 1441 if (info.vi_buffer_size == 0) { 1442 adp->va_buffer = 0; 1443 adp->va_buffer_size = 0; 1444 } else { 1445 adp->va_buffer = BIOS_PADDRTOVADDR(info.vi_buffer); 1446 adp->va_buffer_size = info.vi_buffer_size; 1447 } | 1431 update_adapter_info(adp, &info); |
1448 1449 /* move hardware cursor out of the way */ 1450 (*vidsw[adp->va_index]->set_hw_cursor)(adp, -1, -1); 1451 1452 return 0; 1453#else /* VGA_NO_MODE_CHANGE */ 1454 return 1; 1455#endif /* VGA_NO_MODE_CHANGE */ --- 549 unchanged lines hidden (view full) --- 2005 * read_hw_cursor(): 2006 * Read the position of the hardware text cursor. 2007 * 2008 * all adapters 2009 */ 2010static int 2011vga_read_hw_cursor(video_adapter_t *adp, int *col, int *row) 2012{ | 1432 1433 /* move hardware cursor out of the way */ 1434 (*vidsw[adp->va_index]->set_hw_cursor)(adp, -1, -1); 1435 1436 return 0; 1437#else /* VGA_NO_MODE_CHANGE */ 1438 return 1; 1439#endif /* VGA_NO_MODE_CHANGE */ --- 549 unchanged lines hidden (view full) --- 1989 * read_hw_cursor(): 1990 * Read the position of the hardware text cursor. 1991 * 1992 * all adapters 1993 */ 1994static int 1995vga_read_hw_cursor(video_adapter_t *adp, int *col, int *row) 1996{ |
2013 video_info_t info; | |
2014 u_int16_t off; 2015 int s; 2016 2017 if (!init_done) 2018 return 1; 2019 | 1997 u_int16_t off; 1998 int s; 1999 2000 if (!init_done) 2001 return 1; 2002 |
2020 (*vidsw[adp->va_index]->get_info)(adp, adp->va_mode, &info); 2021 if (info.vi_flags & V_INFO_GRAPHICS) | 2003 if (adp->va_info.vi_flags & V_INFO_GRAPHICS) |
2022 return 1; 2023 2024 s = spltty(); 2025 outb(adp->va_crtc_addr, 14); 2026 off = inb(adp->va_crtc_addr + 1); 2027 outb(adp->va_crtc_addr, 15); 2028 off = (off << 8) | inb(adp->va_crtc_addr + 1); 2029 splx(s); 2030 | 2004 return 1; 2005 2006 s = spltty(); 2007 outb(adp->va_crtc_addr, 14); 2008 off = inb(adp->va_crtc_addr + 1); 2009 outb(adp->va_crtc_addr, 15); 2010 off = (off << 8) | inb(adp->va_crtc_addr + 1); 2011 splx(s); 2012 |
2031 *row = off / info.vi_width; 2032 *col = off % info.vi_width; | 2013 *row = off / adp->va_info.vi_width; 2014 *col = off % adp->va_info.vi_width; |
2033 2034 return 0; 2035} 2036 2037/* 2038 * set_hw_cursor(): 2039 * Move the hardware text cursor. If col and row are both -1, 2040 * the cursor won't be shown. 2041 * 2042 * all adapters 2043 */ 2044static int 2045vga_set_hw_cursor(video_adapter_t *adp, int col, int row) 2046{ | 2015 2016 return 0; 2017} 2018 2019/* 2020 * set_hw_cursor(): 2021 * Move the hardware text cursor. If col and row are both -1, 2022 * the cursor won't be shown. 2023 * 2024 * all adapters 2025 */ 2026static int 2027vga_set_hw_cursor(video_adapter_t *adp, int col, int row) 2028{ |
2047 video_info_t info; | |
2048 u_int16_t off; 2049 int s; 2050 2051 if (!init_done) 2052 return 1; 2053 2054 if ((col == -1) && (row == -1)) { 2055 off = -1; 2056 } else { | 2029 u_int16_t off; 2030 int s; 2031 2032 if (!init_done) 2033 return 1; 2034 2035 if ((col == -1) && (row == -1)) { 2036 off = -1; 2037 } else { |
2057 (*vidsw[adp->va_index]->get_info)(adp, adp->va_mode, &info); 2058 if (info.vi_flags & V_INFO_GRAPHICS) | 2038 if (adp->va_info.vi_flags & V_INFO_GRAPHICS) |
2059 return 1; | 2039 return 1; |
2060 off = row*info.vi_width + col; | 2040 off = row*adp->va_info.vi_width + col; |
2061 } 2062 2063 s = spltty(); 2064 outb(adp->va_crtc_addr, 14); 2065 outb(adp->va_crtc_addr + 1, off >> 8); 2066 outb(adp->va_crtc_addr, 15); 2067 outb(adp->va_crtc_addr + 1, off & 0x00ff); 2068 splx(s); --- 171 unchanged lines hidden --- | 2041 } 2042 2043 s = spltty(); 2044 outb(adp->va_crtc_addr, 14); 2045 outb(adp->va_crtc_addr + 1, off >> 8); 2046 outb(adp->va_crtc_addr, 15); 2047 outb(adp->va_crtc_addr + 1, off & 0x00ff); 2048 splx(s); --- 171 unchanged lines hidden --- |