1 /* $XFree86$ */ 2 /* $XdotOrg$ */ 3 /* 4 * Register settings for SiS 300 series 5 * 6 * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria 7 * 8 * If distributed as part of the Linux kernel, the following license terms 9 * apply: 10 * 11 * * This program is free software; you can redistribute it and/or modify 12 * * it under the terms of the GNU General Public License as published by 13 * * the Free Software Foundation; either version 2 of the named License, 14 * * or any later version. 15 * * 16 * * This program is distributed in the hope that it will be useful, 17 * * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * * GNU General Public License for more details. 20 * * 21 * * You should have received a copy of the GNU General Public License 22 * * along with this program; if not, write to the Free Software 23 * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA 24 * 25 * Otherwise, the following license terms apply: 26 * 27 * * Redistribution and use in source and binary forms, with or without 28 * * modification, are permitted provided that the following conditions 29 * * are met: 30 * * 1) Redistributions of source code must retain the above copyright 31 * * notice, this list of conditions and the following disclaimer. 32 * * 2) Redistributions in binary form must reproduce the above copyright 33 * * notice, this list of conditions and the following disclaimer in the 34 * * documentation and/or other materials provided with the distribution. 35 * * 3) The name of the author may not be used to endorse or promote products 36 * * derived from this software without specific prior written permission. 37 * * 38 * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 39 * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 40 * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 41 * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 42 * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 43 * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 44 * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 45 * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 46 * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 47 * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 48 * 49 * Author: Thomas Winischhofer <thomas@winischhofer.net> 50 * 51 */ 52 53 static const struct SiS_Ext SiS300_EModeIDTable[] = 54 { 55 {0x6a,0x2212,0x0102,SIS_RI_800x600, 0x00,0x00,0x00,0x00,0x00,-1}, /* 800x600x? */ 56 {0x2e,0x0a1b,0x0101,SIS_RI_640x480, 0x00,0x00,0x00,0x00,0x08,-1}, 57 {0x2f,0x021b,0x0100,SIS_RI_640x400, 0x00,0x00,0x00,0x00,0x10,-1}, /* 640x400x8 */ 58 {0x30,0x2a1b,0x0103,SIS_RI_800x600, 0x00,0x00,0x00,0x00,0x00,-1}, 59 {0x31,0x4a1b,0x0000,SIS_RI_720x480, 0x00,0x00,0x00,0x00,0x11,-1}, /* 720x480x8 */ 60 {0x32,0x6a1b,0x0000,SIS_RI_720x576, 0x00,0x00,0x00,0x00,0x12,-1}, /* 720x576x8 */ 61 {0x33,0x4a1d,0x0000,SIS_RI_720x480, 0x00,0x00,0x00,0x00,0x11,-1}, /* 720x480x16 */ 62 {0x34,0x6a1d,0x0000,SIS_RI_720x576, 0x00,0x00,0x00,0x00,0x12,-1}, /* 720x576x16 */ 63 {0x35,0x4a1f,0x0000,SIS_RI_720x480, 0x00,0x00,0x00,0x00,0x11,-1}, /* 720x480x32 */ 64 {0x36,0x6a1f,0x0000,SIS_RI_720x576, 0x00,0x00,0x00,0x00,0x12,-1}, /* 720x576x32 */ 65 {0x37,0x0212,0x0104,SIS_RI_1024x768, 0x00,0x00,0x00,0x00,0x13,-1}, /* 1024x768x? */ 66 {0x38,0x0a1b,0x0105,SIS_RI_1024x768, 0x00,0x00,0x00,0x00,0x13,-1}, /* 1024x768x8 */ 67 {0x3a,0x0e3b,0x0107,SIS_RI_1280x1024,0x00,0x00,0x00,0x00,0x1a,-1}, /* 1280x1024x8 */ 68 {0x3c,0x063b,0x0130,SIS_RI_1600x1200,0x00,0x00,0x00,0x00,0x1e,-1}, 69 {0x3d,0x067d,0x0131,SIS_RI_1600x1200,0x00,0x00,0x00,0x00,0x1e,-1}, 70 {0x40,0x921c,0x010d,SIS_RI_320x200, 0x00,0x00,0x00,0x00,0x23,-1}, /* 320x200x15 */ 71 {0x41,0x921d,0x010e,SIS_RI_320x200, 0x00,0x00,0x00,0x00,0x23,-1}, /* 320x200x16 */ 72 {0x43,0x0a1c,0x0110,SIS_RI_640x480, 0x00,0x00,0x00,0x00,0x08,-1}, 73 {0x44,0x0a1d,0x0111,SIS_RI_640x480, 0x00,0x00,0x00,0x00,0x08,-1}, 74 {0x46,0x2a1c,0x0113,SIS_RI_800x600, 0x00,0x00,0x00,0x00,0x00,-1}, /* 800x600x15 */ 75 {0x47,0x2a1d,0x0114,SIS_RI_800x600, 0x00,0x00,0x00,0x00,0x00,-1}, /* 800x600x16 */ 76 {0x49,0x0a3c,0x0116,SIS_RI_1024x768, 0x00,0x00,0x00,0x00,0x13,-1}, 77 {0x4a,0x0a3d,0x0117,SIS_RI_1024x768, 0x00,0x00,0x00,0x00,0x13,-1}, 78 {0x4c,0x0e7c,0x0119,SIS_RI_1280x1024,0x00,0x00,0x00,0x00,0x1a,-1}, 79 {0x4d,0x0e7d,0x011a,SIS_RI_1280x1024,0x00,0x00,0x00,0x00,0x1a,-1}, 80 {0x50,0x921b,0x0132,SIS_RI_320x240, 0x00,0x00,0x00,0x00,0x24,-1}, /* 320x240x8 */ 81 {0x51,0xb21b,0x0133,SIS_RI_400x300, 0x00,0x00,0x00,0x00,0x25,-1}, /* 400x300x8 */ 82 {0x52,0x921b,0x0134,SIS_RI_512x384, 0x00,0x00,0x00,0x00,0x26,-1}, /* 512x384x8 */ 83 {0x56,0x921d,0x0135,SIS_RI_320x240, 0x00,0x00,0x00,0x00,0x24,-1}, /* 320x240x16 */ 84 {0x57,0xb21d,0x0136,SIS_RI_400x300, 0x00,0x00,0x00,0x00,0x25,-1}, /* 400x300x16 */ 85 {0x58,0x921d,0x0137,SIS_RI_512x384, 0x00,0x00,0x00,0x00,0x26,-1}, /* 512x384x16 */ 86 {0x59,0x921b,0x0138,SIS_RI_320x200, 0x00,0x00,0x00,0x00,0x23,-1}, /* 320x200x8 */ 87 {0x5c,0x921f,0x0000,SIS_RI_512x384, 0x00,0x00,0x00,0x00,0x26,-1}, /* 512x384x32 */ 88 {0x5d,0x021d,0x0139,SIS_RI_640x400, 0x00,0x00,0x00,0x00,0x10,-1}, /* 640x400x16 */ 89 {0x5e,0x021f,0x0000,SIS_RI_640x400, 0x00,0x00,0x00,0x00,0x10,-1}, /* 640x400x32 */ 90 {0x62,0x0a3f,0x013a,SIS_RI_640x480, 0x00,0x00,0x00,0x00,0x08,-1}, 91 {0x63,0x2a3f,0x013b,SIS_RI_800x600, 0x00,0x00,0x00,0x00,0x00,-1}, /* 800x600x32 */ 92 {0x64,0x0a7f,0x013c,SIS_RI_1024x768, 0x00,0x00,0x00,0x00,0x13,-1}, 93 {0x65,0x0eff,0x013d,SIS_RI_1280x1024,0x00,0x00,0x00,0x00,0x1a,-1}, 94 {0x66,0x06ff,0x013e,SIS_RI_1600x1200,0x00,0x00,0x00,0x00,0x1e,-1}, 95 {0x68,0x067b,0x013f,SIS_RI_1920x1440,0x00,0x00,0x00,0x00,0x27,-1}, 96 {0x69,0x06fd,0x0140,SIS_RI_1920x1440,0x00,0x00,0x00,0x00,0x27,-1}, 97 {0x6b,0x07ff,0x0000,SIS_RI_1920x1440,0x00,0x00,0x00,0x00,0x27,-1}, 98 {0x6c,0x067b,0x0000,SIS_RI_2048x1536,0x00,0x00,0x00,0x00,0x28,-1}, /* 2048x1536x8 */ 99 {0x6d,0x06fd,0x0000,SIS_RI_2048x1536,0x00,0x00,0x00,0x00,0x28,-1}, /* 2048x1536x16 */ 100 {0x70,0x6a1b,0x0000,SIS_RI_800x480, 0x00,0x00,0x07,0x00,0x2d,-1}, /* 800x480x8 */ 101 {0x71,0x4a1b,0x0000,SIS_RI_1024x576, 0x00,0x00,0x00,0x00,0x30,-1}, /* 1024x576x8 */ 102 {0x74,0x4a1d,0x0000,SIS_RI_1024x576, 0x00,0x00,0x00,0x00,0x30,-1}, /* 1024x576x16 */ 103 {0x75,0x0e3d,0x0000,SIS_RI_1280x720, 0x00,0x00,0x00,0x00,0x33,-1}, /* 1280x720x16 */ 104 {0x76,0x6a1f,0x0000,SIS_RI_800x480, 0x00,0x00,0x07,0x00,0x2d,-1}, /* 800x480x32 */ 105 {0x77,0x4a3f,0x0000,SIS_RI_1024x576, 0x00,0x00,0x00,0x00,0x30,-1}, /* 1024x576x32 */ 106 {0x78,0x0eff,0x0000,SIS_RI_1280x720, 0x00,0x00,0x00,0x00,0x33,-1}, /* 1280x720x32 */ 107 {0x79,0x0e3b,0x0000,SIS_RI_1280x720, 0x00,0x00,0x00,0x00,0x33,-1}, /* 1280x720x8 */ 108 {0x7a,0x6a1d,0x0000,SIS_RI_800x480, 0x00,0x00,0x07,0x00,0x2d,-1}, /* 800x480x16 */ 109 {0x7c,0x0a3b,0x0000,SIS_RI_1280x960, 0x00,0x00,0x00,0x00,0x29,-1}, /* 1280x960x8 */ 110 {0x7d,0x0a7d,0x0000,SIS_RI_1280x960, 0x00,0x00,0x00,0x00,0x29,-1}, /* 1280x960x16 */ 111 {0x7e,0x0aff,0x0000,SIS_RI_1280x960, 0x00,0x00,0x00,0x00,0x29,-1}, /* 1280x960x32 */ 112 {0x20,0x4a1b,0x0000,SIS_RI_1024x600, 0x00,0x00,0x00,0x00,0x2b,-1}, /* 1024x600 */ 113 {0x21,0x4a3d,0x0000,SIS_RI_1024x600, 0x00,0x00,0x00,0x00,0x2b,-1}, 114 {0x22,0x4a7f,0x0000,SIS_RI_1024x600, 0x00,0x00,0x00,0x00,0x2b,-1}, 115 {0x23,0x4a1b,0x0000,SIS_RI_1152x768, 0x00,0x00,0x00,0x00,0x2c,-1}, /* 1152x768 */ 116 {0x24,0x4a3d,0x0000,SIS_RI_1152x768, 0x00,0x00,0x00,0x00,0x2c,-1}, 117 {0x25,0x4a7f,0x0000,SIS_RI_1152x768, 0x00,0x00,0x00,0x00,0x2c,-1}, 118 {0x29,0x4e1b,0x0000,SIS_RI_1152x864, 0x00,0x00,0x00,0x00,0x36,-1}, /* 1152x864 */ 119 {0x2a,0x4e3d,0x0000,SIS_RI_1152x864, 0x00,0x00,0x00,0x00,0x36,-1}, 120 {0x2b,0x4e7f,0x0000,SIS_RI_1152x864, 0x00,0x00,0x00,0x00,0x36,-1}, 121 {0x39,0x6a1b,0x0000,SIS_RI_848x480, 0x00,0x00,0x00,0x00,0x39,-1}, /* 848x480 */ 122 {0x3b,0x6a3d,0x0000,SIS_RI_848x480, 0x00,0x00,0x00,0x00,0x39,-1}, 123 {0x3e,0x6a7f,0x0000,SIS_RI_848x480, 0x00,0x00,0x00,0x00,0x39,-1}, 124 {0x3f,0x6a1b,0x0000,SIS_RI_856x480, 0x00,0x00,0x00,0x00,0x3b,-1}, /* 856x480 */ 125 {0x42,0x6a3d,0x0000,SIS_RI_856x480, 0x00,0x00,0x00,0x00,0x3b,-1}, 126 {0x45,0x6a7f,0x0000,SIS_RI_856x480, 0x00,0x00,0x00,0x00,0x3b,-1}, 127 {0x48,0x6a3b,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x3d,-1}, /* 1360x768 */ 128 {0x4b,0x6a7d,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x3d,-1}, 129 {0x4e,0x6aff,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x3d,-1}, 130 {0x4f,0x921f,0x0000,SIS_RI_320x200, 0x00,0x00,0x00,0x00,0x23,-1}, /* 320x200x32 */ 131 {0x53,0x921f,0x0000,SIS_RI_320x240, 0x00,0x00,0x00,0x00,0x24,-1}, /* 320x240x32 */ 132 {0x54,0xb21f,0x0000,SIS_RI_400x300, 0x00,0x00,0x00,0x00,0x25,-1}, /* 400x300x32 */ 133 {0x55,0x2e3b,0x0000,SIS_RI_1280x768, 0x00,0x00,0x00,0x00,0x3e,-1}, /* 1280x768 */ 134 {0x5a,0x2e7d,0x0000,SIS_RI_1280x768, 0x00,0x00,0x00,0x00,0x3e,-1}, 135 {0x5b,0x2eff,0x0000,SIS_RI_1280x768, 0x00,0x00,0x00,0x00,0x3e,-1}, 136 {0x5f,0x6a1b,0x0000,SIS_RI_768x576, 0x00,0x00,0x00,0x00,0x3f,-1}, /* 768x576x8 */ 137 {0x60,0x6a1d,0x0000,SIS_RI_768x576, 0x00,0x00,0x00,0x00,0x3f,-1}, /* 768x576x16 */ 138 {0x61,0x6a1f,0x0000,SIS_RI_768x576, 0x00,0x00,0x00,0x00,0x3f,-1}, /* 768x576x32 */ 139 {0x67,0x6e3b,0x0000,SIS_RI_1360x1024,0x00,0x00,0x00,0x00,0x40,-1}, /* 1360x1024x8 (BARCO) */ 140 {0x6f,0x6e7d,0x0000,SIS_RI_1360x1024,0x00,0x00,0x00,0x00,0x40,-1}, /* 1360x1024x16 (BARCO) */ 141 {0x72,0x6eff,0x0000,SIS_RI_1360x1024,0x00,0x00,0x00,0x00,0x40,-1}, /* 1360x1024x32 (BARCO) */ 142 {0xff,0x0000,0xffff,0, 0x00,0x00,0x00,0x00,0x00} 143 }; 144 145 static const struct SiS_Ext2 SiS300_RefIndex[] = 146 { 147 {0x085f,0x0d,0x03,0x05,0x05,0x6a, 800, 600, 0, 0x00, 0x00}, /* 00 */ 148 {0x0467,0x0e,0x04,0x05,0x05,0x6a, 800, 600, 0, 0x00, 0x00}, /* 01 */ 149 {0x0067,0x0f,0x07,0x48,0x05,0x6a, 800, 600, 0, 0x00, 0x00}, /* 02 - CRT1CRTC was 0x4f */ 150 {0x0067,0x10,0x06,0x8b,0x05,0x6a, 800, 600, 0, 0x00, 0x00}, /* 03 */ 151 {0x0147,0x11,0x08,0x00,0x05,0x6a, 800, 600, 0, 0x00, 0x00}, /* 04 */ 152 {0x0147,0x12,0x0c,0x00,0x05,0x6a, 800, 600, 0, 0x00, 0x00}, /* 05 */ 153 {0x0047,0x11,0x0e,0x00,0x05,0x6a, 800, 600, 0, 0x00, 0x00}, /* 06 - CRT1CRTC was 0x51 */ 154 {0x0047,0x11,0x13,0x00,0x05,0x6a, 800, 600, 0, 0x00, 0x00}, /* 07 */ 155 {0xc85f,0x05,0x00,0x04,0x04,0x2e, 640, 480, 0, 0x00, 0x00}, /* 08 */ 156 {0xc067,0x06,0x02,0x04,0x04,0x2e, 640, 480, 0, 0x00, 0x00}, /* 09 */ 157 {0xc067,0x07,0x02,0x47,0x04,0x2e, 640, 480, 0, 0x00, 0x00}, /* 0a */ 158 {0xc067,0x08,0x03,0x8a,0x04,0x2e, 640, 480, 0, 0x00, 0x00}, /* 0b */ 159 {0xc047,0x09,0x05,0x00,0x04,0x2e, 640, 480, 0, 0x00, 0x00}, /* 0c */ 160 {0xc047,0x0a,0x08,0x00,0x04,0x2e, 640, 480, 0, 0x00, 0x00}, /* 0d */ 161 {0xc047,0x0b,0x0a,0x00,0x04,0x2e, 640, 480, 0, 0x00, 0x00}, /* 0e */ 162 {0xc047,0x0c,0x10,0x00,0x04,0x2e, 640, 480, 0, 0x00, 0x00}, /* 0f */ 163 {0x487f,0x04,0x00,0x00,0x00,0x2f, 640, 400, 0, 0x4a, 0x49}, /* 10 */ 164 {0xc06f,0x31,0x01,0x06,0x13,0x31, 720, 480, 0, 0x00, 0x00}, /* 11 */ 165 {0x006f,0x32,0x4a,0x06,0x14,0x32, 720, 576, 0, 0x00, 0x00}, /* 12 */ /* 4a was 03 */ 166 {0x0187,0x15,0x05,0x00,0x06,0x37,1024, 768, 0, 0x00, 0x00}, /* 13 */ 167 {0xc877,0x16,0x09,0x06,0x06,0x37,1024, 768, 0, 0x00, 0x00}, /* 14 */ 168 {0xc067,0x17,0x0b,0x49,0x06,0x37,1024, 768, 0, 0x00, 0x00}, /* 15 - CRT1CRTC was 0x97 */ 169 {0x0267,0x18,0x0d,0x00,0x06,0x37,1024, 768, 0, 0x00, 0x00}, /* 16 */ 170 {0x0047,0x19,0x11,0x8c,0x06,0x37,1024, 768, 0, 0x00, 0x00}, /* 17 - CRT1CRTC was 0x59 */ 171 {0x0047,0x1a,0x12,0x00,0x06,0x37,1024, 768, 0, 0x00, 0x00}, /* 18 */ 172 {0x0007,0x1b,0x16,0x00,0x06,0x37,1024, 768, 0, 0x00, 0x00}, /* 19 - CRT1CRTC was 0x5b */ 173 {0x0387,0x1c,0x0d,0x00,0x07,0x3a,1280,1024, 0, 0x00, 0x00}, /* 1a - CRT1CRTC was 0x5c */ 174 {0x0077,0x1d,0x14,0x07,0x07,0x3a,1280,1024, 0, 0x00, 0x00}, /* 1b */ 175 {0x0047,0x1e,0x17,0x00,0x07,0x3a,1280,1024, 0, 0x00, 0x00}, /* 1c */ 176 {0x0007,0x1f,0x18,0x00,0x07,0x3a,1280,1024, 0, 0x00, 0x00}, /* 1d */ 177 {0x0007,0x20,0x19,0x00,0x00,0x3c,1600,1200, 0, 0x00, 0x00}, /* 1e - CRT1CRTC was 0x60 */ 178 {0x0007,0x21,0x1a,0x00,0x00,0x3c,1600,1200, 0, 0x00, 0x00}, /* 1f */ 179 {0x0007,0x22,0x1b,0x00,0x00,0x3c,1600,1200, 0, 0x00, 0x00}, /* 20 */ 180 {0x0007,0x23,0x1d,0x00,0x00,0x3c,1600,1200, 0, 0x00, 0x00}, /* 21 - CRT1CRTC was 0x63 */ 181 {0x0007,0x24,0x1e,0x00,0x00,0x3c,1600,1200, 0, 0x00, 0x00}, /* 22 */ 182 {0x407f,0x00,0x00,0x00,0x00,0x40, 320, 200, 0, 0x4b, 0x4b}, /* 23 */ 183 {0xc07f,0x01,0x00,0x04,0x04,0x50, 320, 240, 0, 0x00, 0x00}, /* 24 */ 184 {0x0077,0x02,0x04,0x05,0x05,0x51, 400, 300, 0, 0x00, 0x00}, /* 25 */ 185 {0xc877,0x03,0x09,0x06,0x06,0x52, 512, 384, 0, 0x00, 0x00}, /* 26 */ /* was c077 */ 186 {0x8207,0x25,0x1f,0x00,0x00,0x68,1920,1440, 0, 0x00, 0x00}, /* 27 */ 187 {0x0007,0x26,0x20,0x00,0x00,0x6c,2048,1536, 0, 0x00, 0x00}, /* 28 */ 188 {0x0067,0x27,0x14,0x08,0x0a,0x6e,1280, 960, 0, 0x00, 0x00}, /* 29 - 1280x960-60 */ 189 {0x0027,0x45,0x3c,0x08,0x0a,0x6e,1280, 960, 0, 0x00, 0x00}, /* 2a - 1280x960-85 */ 190 {0xc077,0x33,0x09,0x06,0x00,0x20,1024, 600, 0, 0x00, 0x00}, /* 2b */ 191 {0xc077,0x34,0x0b,0x06,0x00,0x23,1152, 768, 0, 0x00, 0x00}, /* 2c */ /* VCLK 0x09 */ 192 {0x0077,0x35,0x27,0x08,0x18,0x70, 800, 480, 0, 0x00, 0x00}, /* 2d */ 193 {0x0047,0x36,0x37,0x08,0x18,0x70, 800, 480, 0, 0x00, 0x00}, /* 2e */ 194 {0x0047,0x37,0x08,0x08,0x18,0x70, 800, 480, 0, 0x00, 0x00}, /* 2f */ 195 {0x0077,0x38,0x09,0x09,0x19,0x71,1024, 576, 0, 0x00, 0x00}, /* 30 */ 196 {0x0047,0x39,0x38,0x09,0x19,0x71,1024, 576, 0, 0x00, 0x00}, /* 31 */ 197 {0x0047,0x3a,0x11,0x09,0x19,0x71,1024, 576, 0, 0x00, 0x00}, /* 32 */ 198 {0x0077,0x3b,0x39,0x0a,0x0c,0x75,1280, 720, 0, 0x00, 0x00}, /* 33 */ 199 {0x0047,0x3c,0x3a,0x0a,0x0c,0x75,1280, 720, 0, 0x00, 0x00}, /* 34 */ 200 {0x0007,0x3d,0x3b,0x0a,0x0c,0x75,1280, 720, 0, 0x00, 0x00}, /* 35 */ 201 {0x0067,0x49,0x35,0x06,0x1a,0x29,1152, 864, 0, 0x00, 0x00}, /* 36 1152x864-60Hz */ 202 {0x0067,0x3e,0x34,0x06,0x1a,0x29,1152, 864, 0, 0x00, 0x00}, /* 37 1152x864-75Hz */ 203 {0x0047,0x44,0x3a,0x06,0x1a,0x29,1152, 864, 0, 0x00, 0x00}, /* 38 1152x864-85Hz */ 204 {0x00c7,0x3f,0x28,0x00,0x16,0x39, 848, 480, 0, 0x00, 0x00}, /* 39 848x480-38Hzi */ 205 {0xc067,0x40,0x3d,0x0b,0x16,0x39, 848, 480, 0, 0x00, 0x00}, /* 3a 848x480-60Hz */ 206 {0x00c7,0x41,0x28,0x00,0x17,0x3f, 856, 480, 0, 0x00, 0x00}, /* 3b 856x480-38Hzi */ 207 {0xc067,0x42,0x28,0x0c,0x17,0x3f, 856, 480, 0, 0x00, 0x00}, /* 3c 856x480-60Hz */ 208 {0x0067,0x43,0x3e,0x0d,0x1b,0x48,1360, 768, 0, 0x00, 0x00}, /* 3d 1360x768-60Hz */ 209 {0x0077,0x46,0x3f,0x08,0x08,0x55,1280, 768, 0, 0x00, 0x00}, /* 3e 1280x768-60Hz */ 210 {0x006f,0x47,0x4c,0x06,0x15,0x5f, 768, 576, 0, 0x00, 0x00}, /* 3f 768x576 */ 211 {0x0027,0x48,0x13,0x08,0x00,0x67,1360,1024, 0, 0x00, 0x00}, /* 40 1360x1024-59Hz (BARCO1366 only) */ 212 {0xffff, 0, 0, 0, 0, 0, 0, 0, 0, 0x00, 0x00} 213 }; 214 215 static const struct SiS_VBMode SiS300_VBModeIDTable[] = 216 { 217 {0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, 218 {0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01}, 219 {0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x02}, 220 {0x03,0x00,0x00,0x00,0x02,0x00,0x02,0x00}, 221 {0x03,0x00,0x00,0x00,0x02,0x00,0x02,0x01}, 222 {0x03,0x00,0x00,0x00,0x03,0x00,0x03,0x02}, 223 {0x05,0x00,0x00,0x01,0x04,0x00,0x00,0x00}, 224 {0x06,0x00,0x00,0x01,0x05,0x00,0x02,0x00}, 225 {0x07,0x00,0x00,0x00,0x03,0x00,0x03,0x01}, 226 {0x07,0x00,0x00,0x00,0x03,0x00,0x03,0x02}, 227 {0x0d,0x00,0x00,0x01,0x04,0x00,0x00,0x00}, 228 {0x0e,0x00,0x00,0x01,0x05,0x00,0x02,0x00}, 229 {0x0f,0x00,0x00,0x01,0x05,0x00,0x02,0x01}, 230 {0x10,0x00,0x00,0x01,0x05,0x00,0x02,0x01}, 231 {0x11,0x00,0x00,0x01,0x05,0x00,0x02,0x03}, 232 {0x12,0x00,0x00,0x01,0x05,0x00,0x02,0x03}, 233 {0x13,0x00,0x00,0x01,0x04,0x00,0x04,0x00}, 234 {0x6a,0x00,0x00,0x01,0x07,0x00,0x08,0x0a}, 235 {0x2e,0x00,0x00,0x01,0x05,0x00,0x06,0x08}, 236 {0x2f,0x00,0x00,0x01,0x05,0x00,0x06,0x06}, 237 {0x30,0x00,0x00,0x01,0x07,0x00,0x08,0x0a}, 238 {0x31,0x00,0x00,0x01,0x06,0x00,0x00,0x00}, 239 {0x32,0x00,0x00,0x01,0x06,0x00,0x00,0x00}, 240 {0x33,0x00,0x00,0x01,0x06,0x00,0x00,0x00}, 241 {0x34,0x00,0x00,0x01,0x06,0x00,0x00,0x00}, 242 {0x35,0x00,0x00,0x01,0x06,0x00,0x00,0x00}, 243 {0x36,0x00,0x00,0x01,0x06,0x00,0x00,0x00}, 244 {0x37,0x00,0x00,0x01,0x00,0x00,0x0a,0x0c}, 245 {0x38,0x00,0x00,0x01,0x00,0x00,0x0a,0x0c}, 246 {0x3a,0x00,0x00,0x01,0x00,0x00,0x0b,0x0d}, 247 {0x40,0x00,0x00,0x01,0x04,0x00,0x05,0x05}, 248 {0x41,0x00,0x00,0x01,0x04,0x00,0x05,0x05}, 249 {0x43,0x00,0x00,0x01,0x05,0x00,0x06,0x08}, 250 {0x44,0x00,0x00,0x01,0x05,0x00,0x06,0x08}, 251 {0x46,0x00,0x00,0x01,0x07,0x00,0x08,0x0a}, 252 {0x47,0x00,0x00,0x01,0x07,0x00,0x08,0x0a}, 253 {0x49,0x00,0x00,0x01,0x00,0x00,0x0a,0x0c}, 254 {0x4a,0x00,0x00,0x01,0x00,0x00,0x0a,0x0c}, 255 {0x4c,0x00,0x00,0x01,0x00,0x00,0x0b,0x0d}, 256 {0x4d,0x00,0x00,0x01,0x00,0x00,0x0b,0x0d}, 257 {0x4f,0x00,0x00,0x01,0x04,0x00,0x05,0x05}, 258 {0x50,0x00,0x00,0x01,0x04,0x00,0x05,0x07}, 259 {0x51,0x00,0x00,0x01,0x07,0x00,0x07,0x09}, 260 {0x52,0x00,0x00,0x01,0x00,0x00,0x09,0x0b}, 261 {0x53,0x00,0x00,0x01,0x04,0x00,0x05,0x07}, 262 {0x54,0x00,0x00,0x01,0x07,0x00,0x07,0x09}, 263 {0x56,0x00,0x00,0x01,0x04,0x00,0x05,0x07}, 264 {0x57,0x00,0x00,0x01,0x07,0x00,0x07,0x09}, 265 {0x58,0x00,0x00,0x01,0x00,0x00,0x09,0x0b}, 266 {0x59,0x00,0x00,0x01,0x04,0x00,0x05,0x05}, 267 {0x5c,0x00,0x00,0x01,0x00,0x00,0x09,0x0b}, 268 {0x5d,0x00,0x00,0x01,0x05,0x00,0x06,0x06}, 269 {0x5e,0x00,0x00,0x01,0x05,0x00,0x06,0x06}, 270 {0x5f,0x00,0x00,0x01,0x06,0x00,0x00,0x00}, 271 {0x60,0x00,0x00,0x01,0x06,0x00,0x00,0x00}, 272 {0x61,0x00,0x00,0x01,0x06,0x00,0x00,0x00}, 273 {0x62,0x00,0x00,0x01,0x05,0x00,0x06,0x08}, 274 {0x63,0x00,0x00,0x01,0x07,0x00,0x08,0x0a}, 275 {0x64,0x00,0x00,0x01,0x00,0x00,0x0a,0x0c}, 276 {0x65,0x00,0x00,0x01,0x00,0x00,0x0b,0x0d}, 277 {0x6c,0x00,0x00,0x01,0x00,0x00,0x0b,0x0d}, 278 {0x6d,0x00,0x00,0x01,0x00,0x00,0x0b,0x0d}, 279 {0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00} 280 }; 281 282 static const struct SiS_CRT1Table SiS300_CRT1Table[] = 283 { 284 {{0x2d,0x27,0x28,0x90,0x2c,0x80,0xbf,0x1f, /* 0x00 - 320x200 */ 285 0x9c,0x8e,0x8f,0x96,0xb9,0x30,0x00,0x00, /* HRE [4],[15] is invalid - but correcting it does not work */ 286 0x00}}, 287 {{0x2d,0x27,0x28,0x90,0x2c,0x80,0x0b,0x3e, /* 0x01 */ 288 0xe9,0x8b,0xdf,0xe7,0x04,0x00,0x00,0x00, /* HRE [4],[15] is invalid - but correcting it does not work */ 289 0x00}}, 290 {{0x3d,0x31,0x31,0x81,0x37,0x1f,0x72,0xf0, /* 0x02 */ 291 0x58,0x8c,0x57,0x57,0x73,0x20,0x00,0x05, 292 0x01}}, 293 {{0x4f,0x3f,0x3f,0x93,0x45,0x0d,0x24,0xf5, 294 0x02,0x88,0xff,0xff,0x25,0x10,0x00,0x01, 295 0x01}}, 296 {{0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, 297 0x9c,0x8e,0x8f,0x96,0xb9,0x30,0x00,0x05, 298 0x00}}, 299 {{0x5f,0x4f,0x4f,0x83,0x55,0x81,0x0b,0x3e, /* 0x05 - corrected 640x480-60 */ 300 0xe9,0x8b,0xdf,0xe8,0x0c,0x00,0x00,0x05, 301 0x00}}, 302 {{0x63,0x4f,0x4f,0x87,0x56,0x9b,0x06,0x3e, /* 0x06 - corrected 640x480-72 */ 303 0xe8,0x8a,0xdf,0xe7,0x07,0x00,0x00,0x01, 304 0x00}}, 305 {{0x64,0x4f,0x4f,0x88,0x55,0x9d,0xf2,0x1f, 306 0xe0,0x83,0xdf,0xdf,0xf3,0x10,0x00,0x01, 307 0x00}}, 308 {{0x63,0x4f,0x4f,0x87,0x5a,0x81,0xfb,0x1f, 309 0xe0,0x83,0xdf,0xdf,0xfc,0x10,0x00,0x05, 310 0x00}}, 311 {{0x67,0x4f,0x4f,0x8b,0x57,0x83,0x10,0x3e, /* 0x09 - corrected 640x480-100 */ 312 0xe7,0x8d,0xdf,0xe6,0x11,0x00,0x00,0x05, 313 0x00}}, 314 {{0x67,0x4f,0x4f,0x8b,0x57,0x83,0x10,0x3e, /* 0x0a - corrected 640x480-120 */ 315 0xe7,0x8d,0xdf,0xe6,0x11,0x00,0x00,0x05, 316 0x00}}, 317 {{0x63,0x4f,0x4f,0x87,0x56,0x9d,0xfb,0x1f, 318 0xe0,0x83,0xdf,0xdf,0xfc,0x10,0x00,0x01, 319 0x00}}, 320 {{0x65,0x4f,0x4f,0x89,0x57,0x9f,0xfb,0x1f, 321 0xe6,0x8a,0xdf,0xdf,0xfc,0x10,0x00,0x01, /* Corrected VDE, VBE */ 322 0x00}}, 323 {{0x7b,0x63,0x63,0x9f,0x6a,0x93,0x6f,0xf0, 324 0x58,0x8a,0x57,0x57,0x70,0x20,0x00,0x05, 325 0x01}}, 326 {{0x7f,0x63,0x63,0x83,0x6c,0x1c,0x72,0xf0, 327 0x58,0x8c,0x57,0x57,0x73,0x20,0x00,0x06, 328 0x01}}, 329 {{0x7d,0x63,0x63,0x81,0x6e,0x1d,0x98,0xf0, 330 0x7c,0x82,0x57,0x57,0x99,0x00,0x00,0x06, 331 0x01}}, 332 {{0x7f,0x63,0x63,0x83,0x69,0x13,0x6f,0xf0, 333 0x58,0x8b,0x57,0x57,0x70,0x20,0x00,0x06, 334 0x01}}, 335 {{0x7e,0x63,0x63,0x82,0x6b,0x13,0x75,0xf0, 336 0x58,0x8b,0x57,0x57,0x76,0x20,0x00,0x06, 337 0x01}}, 338 {{0x8c,0x63,0x63,0x87,0x72,0x16,0x7e,0xf0, 339 0x59,0x8d,0x57,0x57,0x7f,0x00,0x00,0x06, 340 0x01}}, 341 {{0x7e,0x63,0x63,0x82,0x6c,0x14,0x75,0xe0, 342 0x58,0x0b,0x57,0x57,0x76,0x20,0x00,0x06, 343 0x01}}, 344 {{0x7e,0x63,0x63,0x82,0x6c,0x14,0x75,0xe0, /* 0x14 */ 345 0x58,0x0b,0x57,0x57,0x76,0x20,0x00,0x06, 346 0x01}}, 347 {{0x99,0x7f,0x7f,0x9d,0x84,0x1a,0x96,0x1f, 348 0x7f,0x83,0x7f,0x7f,0x97,0x10,0x00,0x02, 349 0x00}}, 350 {{0xa3,0x7f,0x7f,0x87,0x86,0x97,0x24,0xf5, 351 0x02,0x88,0xff,0xff,0x25,0x10,0x00,0x02, 352 0x01}}, 353 {{0xa1,0x7f,0x7f,0x85,0x86,0x97,0x24,0xf5, 354 0x02,0x88,0xff,0xff,0x25,0x10,0x00,0x02, 355 0x01}}, 356 {{0x9f,0x7f,0x7f,0x83,0x85,0x91,0x1e,0xf5, 357 0x00,0x83,0xff,0xff,0x1f,0x10,0x00,0x02, 358 0x01}}, 359 {{0xa7,0x7f,0x7f,0x8b,0x89,0x95,0x26,0xf5, 360 0x00,0x83,0xff,0xff,0x27,0x10,0x00,0x02, 361 0x01}}, 362 {{0x9f,0x7f,0x7f,0x83,0x83,0x93,0x1e,0xf5, /* 0x1a */ 363 0x00,0x84,0xff,0xff,0x1f,0x10,0x00,0x02, 364 0x01}}, 365 {{0xa2,0x7f,0x7f,0x86,0x84,0x94,0x37,0xf5, 366 0x0b,0x82,0xff,0xff,0x38,0x10,0x00,0x02, 367 0x01}}, 368 {{0xcf,0x9f,0x9f,0x93,0xb2,0x01,0x14,0xba, 369 0x00,0x83,0xff,0xff,0x15,0x00,0x00,0x03, 370 0x00}}, 371 {{0xce,0x9f,0x9f,0x92,0xa9,0x17,0x28,0x5a, 372 0x00,0x83,0xff,0xff,0x29,0x09,0x00,0x07, 373 0x01}}, 374 {{0xce,0x9f,0x9f,0x92,0xa5,0x17,0x28,0x5a, /* 0x1e */ 375 0x00,0x83,0xff,0xff,0x29,0x09,0x00,0x07, 376 0x01}}, 377 {{0xd3,0x9f,0x9f,0x97,0xab,0x1f,0x2e,0x5a, 378 0x00,0x83,0xff,0xff,0x2f,0x09,0x00,0x07, 379 0x01}}, 380 {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10, 381 0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04, 382 0x00}}, 383 {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10, 384 0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04, 385 0x00}}, 386 {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10, 387 0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04, 388 0x00}}, 389 {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10, 390 0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04, 391 0x00}}, 392 {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10, /* 36: 1600x1200x85Hz */ 393 0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04, 394 0x00}}, 395 {{0x3f,0xef,0xef,0x83,0xfd,0x1a,0xda,0x1f, /* 37: 1920x1440x60Hz */ 396 0xa0,0x84,0x9f,0x9f,0xdb,0x1f,0x01,0x01, 397 0x00}}, 398 {{0x55,0xff,0xff,0x99,0x0d,0x0c,0x3e,0xba, 399 0x00,0x84,0xff,0xff,0x3f,0x0f,0x41,0x05, 400 0x00}}, 401 {{0xdc,0x9f,0x9f,0x80,0xaf,0x9d,0xe6,0xff, /* 0x27: 1280x960-60 - correct */ 402 0xc0,0x83,0xbf,0xbf,0xe7,0x10,0x00,0x07, 403 0x01}}, 404 {{0x7f,0x63,0x63,0x83,0x6c,0x1c,0x72,0xba, /* 0x28 */ 405 0x27,0x8b,0xdf,0xdf,0x73,0x00,0x00,0x06, 406 0x01}}, 407 {{0x7f,0x63,0x63,0x83,0x69,0x13,0x6f,0xba, 408 0x26,0x89,0xdf,0xdf,0x6f,0x00,0x00,0x06, 409 0x01}}, 410 {{0x7f,0x63,0x63,0x82,0x6b,0x13,0x75,0xba, 411 0x29,0x8c,0xdf,0xdf,0x75,0x00,0x00,0x06, 412 0x01}}, 413 {{0xa3,0x7f,0x7f,0x87,0x86,0x97,0x24,0xf1, 414 0xaf,0x85,0x3f,0x3f,0x25,0x30,0x00,0x02, 415 0x01}}, 416 {{0x9f,0x7f,0x7f,0x83,0x85,0x91,0x1e,0xf1, 417 0xad,0x81,0x3f,0x3f,0x1f,0x30,0x00,0x02, 418 0x01}}, 419 {{0xa7,0x7f,0x7f,0x88,0x89,0x15,0x26,0xf1, 420 0xb1,0x85,0x3f,0x3f,0x27,0x30,0x00,0x02, 421 0x01}}, 422 {{0xce,0x9f,0x9f,0x92,0xa9,0x17,0x28,0xc4, 423 0x7a,0x8e,0xcf,0xcf,0x29,0x21,0x00,0x07, 424 0x01}}, 425 {{0xce,0x9f,0x9f,0x92,0xa5,0x17,0x28,0xd4, 426 0x7a,0x8e,0xcf,0xcf,0x29,0x21,0x00,0x07, 427 0x01}}, 428 {{0xd3,0x9f,0x9f,0x97,0xab,0x1f,0x2e,0xd4, 429 0x7d,0x81,0xcf,0xcf,0x2f,0x21,0x00,0x07, 430 0x01}}, 431 {{0x6b,0x59,0x59,0x8f,0x5e,0x8c,0x0b,0x3e, 432 0xe9,0x8b,0xdf,0xe7,0x04,0x00,0x00,0x05, 433 0x00}}, 434 {{0x6d,0x59,0x59,0x91,0x60,0x89,0x53,0xf0, /* 0x32: 720x576, corrected to 60Hz */ 435 0x41,0x84,0x3f,0x3f,0x54,0x00,0x00,0x05, 436 0x41}}, 437 {{0xa3,0x7f,0x7f,0x87,0x86,0x97,0x1e,0xf1, /* 0x33 - 1024x600 */ 438 0xae,0x85,0x57,0x57,0x1f,0x30,0x00,0x02, 439 0x01}}, 440 {{0xa3,0x8f,0x8f,0x97,0x96,0x97,0x24,0xf5, /* 0x34 - 1152x768 - corrected */ 441 0x02,0x88,0xff,0xff,0x25,0x10,0x00,0x02, 442 0x01}}, 443 {{0x7f,0x63,0x63,0x83,0x6c,0x1c,0x72,0xba, /* 0x35 */ 444 0x27,0x8b,0xdf,0xdf,0x73,0x00,0x00,0x06, 445 0x01}}, /* 0x35 */ 446 {{0x7f,0x63,0x63,0x83,0x69,0x13,0x6f,0xba, 447 0x26,0x89,0xdf,0xdf,0x6f,0x00,0x00,0x06, 448 0x01}}, /* 0x36 */ 449 {{0x7f,0x63,0x63,0x82,0x6b,0x13,0x75,0xba, 450 0x29,0x8c,0xdf,0xdf,0x75,0x00,0x00,0x06, 451 0x01}}, /* 0x37 */ 452 {{0xa3,0x7f,0x7f,0x87,0x86,0x97,0x24,0xf1, 453 0xaf,0x85,0x3f,0x3f,0x25,0x30,0x00,0x02, 454 0x01}}, /* 0x38 */ 455 {{0x9f,0x7f,0x7f,0x83,0x85,0x91,0x1e,0xf1, 456 0xad,0x81,0x3f,0x3f,0x1f,0x30,0x00,0x02, 457 0x01}}, /* 0x39 */ 458 {{0xa7,0x7f,0x7f,0x88,0x89,0x95,0x26,0xf1, /* 95 was 15 - illegal HBE! */ 459 0xb1,0x85,0x3f,0x3f,0x27,0x30,0x00,0x02, 460 0x01}}, /* 0x3a */ 461 {{0xce,0x9f,0x9f,0x92,0xa9,0x17,0x28,0xc4, 462 0x7a,0x8e,0xcf,0xcf,0x29,0x21,0x00,0x07, 463 0x01}}, /* 0x3b */ 464 {{0xce,0x9f,0x9f,0x92,0xa5,0x17,0x28,0xd4, 465 0x7a,0x8e,0xcf,0xcf,0x29,0x21,0x00,0x07, 466 0x01}}, /* 0x3c */ 467 {{0xd3,0x9f,0x9f,0x97,0xab,0x1f,0x2e,0xd4, 468 0x7d,0x81,0xcf,0xcf,0x2f,0x21,0x00,0x07, 469 0x01}}, /* 0x3d */ 470 {{0xc3,0x8f,0x8f,0x87,0x9b,0x0b,0x82,0xef, /* 1152x864-75 */ 471 0x60,0x83,0x5f,0x5f,0x83,0x10,0x00,0x07, 472 0x01}}, /* 0x3e */ 473 {{0x86,0x69,0x69,0x8A,0x74,0x06,0x8C,0x15, /* 848x480-38i */ 474 0x4F,0x83,0xEF,0xEF,0x8D,0x30,0x00,0x02, 475 0x00}}, /* 0x3f */ 476 {{0x83,0x69,0x69,0x87,0x6f,0x1d,0x03,0x3E, /* 848x480-60 */ 477 0xE5,0x8d,0xDF,0xe4,0x04,0x00,0x00,0x06, 478 0x00}}, /* 0x40 */ 479 {{0x86,0x6A,0x6A,0x8A,0x74,0x06,0x8C,0x15, /* 856x480-38i */ 480 0x4F,0x83,0xEF,0xEF,0x8D,0x30,0x00,0x02, 481 0x00}}, /* 0x41 */ 482 {{0x81,0x6A,0x6A,0x85,0x70,0x00,0x0F,0x3E, /* 856x480-60 */ 483 0xEB,0x8E,0xDF,0xDF,0x10,0x00,0x00,0x02, 484 0x00}}, /* 0x42 */ 485 {{0xdd,0xa9,0xa9,0x81,0xb4,0x97,0x26,0xfd, /* 1360x768-60 */ 486 0x01,0x8d,0xff,0x00,0x27,0x10,0x00,0x03, 487 0x01}}, /* 0x43 */ 488 {{0xd9,0x8f,0x8f,0x9d,0xba,0x0a,0x8a,0xff, /* 1152x864-84 */ 489 0x60,0x8b,0x5f,0x5f,0x8b,0x10,0x00,0x03, 490 0x01}}, /* 0x44 */ 491 {{0xd3,0x9f,0x9f,0x97,0xab,0x1f,0xf1,0xff, /* 1280x960-85 */ 492 0xc0,0x83,0xbf,0xbf,0xf2,0x10,0x00,0x07, 493 0x01}}, /* 0x45 */ 494 {{0xce,0x9f,0x9f,0x92,0xa9,0x17,0x20,0xf5, /* 1280x768-60 */ 495 0x03,0x88,0xff,0xff,0x21,0x10,0x00,0x07, 496 0x01}}, /* 0x46 */ 497 {{0x75,0x5f,0x5f,0x99,0x66,0x90,0x53,0xf0, /* 768x576, corrected to 60Hz */ 498 0x41,0x84,0x3f,0x3f,0x54,0x00,0x00,0x05, 499 0x41}}, /* 0x47 */ 500 {{0xce,0xa9,0xa9,0x92,0xb1,0x07,0x28,0x52, /* 1360x1024 (Barco iQ Pro R300) */ 501 0x02,0x8e,0xff,0x00,0x29,0x0d,0x00,0x03, 502 0x00}}, /* 0x48 */ 503 {{0xcd,0x8f,0x8f,0x91,0x9b,0x1b,0x7a,0xff, /* 1152x864-60 */ 504 0x64,0x8c,0x5f,0x62,0x7b,0x10,0x00,0x07, 505 0x41}}, /* 0x49 */ 506 {{0x5c,0x4f,0x4f,0x80,0x57,0x80,0xa3,0x1f, /* fake 640x400@60Hz (for LCD and TV, not actually used) */ 507 0x98,0x8c,0x8f,0x96,0xa4,0x30,0x00,0x05, 508 0x40}}, /* 0x4a */ 509 {{0x2c,0x27,0x27,0x90,0x2d,0x92,0xa4,0x1f, /* fake 320x200@60Hz (for LCD and TV, not actually used) */ 510 0x98,0x8c,0x8f,0x96,0xa5,0x30,0x00,0x04, 511 0x00}} /* 0x4b */ 512 }; 513 514 static const struct SiS_MCLKData SiS300_MCLKData_630[] = 515 { 516 { 0x5a,0x64,0x80, 66}, 517 { 0xb3,0x45,0x80, 83}, 518 { 0x37,0x61,0x80,100}, 519 { 0x37,0x22,0x80,133}, 520 { 0x37,0x61,0x80,100}, 521 { 0x37,0x61,0x80,100}, 522 { 0x37,0x61,0x80,100}, 523 { 0x37,0x61,0x80,100} 524 }; 525 526 static const struct SiS_MCLKData SiS300_MCLKData_300[] = 527 { 528 { 0x68,0x43,0x80,125}, 529 { 0x68,0x43,0x80,125}, 530 { 0x68,0x43,0x80,125}, 531 { 0x37,0x61,0x80,100}, 532 { 0x37,0x61,0x80,100}, 533 { 0x37,0x61,0x80,100}, 534 { 0x37,0x61,0x80,100}, 535 { 0x37,0x61,0x80,100} 536 }; 537 538 static struct SiS_VCLKData SiS300_VCLKData[] = 539 { 540 { 0x1b,0xe1, 25}, /* 0x00 */ 541 { 0x4e,0xe4, 28}, /* 0x01 */ 542 { 0x57,0xe4, 32}, /* 0x02 */ 543 { 0xc3,0xc8, 36}, /* 0x03 */ 544 { 0x42,0xc3, 40}, /* 0x04 */ 545 { 0x5d,0xc4, 45}, /* 0x05 */ 546 { 0x52,0x65, 50}, /* 0x06 */ 547 { 0x53,0x65, 50}, /* 0x07 */ 548 { 0x6d,0x66, 56}, /* 0x08 */ 549 { 0x5a,0x64, 65}, /* 0x09 */ 550 { 0x46,0x44, 68}, /* 0x0a */ 551 { 0x3e,0x43, 75}, /* 0x0b */ 552 { 0x6d,0x46, 76}, /* 0x0c */ /* 800x600 | LVDS_2(CH), MITAC(CH); - 730, A901(301B): 0xb1,0x46, 76 */ 553 { 0x41,0x43, 79}, /* 0x0d */ 554 { 0x31,0x42, 79}, /* 0x0e */ 555 { 0x46,0x25, 85}, /* 0x0f */ 556 { 0x78,0x29, 87}, /* 0x10 */ 557 { 0x62,0x44, 95}, /* 0x11 */ 558 { 0x2b,0x22,105}, /* 0x12 */ 559 { 0x49,0x24,106}, /* 0x13 */ 560 { 0xc3,0x28,108}, /* 0x14 */ 561 { 0x3c,0x23,109}, /* 0x15 */ 562 { 0xf7,0x2c,132}, /* 0x16 */ 563 { 0xd4,0x28,136}, /* 0x17 */ 564 { 0x41,0x05,158}, /* 0x18 */ 565 { 0x43,0x05,162}, /* 0x19 */ 566 { 0xe1,0x0f,175}, /* 0x1a */ 567 { 0xfc,0x12,189}, /* 0x1b */ 568 { 0xde,0x26,194}, /* 0x1c */ 569 { 0x54,0x05,203}, /* 0x1d */ 570 { 0x3f,0x03,230}, /* 0x1e */ 571 { 0x30,0x02,234}, /* 0x1f */ 572 { 0x24,0x01,266}, /* 0x20 */ 573 { 0x52,0x2a, 54}, /* 0x21 */ /* 301 TV */ 574 { 0x52,0x6a, 27}, /* 0x22 */ /* 301 TV */ 575 { 0x62,0x24, 70}, /* 0x23 */ /* 301 TV */ 576 { 0x62,0x64, 70}, /* 0x24 */ /* 301 TV */ 577 { 0xa8,0x4c, 30}, /* 0x25 */ /* 301 TV */ 578 { 0x20,0x26, 33}, /* 0x26 */ /* 301 TV */ 579 { 0x31,0xc2, 39}, /* 0x27 */ 580 { 0xbf,0xc8, 35}, /* 0x28 */ /* 856x480 */ 581 { 0x60,0x36, 30}, /* 0x29 */ /* CH/UNTSC TEXT | LVDS_2(CH) - 730, A901(301B), Mitac(CH): 0xe0, 0xb6, 30 */ 582 { 0x40,0x4a, 28}, /* 0x2a */ /* CH-TV */ 583 { 0x9f,0x46, 44}, /* 0x2b */ /* CH-TV */ 584 { 0x97,0x2c, 26}, /* 0x2c */ /* CH-TV */ 585 { 0x44,0xe4, 25}, /* 0x2d */ /* CH-TV */ 586 { 0x7e,0x32, 47}, /* 0x2e */ /* CH-TV */ 587 { 0x8a,0x24, 31}, /* 0x2f */ /* CH/PAL TEXT | LVDS_2(CH), Mitac(CH) - 730, A901(301B): 0x57, 0xe4, 31 */ 588 { 0x97,0x2c, 26}, /* 0x30 */ /* CH-TV */ 589 { 0xce,0x3c, 39}, /* 0x31 */ /* CH-TV */ 590 { 0x52,0x4a, 36}, /* 0x32 */ /* CH/PAL 800x600 5/6 */ 591 { 0x34,0x61, 95}, /* 0x33 */ 592 { 0x78,0x27,108}, /* 0x34 */ /* Replacement for index 0x14 for 630 (?) */ 593 { 0x70,0x28, 90}, /* 0x35 */ /* 1152x864@60 */ 594 { 0x45,0x6b, 21}, /* 0x36 */ /* Chrontel SuperOverscan */ 595 { 0x52,0xe2, 49}, /* 0x37 */ /* 16:9 modes */ 596 { 0x2b,0x61, 78}, /* 0x38 */ /* 16:9 modes */ 597 { 0x70,0x44,108}, /* 0x39 */ /* 16:9 modes */ 598 { 0x54,0x42,135}, /* 0x3a */ /* 16:9 modes */ 599 { 0x41,0x22,157}, /* 0x3b */ /* 16:9 modes */ 600 { 0x52,0x07,149}, /* 0x3c */ /* 1280x960-85 */ 601 { 0x62,0xc6, 34}, /* 0x3d */ /* 848x480-60 */ 602 { 0x30,0x23, 88}, /* 0x3e */ /* 1360x768-60 */ 603 { 0x70,0x29, 81}, /* 0x3f */ /* 1280x768-60 */ 604 { 0x72,0x2a, 76}, /* 0x40 */ /* test for SiS730 --- LIMIT for table (&0x3f) */ 605 { 0x15,0x21, 79}, /* 0x41 */ /* test for SiS730 */ 606 { 0xa1,0x42,108}, /* 0x42 */ /* 1280x960 LCD */ 607 { 0x37,0x61,100}, /* 0x43 */ /* 1280x960 LCD */ 608 { 0xe3,0x9a,106}, /* 0x44 */ /* 1360x1024 - special for Barco iQ R300 */ 609 { 0xe2,0x46,135}, /* 0x45 */ /* 1280x1024-75, better clock for VGA2 */ 610 { 0x70,0x29, 81}, /* 0x46 */ /* unused */ 611 { 0, 0, 0}, /* 0x47 custom (will be filled out) */ 612 { 0xce,0x25,189}, /* 0x48 */ /* Replacement for index 0x1b for 730 (and 540?) */ 613 { 0x15,0xe1, 20}, /* 0x49 */ /* 640x400@60 (fake, not actually used) */ 614 { 0x5f,0xc6, 33}, /* 0x4a */ /* 720x576@60 */ 615 { 0x37,0x5a, 10}, /* 0x4b */ /* 320x200@60 (fake, not actually used) */ 616 { 0x2b,0xc2, 35} /* 0x4c */ /* 768@576@60 */ 617 }; 618 619 static const unsigned char SiS300_SR15[4 * 8] = 620 { 621 0x01,0x09,0xa3,0x00, 622 0x43,0x43,0x43,0x00, 623 0x1e,0x1e,0x1e,0x00, 624 0x2a,0x2a,0x2a,0x00, 625 0x06,0x06,0x06,0x00, 626 0x00,0x00,0x00,0x00, 627 0x00,0x00,0x00,0x00, 628 0x00,0x00,0x00,0x00 629 }; 630 631 static const struct SiS_PanelDelayTbl SiS300_PanelDelayTbl[] = 632 { 633 {{0x05,0xaa}}, 634 {{0x05,0x14}}, 635 {{0x05,0x36}}, 636 {{0x05,0x14}}, 637 {{0x05,0x14}}, 638 {{0x05,0x14}}, 639 {{0x05,0x90}}, 640 {{0x05,0x90}}, 641 {{0x05,0x14}}, 642 {{0x05,0x14}}, 643 {{0x05,0x14}}, 644 {{0x05,0x14}}, 645 {{0x20,0x80}}, 646 {{0x05,0x14}}, 647 {{0x05,0x40}}, 648 {{0x05,0x60}} 649 }; 650 651 /**************************************************************/ 652 /* SIS VIDEO BRIDGE ----------------------------------------- */ 653 /**************************************************************/ 654 655 static const struct SiS_LCDData SiS300_St2LCD1024x768Data[] = 656 { 657 { 62, 25, 800, 546,1344, 806}, 658 { 32, 15, 930, 546,1344, 806}, 659 { 32, 15, 930, 546,1344, 806}, 660 { 104, 45, 945, 496,1344, 806}, 661 { 62, 25, 800, 546,1344, 806}, 662 { 31, 18,1008, 624,1344, 806}, 663 { 1, 1,1344, 806,1344, 806} 664 }; 665 666 static const struct SiS_LCDData SiS300_ExtLCD1024x768Data[] = 667 { 668 { 12, 5, 896, 512,1344, 806}, 669 { 12, 5, 896, 510,1344, 806}, 670 { 32, 15,1008, 505,1344, 806}, 671 { 32, 15,1008, 514,1344, 806}, 672 { 12, 5, 896, 500,1344, 806}, 673 { 42, 25,1024, 625,1344, 806}, 674 { 1, 1,1344, 806,1344, 806}, 675 { 12, 5, 896, 500,1344, 806}, 676 { 42, 25,1024, 625,1344, 806}, 677 { 1, 1,1344, 806,1344, 806}, 678 { 12, 5, 896, 500,1344, 806}, 679 { 42, 25,1024, 625,1344, 806}, 680 { 1, 1,1344, 806,1344, 806} 681 }; 682 683 static const struct SiS_LCDData SiS300_St2LCD1280x1024Data[] = 684 { 685 { 22, 5, 800, 510,1650,1088}, 686 { 22, 5, 800, 510,1650,1088}, 687 { 176, 45, 900, 510,1650,1088}, 688 { 176, 45, 900, 510,1650,1088}, 689 { 22, 5, 800, 510,1650,1088}, 690 { 13, 5,1024, 675,1560,1152}, 691 { 16, 9,1266, 804,1688,1072}, 692 { 1, 1,1688,1066,1688,1066} 693 }; 694 695 static const struct SiS_LCDData SiS300_ExtLCD1280x1024Data[] = 696 { 697 { 211, 60,1024, 501,1688,1066}, 698 { 211, 60,1024, 508,1688,1066}, 699 { 211, 60,1024, 501,1688,1066}, 700 { 211, 60,1024, 508,1688,1066}, 701 { 211, 60,1024, 500,1688,1066}, 702 { 211, 75,1024, 625,1688,1066}, 703 { 211, 120,1280, 798,1688,1066}, 704 { 1, 1,1688,1066,1688,1066} 705 }; 706 707 static const struct SiS_Part2PortTbl SiS300_CRT2Part2_1024x768_1[] = 708 { /* VESA Timing */ 709 {{0x21,0x12,0xbf,0xe4,0xc0,0x21,0x45,0x09,0x00,0xa9,0x09,0x04}}, 710 {{0x2c,0x12,0x9a,0xae,0x88,0x21,0x45,0x09,0x00,0xa9,0x09,0x04}}, 711 {{0x21,0x12,0xbf,0xe4,0xc0,0x21,0x45,0x09,0x00,0xa9,0x09,0x04}}, 712 {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, 713 {{0x22,0x13,0xfe,0x25,0xff,0x21,0x45,0x0a,0x00,0xa9,0x0d,0x04}}, 714 {{0x22,0x13,0xfe,0x25,0xff,0x21,0x45,0x0a,0x00,0xa9,0x0d,0x04}}, 715 {{0x22,0x13,0xfe,0x25,0xff,0x21,0x45,0x0a,0x00,0xa9,0x0d,0x04}} 716 }; 717 718 static const struct SiS_Part2PortTbl SiS300_CRT2Part2_1024x768_2[] = 719 { /* Non-VESA */ 720 {{0x28,0x12,0xa3,0xd0,0xaa,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}}, 721 {{0x2c,0x12,0x9a,0xae,0x88,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}}, 722 {{0x28,0x12,0xa3,0xd0,0xaa,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}}, 723 {{0x2c,0x12,0x9a,0xae,0x88,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}}, 724 {{0x28,0x13,0xe7,0x0b,0xe8,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}}, 725 {{0x38,0x18,0x16,0x00,0x00,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}}, 726 {{0x36,0x13,0x13,0x25,0xff,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}} 727 }; 728 729 static const struct SiS_Part2PortTbl SiS300_CRT2Part2_1024x768_3[] = 730 { 731 {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} 732 }; 733 734 /**************************************************************/ 735 /* LVDS/Chrontel -------------------------------------------- */ 736 /**************************************************************/ 737 738 /* Custom data for Barco iQ R series */ 739 static const struct SiS_LVDSData SiS300_LVDSBARCO1366Data_1[]= 740 { 741 { 832, 438,1331, 806}, 742 { 832, 388,1331, 806}, 743 { 832, 438,1331, 806}, 744 { 832, 388,1331, 806}, 745 { 832, 518,1331, 806}, 746 {1050, 638,1344, 806}, 747 {1344, 806,1344, 806}, 748 {1688,1066,1688,1066}, 749 {1688,1066,1688,1066} /* 1360x1024 */ 750 }; 751 752 /* Custom data for Barco iQ R series */ 753 static const struct SiS_LVDSData SiS300_LVDSBARCO1366Data_2[]= 754 { 755 {1344, 806,1344, 806}, 756 {1344, 806,1344, 806}, 757 {1344, 806,1344, 806}, 758 {1344, 806,1344, 806}, 759 {1344, 806,1344, 806}, 760 {1344, 806,1344, 806}, 761 {1344, 806,1344, 806}, 762 {1688,1066,1688,1066}, 763 {1688,1066,1688,1066} /* 1360x1024 */ 764 }; 765 766 /* Custom data for Barco iQ G series */ 767 static const struct SiS_LVDSData SiS300_LVDSBARCO1024Data_1[]= 768 { 769 { 832, 438,1331, 806}, 770 { 832, 409,1331, 806}, 771 { 832, 438,1331, 806}, 772 { 832, 409,1331, 806}, 773 { 832, 518,1331, 806}, /* 640x480 */ 774 {1050, 638,1344, 806}, /* 800x600 */ 775 {1344, 806,1344, 806}, /* 1024x768 */ 776 }; 777 778 /* Custom data for 848x480 and 856x480 parallel LVDS panels */ 779 static const struct SiS_LVDSData SiS300_LVDS848x480Data_1[]= 780 { 781 { 0, 0, 0, 0}, 782 { 0, 0, 0, 0}, 783 { 0, 0, 0, 0}, 784 { 0, 0, 0, 0}, 785 {1088, 525,1088, 525}, /* 640x480 TODO */ 786 {1088, 525,1088, 525}, /* 800x600 TODO */ 787 {1088, 525,1088, 525}, /* 1024x768 TODO */ 788 { 0, 0, 0, 0}, 789 { 0, 0, 0, 0}, 790 { 0, 0, 0, 0}, 791 { 0, 0, 0, 0}, 792 {1088, 525,1088, 525}, /* 848x480 */ 793 {1088, 525,1088, 525}, /* 856x480 */ 794 {1088, 525,1088, 525} /* 1360x768 TODO */ 795 }; 796 797 /* Custom data for 848x480 parallel panel */ 798 static const struct SiS_LVDSData SiS300_LVDS848x480Data_2[]= 799 { 800 { 0, 0, 0, 0}, 801 { 0, 0, 0, 0}, 802 { 0, 0, 0, 0}, 803 { 0, 0, 0, 0}, 804 {1088, 525,1088, 525}, /* 640x480 */ 805 {1088, 525,1088, 525}, /* 800x600 */ 806 {1088, 525,1088, 525}, /* 1024x768 */ 807 { 0, 0, 0, 0}, 808 { 0, 0, 0, 0}, 809 { 0, 0, 0, 0}, 810 { 0, 0, 0, 0}, 811 {1088, 525,1088, 525}, /* 848x480 */ 812 {1088, 525,1088, 525}, /* 856x480 */ 813 {1088, 525,1088, 525} /* 1360x768 TODO */ 814 }; 815 816 static const struct SiS_LVDSData SiS300_CHTVUPALData[] = 817 { 818 {1008, 625,1008, 625}, 819 {1008, 625,1008, 625}, 820 {1008, 625,1008, 625}, 821 {1008, 625,1008, 625}, 822 { 840, 750, 840, 750}, 823 { 936, 836, 936, 836} 824 }; 825 826 static const struct SiS_LVDSData SiS300_CHTVOPALData[] = 827 { 828 {1008, 625,1008, 625}, 829 {1008, 625,1008, 625}, 830 {1008, 625,1008, 625}, 831 {1008, 625,1008, 625}, 832 { 840, 625, 840, 625}, 833 { 960, 750, 960, 750} 834 }; 835 836 static const struct SiS_LVDSData SiS300_CHTVSOPALData[] = 837 { 838 {1008, 625,1008, 625}, 839 {1008, 625,1008, 625}, 840 {1008, 625,1008, 625}, 841 {1008, 625,1008, 625}, 842 { 840, 500, 840, 500}, 843 { 944, 625, 944, 625} 844 }; 845 846 /* Custom des data for Barco iQ R200/300/400 (BIOS 2.00.07) */ 847 static const struct SiS_LVDSDes SiS300_PanelType04_1a[] = /* 1280x1024 (1366x1024) */ 848 { 849 {1330, 798}, /* 320x200 */ 850 {1330, 794}, 851 {1330, 798}, 852 {1330, 794}, 853 {1330, 0}, /* 640x480 / 320x240 */ 854 {1343, 0}, /* 800x600 / 400x300 */ 855 { 0, 805}, /* 1024x768 / 512x384 */ 856 {1688,1066}, /* 1280x1024 */ 857 { 0, 0} /* 1360x1024 */ 858 }; 859 860 static const struct SiS_LVDSDes SiS300_PanelType04_2a[] = 861 { 862 {1152, 622}, 863 {1152, 597}, 864 {1152, 622}, 865 {1152, 597}, 866 {1152, 662}, 867 {1232, 722}, 868 { 0, 805}, 869 {1688,1066}, 870 { 0, 0} 871 }; 872 873 /* Custom des data for Barco iQ G200/300/400 (BIOS 2.00.07) */ 874 static const struct SiS_LVDSDes SiS300_PanelType04_1b[] = /* 1024x768 */ 875 { 876 {1330, 798}, /* 320x200 */ 877 {1330, 794}, 878 {1330, 798}, 879 {1330, 794}, 880 {1330, 0}, /* 640x480 / 320x240 */ 881 {1343, 0}, /* 800x600 / 400x300 */ 882 { 0, 805} /* 1024x768 / 512x384 */ 883 }; 884 885 static const struct SiS_LVDSDes SiS300_PanelType04_2b[] = 886 { 887 {1152, 622}, 888 {1152, 597}, 889 {1152, 622}, 890 {1152, 597}, 891 {1152, 662}, 892 {1232, 722}, 893 { 0, 805} 894 }; 895 896 /* CRT1 CRTC for slave modes */ 897 898 static const struct SiS_LVDSCRT1Data SiS300_CHTVCRT1UNTSC[] = 899 { 900 {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e, 901 0xe8,0x84,0x8f,0x57,0x20,0x00,0x01, 902 0x00 }}, 903 {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e, 904 0xd0,0x82,0x5d,0x57,0x00,0x00,0x01, 905 0x00 }}, 906 {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e, 907 0xe8,0x84,0x8f,0x57,0x20,0x00,0x01, 908 0x00 }}, 909 {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e, 910 0xd0,0x82,0x5d,0x57,0x00,0x00,0x01, 911 0x00 }}, 912 {{0x5d,0x4f,0x81,0x53,0x9c,0x56,0xba, 913 0x18,0x84,0xdf,0x57,0x00,0x00,0x01, 914 0x00 }}, 915 {{0x80,0x63,0x84,0x6c,0x17,0xec,0xf0, 916 0x90,0x8c,0x57,0xed,0x20,0x00,0x06, 917 0x01 }} 918 }; 919 920 static const struct SiS_LVDSCRT1Data SiS300_CHTVCRT1ONTSC[] = 921 { 922 {{0x64,0x4f,0x88,0x5a,0x9f,0x0b,0x3e, 923 0xc0,0x84,0x8f,0x0c,0x20,0x00,0x01, 924 0x00 }}, 925 {{0x64,0x4f,0x88,0x5a,0x9f,0x0b,0x3e, 926 0xb0,0x8d,0x5d,0x0c,0x00,0x00,0x01, 927 0x00 }}, 928 {{0x64,0x4f,0x88,0x5a,0x9f,0x0b,0x3e, 929 0xc0,0x84,0x8f,0x0c,0x20,0x00,0x01, 930 0x00 }}, 931 {{0x64,0x4f,0x88,0x5a,0x9f,0x0b,0x3e, 932 0xb0,0x8d,0x5d,0x0c,0x00,0x00,0x01, 933 0x00 }}, 934 {{0x5d,0x4f,0x81,0x56,0x9c,0x0b,0x3e, 935 0xe8,0x84,0xdf,0x0c,0x00,0x00,0x01, 936 0x00 }}, 937 {{0x7d,0x63,0x81,0x6a,0x16,0xba,0xf0, 938 0x7f,0x86,0x57,0xbb,0x00,0x00,0x06, 939 0x01 }} 940 }; 941 942 static const struct SiS_LVDSCRT1Data SiS300_CHTVCRT1UPAL[] = 943 { 944 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 945 0xf8,0x83,0x8f,0x70,0x20,0x00,0x05, 946 0x00 }}, 947 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 948 0xde,0x81,0x5d,0x70,0x00,0x00,0x05, 949 0x00 }}, 950 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 951 0xf8,0x83,0x8f,0x70,0x20,0x00,0x05, 952 0x00 }}, 953 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 954 0xde,0x81,0x5d,0x70,0x00,0x00,0x05, 955 0x00 }}, 956 {{0x64,0x4f,0x88,0x55,0x80,0xec,0xba, 957 0x50,0x84,0xdf,0xed,0x00,0x00,0x05, 958 0x00 }}, 959 {{0x70,0x63,0x94,0x68,0x8d,0x42,0xf1, 960 0xc8,0x8c,0x57,0xe9,0x20,0x00,0x05, 961 0x01 }} 962 }; 963 964 static const struct SiS_LVDSCRT1Data SiS300_CHTVCRT1OPAL[] = 965 { 966 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 967 0xf0,0x83,0x8f,0x70,0x20,0x00,0x05, 968 0x00 }}, 969 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 970 0xde,0x81,0x5d,0x70,0x00,0x00,0x05, 971 0x00 }}, 972 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 973 0xf0,0x83,0x8f,0x70,0x20,0x00,0x05, 974 0x00 }}, 975 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 976 0xde,0x81,0x5d,0x70,0x00,0x00,0x05, 977 0x00 }}, 978 {{0x64,0x4f,0x88,0x55,0x80,0x6f,0xba, 979 0x20,0x83,0xdf,0x70,0x00,0x00,0x05, 980 0x00 }}, 981 {{0x73,0x63,0x97,0x69,0x8e,0xec,0xf0, 982 0x90,0x8c,0x57,0xed,0x20,0x00,0x05, 983 0x01 }} 984 }; 985 986 static const struct SiS_LVDSCRT1Data SiS300_CHTVCRT1SOPAL[] = 987 { 988 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 989 0xf0,0x83,0x8f,0x70,0x20,0x00,0x05, 990 0x00 }}, 991 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 992 0xde,0x81,0x5d,0x70,0x00,0x00,0x05, 993 0x00 }}, 994 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 995 0xf0,0x83,0x8f,0x70,0x20,0x00,0x05, 996 0x00 }}, 997 {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e, 998 0xde,0x81,0x5d,0x70,0x00,0x00,0x05, 999 0x00 }}, 1000 {{0x64,0x4f,0x88,0x55,0x80,0x6f,0xba, /* TODO */ 1001 0x20,0x83,0xdf,0x70,0x00,0x00,0x05, 1002 0x00 }}, 1003 {{0x73,0x63,0x97,0x69,0x8e,0xec,0xf0, /* TODO */ 1004 0x90,0x8c,0x57,0xed,0x20,0x00,0x05, 1005 0x01 }} 1006 }; 1007 1008 static const struct SiS_CHTVRegData SiS300_CHTVReg_UNTSC[] = 1009 { 1010 {{0x4a,0x94,0x00,0x48,0xfe,0,0,0,0,0,0,0,0,0,0,0}}, 1011 {{0x4a,0x94,0x00,0x48,0xfe,0,0,0,0,0,0,0,0,0,0,0}}, 1012 {{0x4a,0x94,0x00,0x48,0xfe,0,0,0,0,0,0,0,0,0,0,0}}, 1013 {{0x4a,0x94,0x00,0x48,0xfe,0,0,0,0,0,0,0,0,0,0,0}}, 1014 {{0x6a,0x6a,0x00,0x2d,0xfa,0,0,0,0,0,0,0,0,0,0,0}}, /* Mode 17: 640x480 NTSC 7/8 */ 1015 {{0x8d,0xc4,0x00,0x3b,0xfb,0,0,0,0,0,0,0,0,0,0,0}} /* Mode 24: 800x600 NTSC 7/10 */ 1016 }; 1017 1018 static const struct SiS_CHTVRegData SiS300_CHTVReg_ONTSC[] = 1019 { 1020 {{0x49,0x94,0x00,0x34,0xfe,0,0,0,0,0,0,0,0,0,0,0}}, 1021 {{0x49,0x94,0x00,0x34,0xfe,0,0,0,0,0,0,0,0,0,0,0}}, 1022 {{0x49,0x94,0x00,0x34,0xfe,0,0,0,0,0,0,0,0,0,0,0}}, 1023 {{0x49,0x94,0x00,0x34,0xfe,0,0,0,0,0,0,0,0,0,0,0}}, 1024 {{0x69,0x6a,0x00,0x1e,0xfd,0,0,0,0,0,0,0,0,0,0,0}}, /* Mode 16: 640x480 NTSC 1/1 */ 1025 {{0x8c,0xb4,0x00,0x32,0xf9,0,0,0,0,0,0,0,0,0,0,0}} /* Mode 23: 800x600 NTSC 3/4 */ 1026 }; 1027 1028 static const struct SiS_CHTVRegData SiS300_CHTVReg_UPAL[] = 1029 { 1030 {{0x41,0x12,0x01,0x50,0x34,0,0,0,0,0,0,0,0,0,0,0}}, 1031 {{0x41,0x12,0x00,0x50,0x00,0,0,0,0,0,0,0,0,0,0,0}}, 1032 {{0x41,0x12,0x01,0x50,0x34,0,0,0,0,0,0,0,0,0,0,0}}, 1033 {{0x41,0x12,0x00,0x50,0x00,0,0,0,0,0,0,0,0,0,0,0}}, 1034 {{0x63,0x94,0x01,0x50,0x30,0,0,0,0,0,0,0,0,0,0,0}}, /* Mode 15: 640x480 PAL 5/6 */ 1035 {{0x84,0x64,0x01,0x4e,0x2f,0,0,0,0,0,0,0,0,0,0,0}} /* Mode 21: 800x600 PAL 3/4 */ 1036 1037 }; 1038 1039 static const struct SiS_CHTVRegData SiS300_CHTVReg_OPAL[] = 1040 { 1041 {{0x41,0x12,0x01,0x50,0x34,0,0,0,0,0,0,0,0,0,0,0}}, /* Mode 9: 640x400 PAL 1/1 */ 1042 {{0x41,0x12,0x00,0x50,0x00,0,0,0,0,0,0,0,0,0,0,0}}, 1043 {{0x41,0x12,0x01,0x50,0x34,0,0,0,0,0,0,0,0,0,0,0}}, 1044 {{0x41,0x12,0x00,0x50,0x00,0,0,0,0,0,0,0,0,0,0,0}}, 1045 {{0x61,0x94,0x01,0x36,0x30,0,0,0,0,0,0,0,0,0,0,0}}, /* Mode 14: 640x480 PAL 1/1 */ 1046 {{0x83,0x76,0x01,0x40,0x31,0,0,0,0,0,0,0,0,0,0,0}} /* Mode 20: 800x600 PAL 5/6 */ 1047 1048 }; 1049 1050 static const struct SiS_CHTVRegData SiS300_CHTVReg_SOPAL[] = 1051 { 1052 {{0x41,0x12,0x01,0x50,0x34,0,0,0,0,0,0,0,0,0,0,0}}, /* Mode 9: 640x400 PAL 1/1 */ 1053 {{0x41,0x12,0x00,0x50,0x00,0,0,0,0,0,0,0,0,0,0,0}}, 1054 {{0x41,0x12,0x01,0x50,0x34,0,0,0,0,0,0,0,0,0,0,0}}, 1055 {{0x41,0x12,0x00,0x50,0x00,0,0,0,0,0,0,0,0,0,0,0}}, 1056 {{0x60,0x30,0x00,0x10,0x00,0,0,0,0,0,0,0,0,0,0,0}}, /* Mode 13: 640x480 PAL 5/4 */ 1057 {{0x81,0x50,0x00,0x1b,0x00,0,0,0,0,0,0,0,0,0,0,0}} /* Mode 19: 800x600 PAL 1/1 */ 1058 }; 1059 1060 static const unsigned char SiS300_CHTVVCLKUNTSC[] = { 0x29,0x29,0x29,0x29,0x2a,0x2e }; 1061 1062 static const unsigned char SiS300_CHTVVCLKONTSC[] = { 0x2c,0x2c,0x2c,0x2c,0x2d,0x2b }; 1063 1064 static const unsigned char SiS300_CHTVVCLKSONTSC[] = { 0x2c,0x2c,0x2c,0x2c,0x2d,0x2b }; 1065 1066 static const unsigned char SiS300_CHTVVCLKUPAL[] = { 0x2f,0x2f,0x2f,0x2f,0x2f,0x31 }; 1067 1068 static const unsigned char SiS300_CHTVVCLKOPAL[] = { 0x2f,0x2f,0x2f,0x2f,0x30,0x32 }; 1069 1070 static const unsigned char SiS300_CHTVVCLKSOPAL[] = { 0x2f,0x2f,0x2f,0x2f,0x36,0x29 }; 1071 1072 1073