/* VGAlib version 1.2 - (c) 1993 Tommy Frandsen */ /* */ /* This library is free software; you can redistribute it and/or */ /* modify it without any restrictions. This library is distributed */ /* in the hope that it will be useful, but without any warranty. */ /* Multi-chipset support Copyright 1993 Harm Hanemaayer */ /* These are the fixed SVGA-derived 320x200x256 registers that allow for */ /* full video memory utilitization (e.g. page-flipping). */ static unsigned char g320x200x256_regs[95] = { /* CRTC */ 0x2D, 0x27, 0x2A, 0x8F, 0x2B, 0x8F, 0xC0, 0x1F, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x2C, 0x8F, 0x28, 0x00, 0x98, 0x99, 0xC3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x41, 0xFF, 0x0F, 0x00, 0x00, /* Graphics */ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0E, /* Misc. Output */ 0x6F, /* Extended CRTC */ 0xFF, 0x00, 0x00, 0x22, /* Extended Graphics */ 0x00, 0x00, 0x00, /* Extended Sequencer */ 0x0F, 0x12, 0x01, 0x80, 0x0C, 0x19, 0x4A, 0x5B, 0x45, 0x25, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x01, 0x00, 0x2B, 0x2F, 0x30, 0x2b, 0x1c, /* Cirrus DAC */ 0x00 }; static const unsigned char g640x480x256_regs[95] = { /* CRTC */ 0x5F, 0x4F, 0x50, 0x82, 0x54, 0x80, 0x0B, 0x3E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x8C, 0xDF, 0x50, 0x60, 0xE7, 0x04, 0xAB, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0E, /* misc. output */ 0xe3, /* use standard VGA dot clock 25 MHz */ /* extra CRT registers: */ 0x00, 0x00, 0x00, 0x22, /* bit 4 is high bit of scanline length */ /* extra graphics registers: */ 0x00, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x01, /* (0x07) indicates number of colors */ 0x80, 0x01, /* (0x09) bits 2-4: monitor type */ 0x19, 0x4a, 0x5b, 0x45, 0x4a, /* (0x0e) dot clock */ 0x30, /* (0x0f) bits 3-4: active video memory?, bit 7: use 2Mb */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, /* 'Performance Tuning Register', default is 0xd8. */ /* 0xd8 = 11011000 write delay = 3, I/O delay = 2 */ /* 0xc8 = 11001000 write delay = 2, I/O delay = 2 */ 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x2b, /* (0x1e) dot clock */ 0x1c, /* Internal memory clock. Not changed. */ 0x00 /* Hicolor DAC */ }; static const unsigned char g640x480x32K_regs[95] = { /* CRTC */ 0x5F, 0x4F, 0x50, 0x82, 0x54, 0x80, 0x0B, 0x3E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x8C, 0xDF, 0xa0, /* (0x13) bytes in scanline (was 0x50) */ 0x60, 0xE7, 0x04, 0xAB, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x07, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0E, /* misc. output */ 0xEF, /* use VLCK3 (was 0xE3: VGA 25Mhz) */ /* extra CRT registers: */ 0x00, 0x00, 0x00, 0x22, /* bit 0: ?; bit 2: ? (frame); bit 6: wrap at 256K */ /* extra graphics registers: */ 0x20, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x03, /* (0x07) indicates number of colors */ 0x80, 0x0d, /* (0x09) bits 2-4: monitor type */ 0x19, 0x4a, 0x5b, 0x45, 0x65, /* (0x0e) dot clock (bytes): 49.87 MHz */ 0x30, /* (0x0f) bits 3-4: active video memory?, bit 7: use 2Mb */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x3a, /* (0x1e) dot clock */ 0x1c, 0xf0 /* Hicolor DAC */ }; static const unsigned char g640x480x16M_regs[95] = { /* CRTC */ 0x5F, 0x4F, 0x50, 0x82, 0x54, 0x80, 0x0B, 0x3E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x8C, 0xDF, 0xf0, /* (0x13) bytes in scanline / 8 */ 0x60, 0xE7, 0x04, 0xAB, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40 for other modes */ 0x05, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0E, /* misc. output */ 0xEF, /* use VLCK3 (was 0xE3: VGA 25Mhz) */ /* extra CRT registers: */ 0x00, 0x00, 0x00, 0x22, /* bit 0: ?; bit 2: ? (frame); bit 6: wrap at 256K */ /* extra graphics registers: */ 0x20, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x05, /* (0x07) indicates number of colors */ 0x80, 0x0d, /* (0x09) bits 2-4: monitor type */ 0x19, 0x4a, 0x5b, 0x45, 0x3a, /* (0x0e) dot clock (bytes): 75 MHz */ 0x30, /* (0x0f) bits 3-4: active video memory?, bit 7: use 2Mb */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, /* 0xd8 for other modes */ 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x16, /* (0x1e) dot clock */ 0x1c, 0xe5 /* Hicolor DAC */ }; static const unsigned char g800x600x256_regs[95] = { /* CRTC */ 0x7b, 0x63, 0x64, 0x9e, 0x69, 0x92, 0x6f, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0xbc, 0x58, 0x8a, 0x57, 0x64, 0x00, 0x58, 0x6f, 0xe3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0E, /* misc. output */ 0x2f, /* extra CRT registers: */ 0xff, 0x00, /* interlaced: CR0 / 2? */ 0x00, /* sync overflow bits; bit 0 set for interlaced */ 0x22, /* note: bit 4 is high bit of logical scanline length */ /* extra graphics registers: */ 0x00, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x01, 0x80, 0x05, /* (0x09) monitor type */ 0x19, 0x4a, 0x5b, 0x45, 0x7e, /* (0x0e) dot clock: 36 MHz */ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x33, /* (0x1e) dot clock */ 0x1c, 0x00 /* Hicolor DAC */ }; static const unsigned char g800x600x16_regs[95] = { /* CRTC */ 0x7b, 0x63, 0x64, 0x9e, 0x69, 0x92, 0x6f, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc8, 0x58, 0x8a, 0x57, 0x32, 0x00, 0x58, 0x6f, 0xe3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x06, /* misc. output */ 0x2f, /* extra CRT registers: */ 0xff, 0x00, 0x00, 0x22, /* extra graphics registers: */ 0x00, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x00, 0x80, 0x05, 0x19, 0x4a, 0x5b, 0x45, 0x7e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x33, 0x1c, /* Hicolor DAC */ 0x00 }; /* Interlaced. */ static const unsigned char g1024x768x16i_regs[95] = { /* CRTC */ 0x99, 0x7f, 0x80, 0x9c, 0x83, 0x19, 0x96, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x84, 0x7f, 0x40, 0x00, 0x80, 0x96, 0xe3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x06, /* misc. output */ 0x2f, /* extra CRT registers: */ 0xff, 0x4a, 0x01, 0x22, /* extra graphics registers: */ 0x00, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x00, 0x80, 0x0c, 0x19, 0x4a, 0x5b, 0x45, 0x55, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x36, 0x1c, /* Hicolor DAC */ 0x00 }; /* Non-interlaced. */ static const unsigned char g1024x768x16_regs[95] = { /* CRTC */ 0xa1, 0x7f, 0x80, 0x84, 0x84, 0x92, 0x2a, 0xfd, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x89, 0xff, 0x40, 0x00, 0x00, 0x2a, 0xe3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF, /* Sequencer */ 0x00, 0x01, 0x0F, 0x00, 0x06, /* misc. output */ 0xef, /* extra CRT registers: */ 0xff, 0x4a, 0x00, 0x22, /* extra graphics registers: */ 0x00, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x00, 0x80, 0x1c, 0x51, 0x4a, 0x5b, 0x45, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x24, 0x1c, /* Hicolor DAC */ 0x00 }; static const unsigned char g1280x1024x16i_regs[95] = { /* CRTC */ 0xbd, 0x9f, 0xa0, 0x80, 0xa4, 0x19, 0x2a, 0xb2, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0b, 0x80, 0xff, 0x50, 0x00, 0x00, 0x2a, 0xe3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF, /* Sequencer */ 0x00, 0x01, 0x0F, 0x00, 0x06, /* misc. output */ 0xef, /* extra CRT registers: */ 0xff, 0x60, 0x01, 0x22, /* extra graphics registers: */ 0x00, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x00, 0x80, 0x1c, 0x51, 0x4a, 0x5b, 0x45, 0x6e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x2a, 0x1c, /* Hicolor DAC */ 0x00 }; static const unsigned char g800x600x32K_regs[95] = { /* CRTC */ 0x7b, 0x63, 0x64, 0x9e, 0x69, 0x92, 0x6f, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0xbc, 0x58, 0x8a, 0x57, 0xc8, /* bytes in scanline / 8 */ 0x00, 0x58, 0x6f, 0xe3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x07, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0E, /* misc. output */ 0xef, /* extra CRT registers: */ 0xff, 0x00, /* interlaced: CR0 / 2? */ 0x00, /* sync overflow bits; bit 0 set for interlaced */ 0x22, /* note: bit 4 is high bit of logical scanline length */ /* extra graphics registers: */ 0x10, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x03, 0x80, 0x0d, /* (0x09) monitor type */ 0x19, 0x4a, 0x5b, 0x45, 0x7e, /* (0x0e) dot clock: 72 MHz */ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x32, /* (0x1e) dot clock */ 0x1c, 0xf0 /* Hicolor DAC */ }; #if CIRRUS_HIGHDOTCLOCK static const unsigned char g800x600x16M_regs[95] = { /* CRTC */ 0x7b, 0x63, 0x64, 0x9e, 0x69, 0x92, 0x6f, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0xbc, 0x58, 0x8a, 0x57, 0x2c, /* (0x13) bytes in scanline / 8 */ 0x00, 0x58, 0x6f, 0xe3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0E, /* misc. output */ 0xEF, /* use VLCK3 */ /* extra CRT registers: */ 0x00, 0x00, 0x00, 0x32, /* bit 4: high bit of logical scanline length (set) */ /* extra graphics registers: */ 0x20, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x05, /* (0x07) indicates number of colors */ 0x80, 0x0d, /* (0x09) bits 2-4: monitor type */ 0x19, 0x4a, 0x5b, 0x45, (CIRRUS_HIGHDOTCLOCK == 1 ? 0x5e : 0x52), /* (0x0e) dot clock (bytes): 96.1 MHz / 108.3 MHz */ 0xb0, /* (0x0f) bits 3-4: active video memory?, bit 7: use 2Mb */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, (CIRRUS_HIGHDOTCLOCK == 1 ? 0x1c : 0x16), /* (0x1e) dot clock: 96.1 MHz / 108.3 MHz */ 0x1c, 0xe5 /* Hicolor DAC */ }; #endif /* Interlaced */ static const unsigned char g1024x768x256i_regs[95] = { /* CRTC */ 0x99, 0x7F, 0x80, 0x9c, 0x83, 0x19, 0x96, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x80, 0x84, 0x7F, 0x80, 0x00, 0x80, 0x96, 0xE3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0E, /* misc. output */ 0x2f, /* extra CRT registers: */ 0xff, 0x4a, 0x01, 0x22, /* extra graphics registers: */ 0x10, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x01, 0x80, 0x04, 0x19, 0x4a, 0x5b, 0x45, 0x55, /* (0x0e) dot clock: 45 MHz */ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x36, /* (0x1e) dot clock */ 0x1c, 0x00 /* Hicolor DAC */ }; /* Non-interlaced. */ static const unsigned char g1024x768x256_regs[95] = { /* CRTC */ 0xa1, 0x7f, 0x80, 0x84, 0x84, 0x92, 0x2a, 0xfd, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x89, 0xff, 0x80, 0x00, 0x00, 0x2a, 0xe3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0e, /* misc. output */ 0xef, /* extra CRT registers: */ 0xff, 0x4a, 0x00, 0x22, /* extra graphics registers: */ 0x10, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x01, 0x80, 0x1c, 0x51, 0x4a, 0x5b, 0x45, 0x61, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x24, 0x1c, /* Hicolor DAC */ 0x00 }; /* Interlaced */ static const unsigned char g1024x768x32K_regs[95] = { /* CRTC */ 0x99, 0x7F, 0x80, 0x9c, 0x83, 0x19, 0x96, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x80, 0x84, 0x7F, 0x00, 0x00, 0x80, 0x96, 0xE3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x07, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0E, /* misc. output */ 0x2f, /* extra CRT registers: */ 0xff, 0x4a, 0x01, 0x32, /* extra graphics registers: */ 0x00, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x07, 0x80, 0x0d, 0x19, 0x4a, 0x5b, 0x45, 0x55, /* (0x0e) dot clock: 45 MHz */ 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x36, /* (0x1e) dot clock */ 0x1c, 0xf0 /* Hicolor DAC */ }; static const unsigned char g320x200x32K_regs[95] = { /* CRTC */ 0x2d, 0x27, 0x27, 0x91, 0x2a, 0x90, 0xbf, 0x1f, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x90, 0x9c, 0x8e, 0x8f, 0x50, 0x00, 0x97, 0xb8, 0xe3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x07, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0E, /* misc. output */ 0x63, /* extra CRT registers: */ 0xff, 0x00, 0x00, 0x22, /* extra graphics registers: */ 0x00, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x03, /* (0x07) indicates number of colors */ 0x80, 0x01, /* (0x09) bits 2-4: monitor type */ 0x19, 0x4a, 0x5b, 0x45, 0x7e, /* (0x0e) dot clock */ 0x30, /* (0x0f) bits 3-4: active video memory?, bit 7: use 2Mb */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x33, /* (0x1e) dot clock */ 0x1c, 0xf0 /* Hicolor DAC */ }; static const unsigned char g320x200x16M_regs[95] = { /* CRTC */ 0x2d, 0x27, 0x27, 0x91, 0x2a, 0x90, 0xbf, 0x1f, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x90, 0x9c, 0x8e, 0x8f, 0x78, 0x00, 0x97, 0xb8, 0xe3, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0F, 0xFF, /* Sequencer */ 0x03, 0x01, 0x0F, 0x00, 0x0E, /* misc. output */ 0x6f, /* extra CRT registers: */ 0xff, 0x00, 0x00, 0x22, /* extra graphics registers: */ 0x00, 0x00, 0x00, /* extra sequencer registers: */ 0x0f, 0x12, 0x05, /* (0x07) indicates number of colors */ 0x80, 0x01, /* (0x09) bits 2-4: monitor type */ 0x19, 0x4a, 0x5b, 0x45, 0x1d, /* (0x0e) dot clock */ 0x30, /* (0x0f) bits 3-4: active video memory?, bit 7: use 2Mb */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x30, 0x16, /* (0x1e) dot clock */ 0x1c, 0xe5 /* Hicolor DAC */ }; #define g320x200x64K_regs g320x200x32K_regs #define g640x480x64K_regs g640x480x32K_regs #define g800x600x64K_regs g800x600x32K_regs #define g1024x768x64K_regs g1024x768x32K_regs /* 1280x1024x256, 60 Hz */ /* Uses special multiplexing mode on the 5434. */ /* More registers, different format. */ static const unsigned char g1280x1024x256_regs543x[] = { /* CRTC */ 0x63, 0x4f, 0x50, 0x9a, 0x53, 0x1e, 0x15, 0xb2, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x88, 0xff, 0xa0, 0x00, 0x00, 0x12, 0xe7, /* ATC */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x41, 0x00, 0x0F, 0x00, 0x00, /* Graphics */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f, 0xff, /* Sequencer */ 0x03, 0x01, 0x0f, 0x00, 0x0e, /* Misc. Output */ 0xef, /* Hidden DAC */ 0x4a, /* Extended Sequencer */ 0x0f, 0x12, 0x07, 0x00, 0x68, 0x33, 0x4a, 0x5b, 0x42, 0x53, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x78, 0x31, 0x00, 0x01, 0x00, 0x2b, 0x2f, 0x1f, 0x16, 0x1c, /* Extended CRTC */ 0xff, 0x00, 0x00, 0x22, 0x00, 0x00, 0x21, 0x20, 0x1f, 0x1e, 0x07, 0x00, 0x00, 0x26, 0x20, /* Extended Graphics */ 0x00, 0x00, 0x20, 0xff, 0x00 };