1 2 3 /* Register indices into mode state array. */ 4 5 #define VGA_CRTC_COUNT 24 6 #define VGA_ATC_COUNT 21 7 #define VGA_GRAPHICS_COUNT 9 8 #define VGA_SEQUENCER_COUNT 5 9 10 #define VGA_CRTC_OFFSET 0 /* 24 registers */ 11 #define VGA_ATC_OFFSET 24 /* 21 registers */ 12 #define VGA_GRAPHICS_OFFSET 45 /* 9 registers. */ 13 #define VGA_SEQUENCER_OFFSET 54 /* 5 registers. */ 14 #define VGA_MISCOUTPUT 59 /* (single register) */ 15 #define VGA_TOTAL_REGS 60 16 17 /* Total of 60 registers. */ 18 19 #define VGAREG_CR(i) (i) 20 #define VGAREG_AR(i) (i + VGA_ATC_OFFSET) 21 #define VGAREG_GR(i) (i + VGA_GRAPHICS_OFFSET) 22 #define VGAREG_SR(i) (i + VGA_SEQUENCER_OFFSET) 23 24 #define VGA_CR0 VGAREG_CR(0x00) 25 #define VGA_CR1 VGAREG_CR(0x01) 26 #define VGA_CR2 VGAREG_CR(0x02) 27 #define VGA_CR3 VGAREG_CR(0x03) 28 #define VGA_CR4 VGAREG_CR(0x04) 29 #define VGA_CR5 VGAREG_CR(0x05) 30 #define VGA_CR6 VGAREG_CR(0x06) 31 #define VGA_CR7 VGAREG_CR(0x07) 32 #define VGA_CR8 VGAREG_CR(0x08) 33 #define VGA_CR9 VGAREG_CR(0x09) 34 #define VGA_CRA VGAREG_CR(0x0A) 35 #define VGA_CRB VGAREG_CR(0x0B) 36 #define VGA_CRC VGAREG_CR(0x0C) 37 #define VGA_CRD VGAREG_CR(0x0D) 38 #define VGA_CRE VGAREG_CR(0x0E) 39 #define VGA_CRF VGAREG_CR(0x0F) 40 #define VGA_CR10 VGAREG_CR(0x10) 41 #define VGA_CR11 VGAREG_CR(0x11) 42 #define VGA_CR12 VGAREG_CR(0x12) 43 #define VGA_CR13 VGAREG_CR(0x13) 44 #define VGA_SCANLINEOFFSET VGAREG_CR(0x13) 45 #define VGA_CR14 VGAREG_CR(0x14) 46 #define VGA_CR15 VGAREG_CR(0x15) 47 #define VGA_CR16 VGAREG_CR(0x16) 48 #define VGA_CR17 VGAREG_CR(0x17) 49 #define VGA_CR18 VGAREG_CR(0x18) 50 51 #define VGA_AR0 VGAREG_AR(0x00) 52 #define VGA_AR10 VGAREG_AR(0x10) 53 #define VGA_AR11 VGAREG_AR(0x11) 54 #define VGA_AR12 VGAREG_AR(0x12) 55 #define VGA_AR13 VGAREG_AR(0x13) 56 #define VGA_AR14 VGAREG_AR(0x14) 57 58 #define VGA_GR0 VGAREG_GR(0x00) 59 #define VGA_GR1 VGAREG_GR(0x01) 60 #define VGA_GR2 VGAREG_GR(0x02) 61 #define VGA_GR3 VGAREG_GR(0x03) 62 #define VGA_GR4 VGAREG_GR(0x04) 63 #define VGA_GR5 VGAREG_GR(0x05) 64 #define VGA_GR6 VGAREG_GR(0x06) 65 #define VGA_GR7 VGAREG_GR(0x07) 66 #define VGA_GR8 VGAREG_GR(0x08) 67 68 #define VGA_SR0 VGAREG_SR(0x00) 69 #define VGA_SR1 VGAREG_SR(0x01) 70 #define VGA_SR2 VGAREG_SR(0x02) 71 #define VGA_SR3 VGAREG_SR(0x03) 72 #define VGA_SR4 VGAREG_SR(0x04) 73 74 75 /* 76 * Set the bits bytemask in variable bytevar with the value of bits 77 * valuemask in value (masks must match, but may be shifted relative 78 * to eachother). With proper masks, should optimize into shifts. 79 */ 80 81 #define SETBITSFROMVALUE(bytevar, bytemask, value, valuemask) \ 82 if (valuemask > bytemask) \ 83 bytevar = (bytevar & (~(unsigned char)bytemask)) \ 84 | (((value) & valuemask) / (valuemask / bytemask)); \ 85 else \ 86 bytevar = (bytevar & (~(unsigned char)bytemask)) \ 87 | (((value) & valuemask) * (bytemask / valuemask)); 88 89 /* 90 * Set bits bytemask in bytevar, with value bits (no shifting). 91 */ 92 93 #define SETBITS(bytevar, bytemask, bits) \ 94 bytevar = (bytevar & (~(unsigned char)bytemask)) + bits; 95 96 #define min(x, y) ((x) < (y) ? (x) : (y)) 97 #define LIMIT(var, lim) if (var > lim) var = lim; 98 99 100 /* Prototypes of functions defined in vgaregs.c. */ 101 102 void __svgalib_setup_VGA_registers( 103 unsigned char *moderegs, 104 ModeTiming * modetiming, 105 ModeInfo * modeinfo 106 ); 107 108 /* svgalib-2.0 source compatibility */ 109 #define __svgalib_outgra __svgalib_outGR 110 #define __svgalib_outcrtc __svgalib_outCR 111 #define __svgalib_outseq __svgalib_outSR 112 #define __svgalib_ingra __svgalib_inGR 113 #define __svgalib_incrtc __svgalib_inCR 114 #define __svgalib_inseq __svgalib_inSR 115 116 /* Write to indexed VGA register using outw. */ 117 void __svgalib_outGR(int index, unsigned char value); 118 void __svgalib_outSR(int index, unsigned char value); 119 void __svgalib_outCR(int index, unsigned char value); 120 121 /* Write to indexed VGA register using outb. */ 122 void __svgalib_outbGR(int index, unsigned char value); 123 void __svgalib_outbSR(int index, unsigned char value); 124 void __svgalib_outbCR(int index, unsigned char value); 125 126 unsigned char __svgalib_inGR(int index); 127 unsigned char __svgalib_inSR(int index); 128 unsigned char __svgalib_inCR(int index); 129