1 /* $XFree86$ */ 2 /* $XdotOrg$ */ 3 /* 4 * Data and prototypes for init.c 5 * 6 * Copyright (C) 2001-2004 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 EXPRESSED 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 #ifndef _INIT_ 54 #define _INIT_ 55 56 #include "osdef.h" 57 58 #include "initdef.h" 59 #include "vgatypes.h" 60 #include "vstruct.h" 61 62 #ifdef LINUX_XF86 63 #include "xf86.h" 64 #include "xf86Pci.h" 65 #include "xf86PciInfo.h" 66 #include "xf86_OSproc.h" 67 #include "sis.h" 68 #include "sis_regs.h" 69 #endif 70 71 #ifdef LINUX_KERNEL 72 #ifdef SIS_CP 73 #undef SIS_CP 74 #endif 75 #include <linux/config.h> 76 #include <linux/version.h> 77 #include <linux/types.h> 78 #include <asm/io.h> 79 #include <linux/fb.h> 80 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) 81 #include <linux/sisfb.h> 82 #else 83 #include <video/sisfb.h> 84 #endif 85 #endif 86 87 /* Mode numbers */ 88 const USHORT ModeIndex_320x200[] = {0x59, 0x41, 0x00, 0x4f}; 89 const USHORT ModeIndex_320x240[] = {0x50, 0x56, 0x00, 0x53}; 90 const USHORT ModeIndex_320x240_FSTN[] = {0x5a, 0x5b, 0x00, 0x00}; /* FSTN */ 91 const USHORT ModeIndex_400x300[] = {0x51, 0x57, 0x00, 0x54}; 92 const USHORT ModeIndex_512x384[] = {0x52, 0x58, 0x00, 0x5c}; 93 const USHORT ModeIndex_640x400[] = {0x2f, 0x5d, 0x00, 0x5e}; 94 const USHORT ModeIndex_640x480[] = {0x2e, 0x44, 0x00, 0x62}; 95 const USHORT ModeIndex_720x480[] = {0x31, 0x33, 0x00, 0x35}; 96 const USHORT ModeIndex_720x576[] = {0x32, 0x34, 0x00, 0x36}; 97 const USHORT ModeIndex_768x576[] = {0x5f, 0x60, 0x00, 0x61}; 98 const USHORT ModeIndex_800x480[] = {0x70, 0x7a, 0x00, 0x76}; 99 const USHORT ModeIndex_800x600[] = {0x30, 0x47, 0x00, 0x63}; 100 const USHORT ModeIndex_848x480[] = {0x39, 0x3b, 0x00, 0x3e}; 101 const USHORT ModeIndex_856x480[] = {0x3f, 0x42, 0x00, 0x45}; 102 const USHORT ModeIndex_1024x768[] = {0x38, 0x4a, 0x00, 0x64}; 103 const USHORT ModeIndex_1024x576[] = {0x71, 0x74, 0x00, 0x77}; 104 const USHORT ModeIndex_1024x600[] = {0x20, 0x21, 0x00, 0x22}; /* 300 series only */ 105 const USHORT ModeIndex_1280x1024[] = {0x3a, 0x4d, 0x00, 0x65}; 106 const USHORT ModeIndex_1280x960[] = {0x7c, 0x7d, 0x00, 0x7e}; 107 const USHORT ModeIndex_1152x768[] = {0x23, 0x24, 0x00, 0x25}; /* 300 series only */ 108 const USHORT ModeIndex_1152x864[] = {0x29, 0x2a, 0x00, 0x2b}; 109 const USHORT ModeIndex_300_1280x768[] = {0x55, 0x5a, 0x00, 0x5b}; 110 const USHORT ModeIndex_310_1280x768[] = {0x23, 0x24, 0x00, 0x25}; 111 const USHORT ModeIndex_1280x720[] = {0x79, 0x75, 0x00, 0x78}; 112 const USHORT ModeIndex_1280x800[] = {0x14, 0x15, 0x00, 0x16}; 113 const USHORT ModeIndex_1360x768[] = {0x48, 0x4b, 0x00, 0x4e}; 114 const USHORT ModeIndex_300_1360x1024[]= {0x67, 0x6f, 0x00, 0x72}; /* 300 series, BARCO only */ 115 const USHORT ModeIndex_1400x1050[] = {0x26, 0x27, 0x00, 0x28}; /* 315 series only */ 116 const USHORT ModeIndex_1680x1050[] = {0x17, 0x18, 0x00, 0x19}; /* 315 series only */ 117 const USHORT ModeIndex_1600x1200[] = {0x3c, 0x3d, 0x00, 0x66}; 118 const USHORT ModeIndex_1920x1440[] = {0x68, 0x69, 0x00, 0x6b}; 119 const USHORT ModeIndex_300_2048x1536[]= {0x6c, 0x6d, 0x00, 0x00}; 120 const USHORT ModeIndex_310_2048x1536[]= {0x6c, 0x6d, 0x00, 0x6e}; 121 122 const USHORT SiS_DRAMType[17][5]={ 123 {0x0C,0x0A,0x02,0x40,0x39}, 124 {0x0D,0x0A,0x01,0x40,0x48}, 125 {0x0C,0x09,0x02,0x20,0x35}, 126 {0x0D,0x09,0x01,0x20,0x44}, 127 {0x0C,0x08,0x02,0x10,0x31}, 128 {0x0D,0x08,0x01,0x10,0x40}, 129 {0x0C,0x0A,0x01,0x20,0x34}, 130 {0x0C,0x09,0x01,0x08,0x32}, 131 {0x0B,0x08,0x02,0x08,0x21}, 132 {0x0C,0x08,0x01,0x08,0x30}, 133 {0x0A,0x08,0x02,0x04,0x11}, 134 {0x0B,0x0A,0x01,0x10,0x28}, 135 {0x09,0x08,0x02,0x02,0x01}, 136 {0x0B,0x09,0x01,0x08,0x24}, 137 {0x0B,0x08,0x01,0x04,0x20}, 138 {0x0A,0x08,0x01,0x02,0x10}, 139 {0x09,0x08,0x01,0x01,0x00} 140 }; 141 142 const USHORT SiS_SDRDRAM_TYPE[13][5] = 143 { 144 { 2,12, 9,64,0x35}, 145 { 1,13, 9,64,0x44}, 146 { 2,12, 8,32,0x31}, 147 { 2,11, 9,32,0x25}, 148 { 1,12, 9,32,0x34}, 149 { 1,13, 8,32,0x40}, 150 { 2,11, 8,16,0x21}, 151 { 1,12, 8,16,0x30}, 152 { 1,11, 9,16,0x24}, 153 { 1,11, 8, 8,0x20}, 154 { 2, 9, 8, 4,0x01}, 155 { 1,10, 8, 4,0x10}, 156 { 1, 9, 8, 2,0x00} 157 }; 158 159 const USHORT SiS_DDRDRAM_TYPE[4][5] = 160 { 161 { 2,12, 9,64,0x35}, 162 { 2,12, 8,32,0x31}, 163 { 2,11, 8,16,0x21}, 164 { 2, 9, 8, 4,0x01} 165 }; 166 167 const USHORT SiS_MDA_DAC[] = 168 { 169 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 170 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 171 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 172 0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F, 173 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 174 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 175 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 176 0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F 177 }; 178 179 const USHORT SiS_CGA_DAC[] = 180 { 181 0x00,0x10,0x04,0x14,0x01,0x11,0x09,0x15, 182 0x00,0x10,0x04,0x14,0x01,0x11,0x09,0x15, 183 0x2A,0x3A,0x2E,0x3E,0x2B,0x3B,0x2F,0x3F, 184 0x2A,0x3A,0x2E,0x3E,0x2B,0x3B,0x2F,0x3F, 185 0x00,0x10,0x04,0x14,0x01,0x11,0x09,0x15, 186 0x00,0x10,0x04,0x14,0x01,0x11,0x09,0x15, 187 0x2A,0x3A,0x2E,0x3E,0x2B,0x3B,0x2F,0x3F, 188 0x2A,0x3A,0x2E,0x3E,0x2B,0x3B,0x2F,0x3F 189 }; 190 191 const USHORT SiS_EGA_DAC[] = 192 { 193 0x00,0x10,0x04,0x14,0x01,0x11,0x05,0x15, 194 0x20,0x30,0x24,0x34,0x21,0x31,0x25,0x35, 195 0x08,0x18,0x0C,0x1C,0x09,0x19,0x0D,0x1D, 196 0x28,0x38,0x2C,0x3C,0x29,0x39,0x2D,0x3D, 197 0x02,0x12,0x06,0x16,0x03,0x13,0x07,0x17, 198 0x22,0x32,0x26,0x36,0x23,0x33,0x27,0x37, 199 0x0A,0x1A,0x0E,0x1E,0x0B,0x1B,0x0F,0x1F, 200 0x2A,0x3A,0x2E,0x3E,0x2B,0x3B,0x2F,0x3F 201 }; 202 203 const USHORT SiS_VGA_DAC[] = 204 { 205 0x00,0x10,0x04,0x14,0x01,0x11,0x09,0x15, 206 0x2A,0x3A,0x2E,0x3E,0x2B,0x3B,0x2F,0x3F, 207 0x00,0x05,0x08,0x0B,0x0E,0x11,0x14,0x18, 208 0x1C,0x20,0x24,0x28,0x2D,0x32,0x38,0x3F, 209 0x00,0x10,0x1F,0x2F,0x3F,0x1F,0x27,0x2F, 210 0x37,0x3F,0x2D,0x31,0x36,0x3A,0x3F,0x00, 211 0x07,0x0E,0x15,0x1C,0x0E,0x11,0x15,0x18, 212 0x1C,0x14,0x16,0x18,0x1A,0x1C,0x00,0x04, 213 0x08,0x0C,0x10,0x08,0x0A,0x0C,0x0E,0x10, 214 0x0B,0x0C,0x0D,0x0F,0x10 215 }; 216 217 static const SiS_StResInfoStruct SiS_StResInfo[]= 218 { 219 { 640,400}, 220 { 640,350}, 221 { 720,400}, 222 { 720,350}, 223 { 640,480} 224 }; 225 226 static const SiS_ModeResInfoStruct SiS_ModeResInfo[] = 227 { 228 { 320, 200, 8, 8}, /* 0x00 */ 229 { 320, 240, 8, 8}, /* 0x01 */ 230 { 320, 400, 8, 8}, /* 0x02 */ 231 { 400, 300, 8, 8}, /* 0x03 */ 232 { 512, 384, 8, 8}, /* 0x04 */ 233 { 640, 400, 8,16}, /* 0x05 */ 234 { 640, 480, 8,16}, /* 0x06 */ 235 { 800, 600, 8,16}, /* 0x07 */ 236 { 1024, 768, 8,16}, /* 0x08 */ 237 { 1280,1024, 8,16}, /* 0x09 */ 238 { 1600,1200, 8,16}, /* 0x0a */ 239 { 1920,1440, 8,16}, /* 0x0b */ 240 { 2048,1536, 8,16}, /* 0x0c */ 241 { 720, 480, 8,16}, /* 0x0d */ 242 { 720, 576, 8,16}, /* 0x0e */ 243 { 1280, 960, 8,16}, /* 0x0f */ 244 { 800, 480, 8,16}, /* 0x10 */ 245 { 1024, 576, 8,16}, /* 0x11 */ 246 { 1280, 720, 8,16}, /* 0x12 */ 247 { 856, 480, 8,16}, /* 0x13 */ 248 { 1280, 768, 8,16}, /* 0x14 */ 249 { 1400,1050, 8,16}, /* 0x15 */ 250 { 1152, 864, 8,16}, /* 0x16 */ 251 { 848, 480, 8,16}, /* 0x17 */ 252 { 1360, 768, 8,16}, /* 0x18 */ 253 { 1024, 600, 8,16}, /* 0x19 */ 254 { 1152, 768, 8,16}, /* 0x1a */ 255 { 768, 576, 8,16}, /* 0x1b */ 256 { 1360,1024, 8,16}, /* 0x1c */ 257 { 1680,1050, 8,16}, /* 0x1d */ 258 { 1280, 800, 8,16} /* 0x1e */ 259 }; 260 261 static SiS_StandTableStruct SiS_StandTable[]= 262 { 263 /* 0x00: MD_0_200 */ 264 { 265 0x28,0x18,0x08,0x0800, 266 {0x09,0x03,0x00,0x02}, 267 0x63, 268 {0x2d,0x27,0x28,0x90,0x2b,0xa0,0xbf,0x1f, 269 0x00,0xc7,0x06,0x07,0x00,0x00,0x00,0x00, 270 0x9c,0x8e,0x8f,0x14,0x1f,0x96,0xb9,0xa3, 271 0xff}, 272 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 273 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 274 0x08,0x00,0x0f,0x00}, 275 {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00, 276 0xff} 277 }, 278 /* 0x01: MD_1_200 */ 279 { 280 0x28,0x18,0x08,0x0800, 281 {0x09,0x03,0x00,0x02}, 282 0x63, 283 {0x2d,0x27,0x28,0x90,0x2b,0xa0,0xbf,0x1f, 284 0x00,0xc7,0x06,0x07,0x00,0x00,0x00,0x00, 285 0x9c,0x8e,0x8f,0x14,0x1f,0x96,0xb9,0xa3, 286 0xff}, 287 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 288 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 289 0x08,0x00,0x0f,0x00}, 290 {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00, 291 0xff} 292 }, 293 /* 0x02: MD_2_200 */ 294 { 295 0x50,0x18,0x08,0x1000, 296 {0x01,0x03,0x00,0x02}, 297 0x63, 298 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, 299 0x00,0xc7,0x06,0x07,0x00,0x00,0x00,0x00, 300 0x9c,0x8e,0x8f,0x28,0x1f,0x96,0xb9,0xa3, 301 0xff}, 302 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 303 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 304 0x08,0x00,0x0f,0x00}, 305 {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00, 306 0xff} 307 }, 308 /* 0x03: MD_3_200 - mode 0x03 - 0 */ 309 { 310 0x50,0x18,0x08,0x1000, 311 {0x01,0x03,0x00,0x02}, 312 0x63, 313 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, 314 0x00,0xc7,0x06,0x07,0x00,0x00,0x00,0x00, 315 0x9c,0x8e,0x8f,0x28,0x1f,0x96,0xb9,0xa3, 316 0xff}, 317 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 318 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 319 0x08,0x00,0x0f,0x00}, 320 {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00, 321 0xff} 322 }, 323 /* 0x04: MD_4 */ 324 { 325 0x28,0x18,0x08,0x4000, 326 {0x09,0x03,0x00,0x02}, 327 0x63, 328 {0x2d,0x27,0x28,0x90,0x2c,0x80,0xbf,0x1f, /* 0x2c is 2b for 300 */ 329 0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00, 330 0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xa2, 331 0xff}, 332 {0x00,0x13,0x15,0x17,0x02,0x04,0x06,0x07, 333 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 334 0x01,0x00,0x03,0x00}, 335 {0x00,0x00,0x00,0x00,0x00,0x30,0x0f,0x00, 336 0xff} 337 }, 338 /* 0x05: MD_5 */ 339 { 340 0x28,0x18,0x08,0x4000, 341 {0x09,0x03,0x00,0x02}, 342 0x63, 343 {0x2d,0x27,0x28,0x90,0x2c,0x80,0xbf,0x1f, /* 0x2c is 2b for 300 */ 344 0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00, 345 0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xa2, 346 0xff}, 347 {0x00,0x13,0x15,0x17,0x02,0x04,0x06,0x07, 348 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 349 0x01,0x00,0x03,0x00}, 350 {0x00,0x00,0x00,0x00,0x00,0x30,0x0f,0x00, 351 0xff} 352 }, 353 /* 0x06: MD_6 */ 354 { 355 0x50,0x18,0x08,0x4000, 356 {0x01,0x01,0x00,0x06}, 357 0x63, 358 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, /* 55,81 is 54,80 for 300 */ 359 0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00, 360 0x9c,0x8e,0x8f,0x28,0x00,0x96,0xb9,0xc2, 361 0xff}, 362 {0x00,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 363 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 364 0x01,0x00,0x01,0x00}, 365 {0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00, 366 0xff} 367 }, 368 /* 0x07: MD_7 */ 369 { 370 0x50,0x18,0x0e,0x1000, 371 {0x00,0x03,0x00,0x03}, 372 0xa6, 373 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, 374 0x00,0x4d,0x0b,0x0c,0x00,0x00,0x00,0x00, 375 0x83,0x85,0x5d,0x28,0x0d,0x63,0xba,0xa3, 376 0xff}, 377 {0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08, 378 0x10,0x18,0x18,0x18,0x18,0x18,0x18,0x18, 379 0x0e,0x00,0x0f,0x08}, 380 {0x00,0x00,0x00,0x00,0x00,0x10,0x0a,0x00, 381 0xff} 382 }, 383 /* 0x08: MDA_DAC */ 384 { 385 0x00,0x00,0x00,0x0000, 386 {0x00,0x00,0x00,0x15}, 387 0x15, 388 {0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 389 0x15,0x15,0x15,0x15,0x15,0x15,0x3f,0x3f, 390 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x00,0x00, 391 0x00}, 392 {0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x15, 393 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, 394 0x15,0x15,0x15,0x15}, 395 {0x15,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, 396 0x3f} 397 }, 398 /* 0x09: CGA_DAC */ 399 { 400 0x00,0x10,0x04,0x0114, 401 {0x11,0x09,0x15,0x00}, 402 0x10, 403 {0x04,0x14,0x01,0x11,0x09,0x15,0x2a,0x3a, 404 0x2e,0x3e,0x2b,0x3b,0x2f,0x3f,0x2a,0x3a, 405 0x2e,0x3e,0x2b,0x3b,0x2f,0x3f,0x00,0x10, 406 0x04}, 407 {0x14,0x01,0x11,0x09,0x15,0x00,0x10,0x04, 408 0x14,0x01,0x11,0x09,0x15,0x2a,0x3a,0x2e, 409 0x3e,0x2b,0x3b,0x2f}, 410 {0x3f,0x2a,0x3a,0x2e,0x3e,0x2b,0x3b,0x2f, 411 0x3f} 412 }, 413 /* 0x0a: EGA_DAC */ 414 { 415 0x00,0x10,0x04,0x0114, 416 {0x11,0x05,0x15,0x20}, 417 0x30, 418 {0x24,0x34,0x21,0x31,0x25,0x35,0x08,0x18, 419 0x0c,0x1c,0x09,0x19,0x0d,0x1d,0x28,0x38, 420 0x2c,0x3c,0x29,0x39,0x2d,0x3d,0x02,0x12, 421 0x06}, 422 {0x16,0x03,0x13,0x07,0x17,0x22,0x32,0x26, 423 0x36,0x23,0x33,0x27,0x37,0x0a,0x1a,0x0e, 424 0x1e,0x0b,0x1b,0x0f}, 425 {0x1f,0x2a,0x3a,0x2e,0x3e,0x2b,0x3b,0x2f, 426 0x3f} 427 }, 428 /* 0x0b: VGA_DAC */ 429 { 430 0x00,0x10,0x04,0x0114, 431 {0x11,0x09,0x15,0x2a}, 432 0x3a, 433 {0x2e,0x3e,0x2b,0x3b,0x2f,0x3f,0x00,0x05, 434 0x08,0x0b,0x0e,0x11,0x14,0x18,0x1c,0x20, 435 0x24,0x28,0x2d,0x32,0x38,0x3f,0x00,0x10, 436 0x1f}, 437 {0x2f,0x3f,0x1f,0x27,0x2f,0x37,0x3f,0x2d, 438 0x31,0x36,0x3a,0x3f,0x00,0x07,0x0e,0x15, 439 0x1c,0x0e,0x11,0x15}, 440 {0x18,0x1c,0x14,0x16,0x18,0x1a,0x1c,0x00, 441 0x04} 442 }, 443 /* 0x0c */ 444 { 445 0x08,0x0c,0x10,0x0a08, 446 {0x0c,0x0e,0x10,0x0b}, 447 0x0c, 448 {0x0d,0x0f,0x10,0x10,0x01,0x08,0x00,0x00, 449 0x00,0x00,0x01,0x00,0x02,0x02,0x01,0x00, 450 0x04,0x04,0x01,0x00,0x05,0x02,0x05,0x00, 451 0x06}, 452 {0x01,0x06,0x05,0x06,0x00,0x08,0x01,0x08, 453 0x00,0x07,0x02,0x07,0x06,0x07,0x00,0x00, 454 0x00,0x00,0x00,0x00}, 455 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 456 0x00} 457 }, 458 /* 0x0d: MD_D */ 459 { 460 0x28,0x18,0x08,0x2000, 461 {0x09,0x0f,0x00,0x06}, 462 0x63, 463 {0x2d,0x27,0x28,0x90,0x2c,0x80,0xbf,0x1f, /* 2c is 2b for 300 */ 464 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 465 0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xe3, 466 0xff}, 467 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 468 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 469 0x01,0x00,0x0f,0x00}, 470 {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f, 471 0xff} 472 }, 473 /* 0x0e: MD_E */ 474 { 475 0x50,0x18,0x08,0x4000, 476 {0x01,0x0f,0x00,0x06}, 477 0x63, 478 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, /* 55,81 is 54,80 for 300 */ 479 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 480 0x9c,0x8e,0x8f,0x28,0x00,0x96,0xb9,0xe3, 481 0xff}, 482 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 483 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, 484 0x01,0x00,0x0f,0x00}, 485 {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f, 486 0xff} 487 }, 488 /* 0x0f: ExtVGATable - modes > 0x13 */ 489 { 490 0x00,0x00,0x00,0x0000, 491 {0x01,0x0f,0x00,0x0e}, 492 0x23, 493 {0x5f,0x4f,0x50,0x82,0x54,0x80,0x0b,0x3e, 494 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00, 495 0xea,0x8c,0xdf,0x28,0x40,0xe7,0x04,0xa3, 496 0xff}, 497 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 498 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, 499 0x01,0x00,0x00,0x00}, 500 {0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0f, 501 0xff} 502 }, 503 /* 0x10: ROM_SAVEPTR - totally different for 300 */ 504 { 505 0x9f,0x3b,0x00,0x00c0, 506 {0x00,0x00,0x00,0x00}, 507 0x00, 508 {0x00,0x00,0x00,0x00,0x00,0x00,0xbb,0x3f, 509 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 510 0x00,0x00,0x1a,0x00,0xac,0x3e,0x00,0xc0, 511 0x00}, 512 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 513 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 514 0x00,0x00,0x00,0x00}, 515 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 516 0x00} 517 }, 518 /* 0x11: MD_F */ 519 { 520 0x50,0x18,0x0e,0x8000, 521 {0x01,0x0f,0x00,0x06}, 522 0xa2, 523 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, /* 55,81 is 54,80 on 300 */ 524 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00, 525 0x82,0x84,0x5d,0x28,0x0f,0x63,0xba,0xe3, /* 82,84 is 83,85 on 300 */ 526 0xff}, 527 {0x00,0x08,0x00,0x00,0x18,0x18,0x00,0x00, 528 0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00, 529 0x0b,0x00,0x05,0x00}, 530 {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x05, 531 0xff} 532 }, 533 /* 0x12: MD_10 */ 534 { 535 0x50,0x18,0x0e,0x8000, 536 {0x01,0x0f,0x00,0x06}, 537 0xa3, 538 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, /* 55,81 is 54,80 on 300 */ 539 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00, 540 0x82,0x84,0x5d,0x28,0x0f,0x63,0xba,0xe3, /* 82,84 is 83,85 on 300 */ 541 0xff}, 542 {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07, 543 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, 544 0x01,0x00,0x0f,0x00}, 545 {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f, 546 0xff} 547 }, 548 /* 0x13: MD_0_350 */ 549 { 550 0x28,0x18,0x0e,0x0800, 551 {0x09,0x03,0x00,0x02}, 552 0xa3, 553 {0x2d,0x27,0x28,0x90,0x2b,0xb1,0xbf,0x1f, /* b1 is a0 on 300 */ 554 0x00,0x4d,0x0b,0x0c,0x00,0x00,0x00,0x00, 555 0x83,0x85,0x5d,0x14,0x1f,0x63,0xba,0xa3, 556 0xff}, 557 {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07, 558 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, 559 0x08,0x00,0x0f,0x00}, 560 {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00, 561 0xff} 562 }, 563 /* 0x14: MD_1_350 */ 564 { 565 0x28,0x18,0x0e,0x0800, 566 {0x09,0x03,0x00,0x02}, 567 0xa3, 568 {0x2d,0x27,0x28,0x90,0x2b,0xa0,0xbf,0x1f, 569 0x00,0x4d,0x0b,0x0c,0x00,0x00,0x00,0x00, 570 0x83,0x85,0x5d,0x14,0x1f,0x63,0xba,0xa3, 571 0xff}, 572 {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07, 573 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, 574 0x08,0x00,0x0f,0x00}, 575 {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00, 576 0xff} 577 }, 578 /* 0x15: MD_2_350 */ 579 { 580 0x50,0x18,0x0e,0x1000, 581 {0x01,0x03,0x00,0x02}, 582 0xa3, 583 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, 584 0x00,0x4d,0x0b,0x0c,0x00,0x00,0x00,0x00, 585 0x83,0x85,0x5d,0x28,0x1f,0x63,0xba,0xa3, 586 0xff}, 587 {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07, 588 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, 589 0x08,0x00,0x0f,0x00}, 590 {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00, 591 0xff} 592 }, 593 /* 0x16: MD_3_350 - mode 0x03 - 1 */ 594 { 595 0x50,0x18,0x0e,0x1000, 596 {0x01,0x03,0x00,0x02}, 597 0xa3, 598 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, 599 0x00,0x4d,0x0b,0x0c,0x00,0x00,0x00,0x00, 600 0x83,0x85,0x5d,0x28,0x1f,0x63,0xba,0xa3, 601 0xff}, 602 {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07, 603 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, 604 0x08,0x00,0x0f,0x00}, 605 {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00, 606 0xff} 607 }, 608 /* 0x17: MD_0_1_400 */ 609 { 610 0x28,0x18,0x10,0x0800, 611 {0x08,0x03,0x00,0x02}, 612 0x67, 613 {0x2d,0x27,0x28,0x90,0x2b,0xb1,0xbf,0x1f, /* b1 is a0 on 300 */ 614 0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00, 615 0x9c,0x8e,0x8f,0x14,0x1f,0x96,0xb9,0xa3, 616 0xff}, 617 {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07, 618 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, 619 0x0c,0x00,0x0f,0x08}, 620 {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00, 621 0xff} 622 }, 623 /* 0x18: MD_2_3_400 - mode 0x03 - 2 */ 624 { 625 0x50,0x18,0x10,0x1000, 626 {0x00,0x03,0x00,0x02}, 627 0x67, 628 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, 629 0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00, 630 0x9c,0x8e,0x8f,0x28,0x1f,0x96,0xb9,0xa3, 631 0xff}, 632 {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07, 633 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, 634 0x0c,0x00,0x0f,0x08}, 635 {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00, 636 0xff} 637 }, 638 /* 0x19: MD_7_400 */ 639 { 640 0x50,0x18,0x10,0x1000, 641 {0x00,0x03,0x00,0x02}, 642 0x66, 643 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, 644 0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00, 645 0x9c,0x8e,0x8f,0x28,0x0f,0x96,0xb9,0xa3, 646 0xff}, 647 {0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08, 648 0x10,0x18,0x18,0x18,0x18,0x18,0x18,0x18, 649 0x0e,0x00,0x0f,0x08}, 650 {0x00,0x00,0x00,0x00,0x00,0x10,0x0a,0x00, 651 0xff} 652 }, 653 /* 0x1a: MD_11 */ 654 { 655 0x50,0x1d,0x10,0xa000, 656 {0x01,0x0f,0x00,0x06}, 657 0xe3, 658 {0x5f,0x4f,0x50,0x82,0x55,0x81,0x0b,0x3e, /* 55,81 is 54,80 on 300 */ 659 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00, 660 0xe9,0x8b,0xdf,0x28,0x00,0xe7,0x04,0xc3, /* e9,8b is ea,8c on 300 */ 661 0xff}, 662 {0x00,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, 663 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, 664 0x01,0x00,0x0f,0x00}, 665 {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x01, 666 0xff} 667 }, 668 /* 0x1b: ExtEGATable - Modes <= 0x02 */ 669 { 670 0x50,0x1d,0x10,0xa000, 671 {0x01,0x0f,0x00,0x06}, 672 0xe3, 673 {0x5f,0x4f,0x50,0x82,0x55,0x81,0x0b,0x3e, /* 55,81 is 54,80 on 300 */ 674 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00, 675 0xe9,0x8b,0xdf,0x28,0x00,0xe7,0x04,0xe3, /* e9,8b is ea,8c on 300 */ 676 0xff}, 677 {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07, 678 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, 679 0x01,0x00,0x0f,0x00}, 680 {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f, 681 0xff} 682 }, 683 /* 0x1c: MD_13 */ 684 { 685 0x28,0x18,0x08,0x2000, 686 {0x01,0x0f,0x00,0x0e}, 687 0x63, 688 {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f, /* 55,81 is 54,80 on 300 */ 689 0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00, 690 0x9c,0x8e,0x8f,0x28,0x40,0x96,0xb9,0xa3, 691 0xff}, 692 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 693 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, 694 0x41,0x00,0x0f,0x00}, 695 {0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0f, 696 0xff} 697 } 698 }; 699 700 /**************************************************************/ 701 /* SIS VIDEO BRIDGE ----------------------------------------- */ 702 /**************************************************************/ 703 704 static const UCHAR SiS_SoftSetting = 0x30; /* RAM setting */ 705 706 static const UCHAR SiS_OutputSelect = 0x40; 707 708 static const UCHAR SiS_NTSCTiming[] = { 709 0x17,0x1d,0x03,0x09,0x05,0x06,0x0c,0x0c, 710 0x94,0x49,0x01,0x0a,0x06,0x0d,0x04,0x0a, 711 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x1b, 712 0x0c,0x50,0x00,0x97,0x00,0xda,0x4a,0x17, 713 0x7d,0x05,0x4b,0x00,0x00,0xe2,0x00,0x02, 714 0x03,0x0a,0x65,0x9d,0x08,0x92,0x8f,0x40, 715 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x50, 716 0x00,0x40,0x44,0x00,0xdb,0x02,0x3b,0x00 717 }; 718 719 static const UCHAR SiS_PALTiming[] = { 720 0x19,0x52,0x35,0x6e,0x04,0x38,0x3d,0x70, 721 0x94,0x49,0x01,0x12,0x06,0x3e,0x35,0x6d, 722 0x06,0x14,0x3e,0x35,0x6d,0x00,0x45,0x2b, 723 0x70,0x50,0x00,0x9b,0x00,0xd9,0x5d,0x17, 724 0x7d,0x05,0x45,0x00,0x00,0xe8,0x00,0x02, 725 0x0d,0x00,0x68,0xb0,0x0b,0x92,0x8f,0x40, 726 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x63, 727 0x00,0x40,0x3e,0x00,0xe1,0x02,0x28,0x00 728 }; 729 730 static const UCHAR SiS_HiTVExtTiming[] = { 731 0x32,0x65,0x2c,0x5f,0x08,0x31,0x3a,0x64, 732 0x28,0x02,0x01,0x3d,0x06,0x3e,0x35,0x6d, 733 0x06,0x14,0x3e,0x35,0x6d,0x00,0xc5,0x3f, 734 0x64,0x90,0x33,0x8c,0x18,0x36,0x3e,0x13, 735 0x2a,0xde,0x2a,0x44,0x40,0x2a,0x44,0x40, 736 0x8e,0x8e,0x82,0x07,0x0b,0x92,0x0f,0x40, 737 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x3d, 738 0x63,0x4f,0x27,0x00,0xfc,0xff,0x6a,0x00 739 }; 740 741 static const UCHAR SiS_HiTVSt1Timing[] = { 742 0x32,0x65,0x2c,0x5f,0x08,0x31,0x3a,0x65, 743 0x28,0x02,0x01,0x3d,0x06,0x3e,0x35,0x6d, 744 0x06,0x14,0x3e,0x35,0x6d,0x00,0xc5,0x3f, 745 0x65,0x90,0x7b,0xa8,0x03,0xf0,0x87,0x03, 746 0x11,0x15,0x11,0xcf,0x10,0x11,0xcf,0x10, 747 0x35,0x35,0x3b,0x69,0x1d,0x92,0x0f,0x40, 748 0x60,0x80,0x14,0x90,0x8c,0x60,0x04,0x86, 749 0xaf,0x5d,0x0e,0x00,0xfc,0xff,0x2d,0x00 750 }; 751 752 static const UCHAR SiS_HiTVSt2Timing[] = { 753 0x32,0x65,0x2c,0x5f,0x08,0x31,0x3a,0x64, 754 0x28,0x02,0x01,0x3d,0x06,0x3e,0x35,0x6d, 755 0x06,0x14,0x3e,0x35,0x6d,0x00,0xc5,0x3f, 756 0x64,0x90,0x33,0x8c,0x18,0x36,0x3e,0x13, 757 0x2a,0xde,0x2a,0x44,0x40,0x2a,0x44,0x40, 758 0x8e,0x8e,0x82,0x07,0x0b,0x92,0x0f,0x40, 759 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x3d, 760 0x63,0x4f,0x27,0x00,0xfc,0xff,0x6a,0x00 761 }; 762 763 #if 0 764 static const UCHAR SiS_HiTVTextTiming[] = { 765 0x32,0x65,0x2c,0x5f,0x08,0x31,0x3a,0x65, 766 0x28,0x02,0x01,0x3d,0x06,0x3e,0x35,0x6d, 767 0x06,0x14,0x3e,0x35,0x6d,0x00,0xc5,0x3f, 768 0x65,0x90,0xe7,0xbc,0x03,0x0c,0x97,0x03, 769 0x14,0x78,0x14,0x08,0x20,0x14,0x08,0x20, 770 0xc8,0xc8,0x3b,0xd2,0x26,0x92,0x0f,0x40, 771 0x60,0x80,0x14,0x90,0x8c,0x60,0x04,0x96, 772 0x72,0x5c,0x11,0x00,0xfc,0xff,0x32,0x00 773 }; 774 #endif 775 776 static const UCHAR SiS_HiTVGroup3Data[] = { 777 0x00,0x1a,0x22,0x63,0x62,0x22,0x08,0x5f, 778 0x05,0x21,0xb2,0xb2,0x55,0x77,0x2a,0xa6, 779 0x25,0x2f,0x47,0xfa,0xc8,0xff,0x8e,0x20, 780 0x8c,0x6e,0x60,0x2e,0x58,0x48,0x72,0x44, 781 0x56,0x36,0x4f,0x6e,0x3f,0x80,0x00,0x80, 782 0x4f,0x7f,0x03,0xa8,0x7d,0x20,0x1a,0xa9, 783 0x14,0x05,0x03,0x7e,0x64,0x31,0x14,0x75, 784 0x18,0x05,0x18,0x05,0x4c,0xa8,0x01 785 }; 786 787 static const UCHAR SiS_HiTVGroup3Simu[] = { 788 0x00,0x1a,0x22,0x63,0x62,0x22,0x08,0x95, 789 0xdb,0x20,0xb8,0xb8,0x55,0x47,0x2a,0xa6, 790 0x25,0x2f,0x47,0xfa,0xc8,0xff,0x8e,0x20, 791 0x8c,0x6e,0x60,0x15,0x26,0xd3,0xe4,0x11, 792 0x56,0x36,0x4f,0x6e,0x3f,0x80,0x00,0x80, 793 0x67,0x36,0x01,0x47,0x0e,0x10,0xbe,0xb4, 794 0x01,0x05,0x03,0x7e,0x65,0x31,0x14,0x75, 795 0x18,0x05,0x18,0x05,0x4c,0xa8,0x01 796 }; 797 798 #if 0 799 static const UCHAR SiS_HiTVGroup3Text[] = { 800 0x00,0x1a,0x22,0x63,0x62,0x22,0x08,0xa7, 801 0xf5,0x20,0xce,0xce,0x55,0x47,0x2a,0xa6, 802 0x25,0x2f,0x47,0xfa,0xc8,0xff,0x8e,0x20, 803 0x8c,0x6e,0x60,0x18,0x2c,0x0c,0x20,0x22, 804 0x56,0x36,0x4f,0x6e,0x3f,0x80,0x00,0x80, 805 0x93,0x3c,0x01,0x50,0x2f,0x10,0xf4,0xca, 806 0x01,0x05,0x03,0x7e,0x65,0x31,0x14,0x75, 807 0x18,0x05,0x18,0x05,0x4c,0xa8,0x01 808 }; 809 #endif 810 811 static const UCHAR SiS_NTSCPhase[] = {0x21,0xed,0xba,0x08}; 812 static const UCHAR SiS_PALPhase[] = {0x2a,0x05,0xe3,0x00}; 813 static const UCHAR SiS_PALMPhase[] = {0x21,0xE4,0x2E,0x9B}; 814 static const UCHAR SiS_PALNPhase[] = {0x21,0xF4,0x3E,0xBA}; 815 static const UCHAR SiS_NTSCPhase2[] = {0x21,0xF0,0x7B,0xD6}; 816 static const UCHAR SiS_PALPhase2[] = {0x2a,0x09,0x86,0xe9}; 817 static const UCHAR SiS_PALMPhase2[] = {0x21,0xE6,0xEF,0xA4}; 818 static const UCHAR SiS_PALNPhase2[] = {0x21,0xF6,0x94,0x46}; 819 static const UCHAR SiS_SpecialPhase[] = {0x1e,0x8c,0x5c,0x7a}; 820 static const UCHAR SiS_SpecialPhaseM[]= {0x1e,0x83,0x0a,0xe0}; 821 static const UCHAR SiS_SpecialPhaseJ[]= {0x25,0xd4,0xfd,0x5e}; 822 823 static const SiS_TVDataStruct SiS_StPALData[] = 824 { 825 { 1, 1, 864, 525,1270, 400, 100, 0, 760,0xf4,0xff,0x1c,0x22}, 826 { 1, 1, 864, 525,1270, 350, 100, 0, 760,0xf4,0xff,0x1c,0x22}, 827 { 1, 1, 864, 525,1270, 400, 0, 0, 720,0xf1,0x04,0x1f,0x18}, 828 { 1, 1, 864, 525,1270, 350, 0, 0, 720,0xf4,0x0b,0x1c,0x0a}, 829 { 1, 1, 864, 525,1270, 480, 50, 0, 760,0xf4,0xff,0x1c,0x22}, 830 { 1, 1, 864, 525,1270, 600, 50, 0, 0,0xf4,0xff,0x1c,0x22} 831 }; 832 833 static const SiS_TVDataStruct SiS_ExtPALData[] = 834 { 835 { 27, 10, 848, 448,1270, 530, 50, 0, 50,0xf4,0xff,0x1c,0x22}, /* 640x400, 320x200 */ 836 { 108, 35, 848, 398,1270, 530, 50, 0, 50,0xf4,0xff,0x1c,0x22}, 837 { 12, 5, 954, 448,1270, 530, 50, 0, 50,0xf1,0x04,0x1f,0x18}, 838 { 9, 4, 960, 463,1644, 438, 50, 0, 50,0xf4,0x0b,0x1c,0x0a}, 839 { 9, 4, 848, 528,1270, 530, 0, 0, 50,0xf5,0xfb,0x1b,0x2a}, /* 640x480, 320x240 */ 840 /*{ 36, 25,1060, 648,1316, 530, 438, 0, 438,0xeb,0x05,0x25,0x16},*//* 800x600, 400x300 */ 841 { 36, 25,1060, 648,1270, 530, 438, 0, 438,0xeb,0x05,0x25,0x16}, /* 800x600, 400x300 - better */ 842 { 3, 2,1080, 619,1270, 540, 438, 0, 438,0xf3,0x00,0x1d,0x20}, /* 720x576 */ 843 { 1, 1,1170, 821,1270, 520, 686, 0, 686,0xF3,0x00,0x1D,0x20}, /* 1024x768 */ 844 { 1, 1,1170, 821,1270, 520, 686, 0, 686,0xF3,0x00,0x1D,0x20}, /* 1024x768 (for NTSC equ) */ 845 { 9, 4, 848, 528,1270, 530, 0, 0, 50,0xf5,0xfb,0x1b,0x2a} /* 720x480 test */ 846 }; 847 848 static const SiS_TVDataStruct SiS_StNTSCData[] = 849 { 850 { 1, 1, 858, 525,1270, 400, 50, 0, 760,0xf1,0x04,0x1f,0x18}, 851 { 1, 1, 858, 525,1270, 350, 50, 0, 640,0xf1,0x04,0x1f,0x18}, 852 { 1, 1, 858, 525,1270, 400, 0, 0, 720,0xf1,0x04,0x1f,0x18}, 853 { 1, 1, 858, 525,1270, 350, 0, 0, 720,0xf4,0x0b,0x1c,0x0a}, 854 { 1, 1, 858, 525,1270, 480, 0, 0, 760,0xf1,0x04,0x1f,0x18} 855 }; 856 857 static const SiS_TVDataStruct SiS_ExtNTSCData[] = 858 { 859 { 143, 65, 858, 443,1270, 440, 171, 0, 171,0xf1,0x04,0x1f,0x18}, /* 640x400, 320x200 */ 860 { 88, 35, 858, 393,1270, 440, 171, 0, 171,0xf1,0x04,0x1f,0x18}, 861 { 143, 70, 924, 443,1270, 440, 92, 0, 92,0xf1,0x04,0x1f,0x18}, 862 { 143, 70, 924, 393,1270, 440, 92, 0, 92,0xf4,0x0b,0x1c,0x0a}, 863 { 143, 76, 836, 523,1270, 440, 224, 0, 0,0xf1,0x05,0x1f,0x16}, /* 640x480, 320x240 */ 864 { 143, 120,1056, 643,1270, 440, 0, 128, 0,0xf4,0x10,0x1c,0x00}, /* 800x600, 400x300 */ 865 /*{ 2, 1, 858, 503,1270, 480, 0, 128, 0,0xee,0x0c,0x22,0x08},*/ /* 720x480 (old, from 650) */ 866 { 143, 76, 836, 523,1270, 440, 0, 128, 0,0xee,0x0c,0x22,0x08}, /* 720x480 - BETTER (from 300 series) */ 867 /*{ 65, 64,1056, 791,1270, 480, 638, 0, 0,0xEE,0x0C,0x22,0x08} */ /* 1024x768 (525i) */ 868 { 1, 1,1100, 811,1412, 440, 0, 128, 0,0xee,0x0c,0x22,0x08}, /* 1024x768 (525i) CORRECTED */ 869 { 65, 64,1056, 791,1270, 480, 455, 0, 0,0x00,0x00,0x00,0x00} /* 1024x768 (525p) */ 870 }; 871 872 static const SiS_TVDataStruct SiS_StHiTVData[] = /* Slave + TVSimu */ 873 { 874 { 1, 1, 0x37c,0x233,0x2b2,0x320, 0, 0, 0, 0x00,0x00,0x00,0x00}, 875 { 1, 1, 0x37c,0x233,0x2b2,0x2bc, 0, 0, 0, 0x00,0x00,0x00,0x00}, 876 { 1, 1, 0x37c,0x233,0x2b2,0x320, 0, 0, 0, 0x00,0x00,0x00,0x00}, 877 { 1, 1, 0x37c,0x233,0x2b2,0x2bc, 0, 0, 0, 0x00,0x00,0x00,0x00}, 878 { 1, 1, 0x37c,0x233,0x2b2,0x3c0, 0, 0, 0, 0x00,0x00,0x00,0x00}, 879 { 8, 5, 0x41a,0x2ab,0x670,0x3c0,0x150,128, 0, 0x00,0x00,0x00,0x00} 880 }; 881 882 static const SiS_TVDataStruct SiS_St2HiTVData[] = /* Slave */ 883 { 884 { 3, 1, 0x348,0x1e3,0x670,0x3c0,0x032, 0, 0, 0x00,0x00,0x00,0x00}, 885 { 1, 1, 0x37c,0x233,0x2b2,0x2bc, 0, 0, 0, 0x00,0x00,0x00,0x00}, 886 { 3, 1, 0x348,0x1e3,0x670,0x3c0,0x032, 0, 0, 0x00,0x00,0x00,0x00}, 887 { 1, 1, 0x37c,0x233,0x2b2,0x2bc, 0, 0, 0, 0x00,0x00,0x00,0x00}, 888 { 5, 2, 0x348,0x233,0x670,0x3c0,0x08d,128, 0, 0x00,0x00,0x00,0x00}, 889 { 8, 5, 0x41a,0x2ab,0x670,0x3c0,0x17c,128, 0, 0x00,0x00,0x00,0x00} 890 }; 891 892 static const SiS_TVDataStruct SiS_ExtHiTVData[] = 893 { 894 { 6, 1, 0x348,0x233,0x660,0x3c0, 0, 0, 0, 0x00,0x00,0x00,0x00}, 895 { 3, 1, 0x3c0,0x233,0x660,0x3c0, 0, 0, 0, 0x00,0x00,0x00,0x00}, 896 { 6, 1, 0x348,0x233,0x660,0x3c0, 0, 0, 0, 0x00,0x00,0x00,0x00}, 897 { 3, 1, 0x3c0,0x233,0x660,0x3c0, 0, 0, 0, 0x00,0x00,0x00,0x00}, 898 { 5, 1, 0x348,0x233,0x670,0x3c0,0x166,128, 0, 0x00,0x00,0x00,0x00}, /* 640x480 */ 899 { 16, 5, 0x41a,0x2ab,0x670,0x3c0,0x143,128, 0, 0x00,0x00,0x00,0x00}, /* 800x600 */ 900 { 25, 12, 0x4ec,0x353,0x670,0x3c0,0x032, 0, 0, 0x00,0x00,0x00,0x00}, /* 1024x768 */ 901 { 5, 4, 0x627,0x464,0x670,0x3c0,0x128, 0, 0, 0x00,0x00,0x00,0x00}, /* 1280x1024 */ 902 { 4, 1, 0x41a,0x233,0x60c,0x3c0,0x143,128, 0, 0x00,0x00,0x00,0x00}, /* 800x480 */ 903 { 5, 2, 0x578,0x293,0x670,0x3c0,0x032, 0, 0, 0x00,0x00,0x00,0x00}, /* 1024x576 */ 904 { 8, 5, 0x6d6,0x323,0x670,0x3c0,0x128, 0, 0, 0x00,0x00,0x00,0x00} /* 1280x720 */ 905 }; 906 907 static const SiS_TVDataStruct SiS_St525pData[] = 908 { 909 { 1, 1, 0x6b4,0x20d,0x4f6,0x190, 50, 0, 0x2f8, 0x00,0x00,0x00,0x00}, 910 { 1, 1, 0x6b4,0x20d,0x4f6,0x15e, 50, 0, 0x280, 0x00,0x00,0x00,0x00}, 911 { 1, 1, 0x6b4,0x20d,0x4f6,0x190, 50, 0, 0x2f8, 0x00,0x00,0x00,0x00}, 912 { 1, 1, 0x6b4,0x20d,0x4f6,0x15e, 50, 0, 0x280, 0x00,0x00,0x00,0x00}, 913 { 1, 1, 0x6b4,0x20d,0x4f6,0x1e0, 0, 0, 0x2f8, 0x00,0x00,0x00,0x00} 914 }; 915 916 static const SiS_TVDataStruct SiS_St750pData[] = 917 { 918 { 1, 1, 0x672,0x2ee,0x500,0x190, 50, 0, 0x2f8, 0x00,0x00,0x00,0x00}, 919 { 1, 1, 0x672,0x2ee,0x500,0x15e, 50, 0, 0x280, 0x00,0x00,0x00,0x00}, 920 { 1, 1, 0x672,0x2ee,0x500,0x190, 0, 0, 0x2d0, 0x00,0x00,0x00,0x00}, 921 { 1, 1, 0x672,0x2ee,0x500,0x15e, 0, 0, 0x2d0, 0x00,0x00,0x00,0x00}, 922 { 1, 1, 0x672,0x2ee,0x500,0x1e0, 0, 0, 0x2f8, 0x00,0x00,0x00,0x00} 923 }; 924 925 static const SiS_TVDataStruct SiS_Ext750pData[] = 926 { 927 #if 1 928 { 143, 65, 0x35a,0x1bb,0x4f6,0x1b8,0x0ab, 0, 0x0ab, 0x00,0x00,0x00,0x00}, 929 { 88, 35, 0x35a,0x189,0x4f6,0x1b8,0x0ab, 0, 0x0ab, 0x00,0x00,0x00,0x00}, 930 { 18, 5, 0x339,0x1ae,0x500,0x2d0,0x05c, 0, 0x05c, 0x00,0x00,0x00,0x00}, 931 { 143, 70, 0x39c,0x189,0x4f6,0x1b8,0x05c, 0, 0x05c, 0x00,0x00,0x00,0x00}, 932 { 99, 32, 0x320,0x1fe,0x500,0x2d0, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 640x480 */ 933 { 5, 4, 0x5d8,0x29e,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 800x600 */ 934 #if 0 935 { 2, 1, 0x35a,0x1f7,0x4f6,0x1e0, 0,128, 0, 0x00,0x00,0x00,0x00}, /* 720x480 */ 936 #endif 937 { 99, 32, 0x320,0x1fe,0x500,0x2d0, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 720x480 test */ 938 { 68, 64, 0x55f,0x346,0x500,0x2a8,0x27e, 0, 0, 0x00,0x00,0x00,0x00}, /* 1024x768 */ 939 { 5, 2, 0x3a7,0x226,0x500,0x2a8, 0,128, 0, 0x00,0x00,0x00,0x00}, /* 720x576 */ 940 { 25, 24, 0x5d8,0x2f3,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00} /* 1280x720 */ 941 #endif 942 #if 0 943 { 3, 1, 0x3a7,0x1d6,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, 944 { 24, 7, 0x3a7,0x1a4,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, 945 { 3, 1, 0x3a7,0x1d6,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, 946 { 24, 7, 0x3a7,0x1a4,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, 947 { 99, 32, 0x320,0x1fe,0x500,0x2d0, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 640x480 */ 948 { 5, 4, 0x5d8,0x29e,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 800x600 */ 949 { 2, 1, 0x35a,0x1f7,0x4f6,0x1e0, 0,128, 0, 0x00,0x00,0x00,0x00}, /* 720x480 */ 950 { 68, 64, 0x55f,0x346,0x500,0x2a8,0x27e, 0, 0, 0x00,0x00,0x00,0x00}, /* 1024x768 */ 951 { 25, 24, 0x5d8,0x2f3,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00} /* 1280x720 */ 952 #endif 953 #if 0 954 { 136, 35, 0x339,0x181,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* TEST (0.93) */ 955 { 17, 6, 0x339,0x203,0x460,0x2a8, 50, 0, 50, 0x00,0x00,0x00,0x00}, 956 { 136, 35, 0x339,0x181,0x460,0x2a8, 50, 0, 50, 0x00,0x00,0x00,0x00}, 957 { 17, 6, 0x339,0x203,0x460,0x2a8, 50, 0, 50, 0x00,0x00,0x00,0x00}, 958 { 85, 46, 0x3f4,0x27b,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 640x480 */ 959 { 17, 16, 0x55f,0x323,0x460,0x2a8,0x2b6, 0, 0, 0x00,0x00,0x00,0x00}, /* 800x600 */ 960 { 136, 35, 0x339,0x181,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 720x480 */ 961 { 187, 74, 0x39d,0x203,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 1024x768 */ 962 { 25, 24, 0x5d8,0x2f3,0x460,0x2a8, 50, 0, 50, 0x00,0x00,0x00,0x00} /* 1280x720 */ 963 #endif 964 }; 965 966 static const SiS_LCDDataStruct SiS_LCD1280x720Data[] = 967 { 968 { 14, 5, 864, 432, 1344, 806 }, /* 640x400 */ 969 { 16, 5, 864, 378, 1344, 806 }, 970 { 14, 5, 864, 432, 1344, 806 }, 971 { 16, 5, 864, 378, 1344, 806 }, 972 { 24, 11, 924, 523, 1344, 806 }, /* 640x480 */ 973 { 7, 5, 1152, 664, 1344, 806 }, /* 800x600 */ 974 { 0, 0, 0, 0, 0, 0 }, 975 { 0, 0, 0, 0, 0, 0 }, 976 { 0, 0, 0, 0, 0, 0 }, 977 { 0, 0, 0, 0, 0, 0 }, 978 { 1, 1, 1344, 806, 1344, 806 } /* 1280x720 */ 979 }; 980 981 /* About 1280x768: For TMDS, Panel_1280x768 will only be set if 982 * the panel is a Fujitsu 7911 (VL-17WDX8) (with clock 81, 1688x802) 983 * Other TMDS panels of this resolution will be treated as custom. 984 * For LVDS, we know two types. Data follows: 985 */ 986 987 static const SiS_LCDDataStruct SiS_StLCD1280x768_2Data[] = 988 { 989 { 64, 21, 858, 434, 1408, 806 }, /* 640x400 */ 990 { 32, 9, 858, 372, 1408, 806 }, 991 { 64, 21, 858, 434, 1408, 806 }, 992 { 32, 9, 858, 372, 1408, 806 }, 993 { 143, 68, 1024, 527, 1408, 806 }, /* 640x480 */ 994 { 64, 51, 1364, 663, 1408, 806 }, /* 800x600 */ 995 { 88, 81, 1296, 806, 1408, 806 }, /* 1024x768 */ 996 { 0, 0, 0, 0, 0, 0 }, 997 { 1, 1, 1408, 806, 1408, 806 } /* 1280x768 */ 998 }; 999 1000 static const SiS_LCDDataStruct SiS_ExtLCD1280x768_2Data[] = 1001 { 1002 { 64, 25, 1056, 422, 1408, 806 }, /*, 664 */ 1003 { 128, 39, 884, 396, 1408, 806 }, /*, 640 */ 1004 { 64, 25, 1056, 422, 1408, 806 }, /*, 664 */ 1005 { 128, 39, 884, 396, 1408, 806 }, /*, 640 */ 1006 { 32, 15, 1056, 513, 1408, 806 }, /*, 664 */ 1007 { 176, 125, 1280, 640, 1408, 806 }, /*, 768 */ 1008 { 88, 81, 1296, 806, 1408, 806 }, 1009 { 0, 0, 0, 0, 0, 0 }, 1010 { 1, 1, 1408, 806, 1408, 806 } 1011 }; 1012 1013 static const SiS_LCDDataStruct SiS_LCD1280x768_3Data[] = 1014 { 1015 { 64, 25, 1056, 422, 1664, 798 }, /* 640x400 */ 1016 { 128, 39, 884, 396, 1408, 806 }, /* ,640 */ 1017 { 64, 25, 1056, 422, 1664, 798 }, /* 640x400 */ 1018 { 128, 39, 884, 396, 1408, 806 }, /* ,640 */ 1019 { 32, 15, 1056, 513, 1408, 806 }, /* ,664 */ /* 640x480 */ 1020 { 176, 125, 1280, 640, 1408, 806 }, /* ,768 */ /* 800x600 */ 1021 { 64, 61, 1342, 806, 1408, 806 }, /* 1024x768 */ 1022 { 0, 0, 0, 0, 0, 0 }, 1023 { 1, 1, 1408, 806, 1408, 806 } /* 1280x768 */ 1024 }; 1025 1026 static const SiS_LCDDataStruct SiS_LCD1280x800Data[] = 1027 { 1028 { 128, 51, 1122, 412, 1408, 816 }, /* 640x400 */ 1029 { 128, 49, 1232, 361, 1408, 816 }, 1030 { 128, 51, 1122, 412, 1408, 816 }, 1031 { 128, 49, 1232, 361, 1408, 816 }, 1032 { 8, 3, 880, 491, 1408, 816 }, /* 640x480 */ 1033 { 11, 6, 1024, 612, 1408, 816 }, /* 800x600 */ 1034 { 22, 21, 1400, 784, 1408, 816 }, /* 1024x768 */ 1035 { 0, 0, 0, 0, 0, 0 }, 1036 { 1, 1, 1408, 816, 1408, 816 } /* 1280x800 */ 1037 }; 1038 1039 static const SiS_LCDDataStruct SiS_LCD1280x960Data[] = 1040 { 1041 { 9, 2, 800, 500, 1800, 1000 }, 1042 { 9, 2, 800, 500, 1800, 1000 }, 1043 { 4, 1, 900, 500, 1800, 1000 }, 1044 { 4, 1, 900, 500, 1800, 1000 }, 1045 { 9, 2, 800, 500, 1800, 1000 }, 1046 { 30, 11, 1056, 625, 1800, 1000 }, 1047 { 5, 3, 1350, 800, 1800, 1000 }, 1048 { 1, 1, 1576, 1050, 1576, 1050 }, 1049 { 1, 1, 1800, 1000, 1800, 1000 } 1050 }; 1051 1052 static const SiS_LCDDataStruct SiS_StLCD1400x1050Data[] = 1053 { 1054 { 211, 100, 2100, 408, 1688, 1066 }, 1055 { 211, 64, 1536, 358, 1688, 1066 }, 1056 { 211, 100, 2100, 408, 1688, 1066 }, 1057 { 211, 64, 1536, 358, 1688, 1066 }, 1058 { 211, 48, 840, 488, 1688, 1066 }, 1059 { 211, 72, 1008, 609, 1688, 1066 }, 1060 { 211, 128, 1400, 776, 1688, 1066 }, 1061 { 211, 205, 1680, 1041, 1688, 1066 }, 1062 { 1, 1, 1688, 1066, 1688, 1066 } 1063 }; 1064 1065 #undef SISUSE6330MODES 1066 1067 static const SiS_LCDDataStruct SiS_ExtLCD1400x1050Data[] = 1068 { 1069 #ifdef SISUSE6330MODES 1070 { 211, 60, 1260, 410, 1688, 1066 }, /* 640x400 (6330) */ 1071 #else 1072 { 211, 100, 2100, 408, 1688, 1066 }, /* 640x400 (6325) WORKS */ 1073 #endif 1074 { 211, 64, 1536, 358, 1688, 1066 }, 1075 { 211, 100, 2100, 408, 1688, 1066 }, 1076 { 211, 64, 1536, 358, 1688, 1066 }, 1077 #ifdef SISUSE6330MODES 1078 { 211, 80, 1400, 490, 1688, 1066 }, /* 640x480 (6330) */ 1079 { 211, 117, 1638, 613, 1688, 1066 }, /* 800x600 (6330) */ 1080 #else 1081 { 211, 48, 840, 488, 1688, 1066 }, /* 640x480 (6325) WORKS */ 1082 { 211, 72, 1008, 609, 1688, 1066 }, /* 800x600 (6325) WORKS */ 1083 #endif 1084 { 211, 128, 1400, 776, 1688, 1066 }, /* 1024x768 */ 1085 { 211, 205, 1680, 1041, 1688, 1066 }, /* 1280x1024 - not used (always unscaled) */ 1086 { 1, 1, 1688, 1066, 1688, 1066 }, /* 1400x1050 */ 1087 { 0, 0, 0, 0, 0, 0 }, /* kludge */ 1088 { 211, 120, 1400, 730, 1688, 1066 } /* 1280x720 */ 1089 }; 1090 1091 static const SiS_LCDDataStruct SiS_LCD1680x1050Data[] = 1092 { 1093 { 95, 24, 1260, 410, 1900, 1066 }, /* 0 640x400 */ 1094 { 10, 3, 1710, 362, 1900, 1066 }, 1095 { 95, 24, 1260, 410, 1900, 1066 }, 1096 { 10, 3, 1710, 362, 1900, 1066 }, 1097 { 95, 32, 1400, 490, 1900, 1066 }, /* 4 640x480 */ 1098 { 95, 42, 1470, 610, 1900, 1066 }, /* 5 800x600 */ 1099 { 95, 64, 1750, 784, 1900, 1066 }, /* 6 1024x768 */ 1100 { 95, 94, 1900, 1055, 1900, 1066 }, /* 7 1280x1024 */ 1101 { 41, 31, 1900, 806, 1900, 1066 }, /* 8 1280x768 */ 1102 { 95, 69, 1800, 817, 1900, 1066 }, /* 9 1280x800 patch */ 1103 { 13, 9, 1900, 739, 1900, 1066 }, /* 10 1280x720 */ 1104 { 95, 94, 1880, 1066, 1900, 1066 }, /* 11 1400x1050 patch */ 1105 { 1, 1, 1900, 1066, 1900, 1066 } /* 12 1680x1050 */ 1106 }; 1107 1108 static const SiS_LCDDataStruct SiS_StLCD1600x1200Data[] = 1109 { 1110 {27, 4, 800, 500, 2160, 1250 }, 1111 {27, 4, 800, 500, 2160, 1250 }, 1112 { 6, 1, 900, 500, 2160, 1250 }, 1113 { 6, 1, 900, 500, 2160, 1250 }, 1114 {27, 1, 800, 500, 2160, 1250 }, 1115 { 4, 1,1080, 625, 2160, 1250 }, 1116 { 5, 2,1350, 800, 2160, 1250 }, 1117 {135,88,1600,1100, 2160, 1250 }, 1118 {72, 49,1680,1092, 2160, 1250 }, 1119 { 1, 1,2160,1250, 2160, 1250 } 1120 }; 1121 1122 static const SiS_LCDDataStruct SiS_ExtLCD1600x1200Data[] = 1123 { 1124 #ifndef SISUSE6330MODES 1125 {72,11, 990, 422, 2160, 1250 }, /* 640x400 (6330) */ 1126 #else 1127 {27, 4, 800, 500, 2160, 1250 }, /* 640x400 (6235) */ 1128 #endif 1129 {27, 4, 800, 500, 2160, 1250 }, 1130 { 6, 1, 900, 500, 2160, 1250 }, 1131 { 6, 1, 900, 500, 2160, 1250 }, 1132 #ifndef SISUSE6330MODES 1133 {45, 8, 960, 505, 2160, 1250 }, /* 640x480 (6330) */ 1134 #else 1135 {27, 1, 800, 500, 2160, 1250 }, /* 640x480 (6325) */ 1136 #endif 1137 { 4, 1,1080, 625, 2160, 1250 }, 1138 { 5, 2,1350, 800, 2160, 1250 }, 1139 {27,16,1500,1064, 2160, 1250 }, /* 1280x1024 */ 1140 {72,49,1680,1092, 2160, 1250 }, /* 1400x1050 (6330, was not supported on 6325) */ 1141 { 1, 1,2160,1250, 2160, 1250 } 1142 }; 1143 1144 static const SiS_LCDDataStruct SiS_NoScaleData[] = 1145 { 1146 { 1, 1, 800, 449, 800, 449 }, /* 0x00: 320x200, 640x400 */ 1147 { 1, 1, 800, 449, 800, 449 }, 1148 { 1, 1, 900, 449, 900, 449 }, 1149 { 1, 1, 900, 449, 900, 449 }, 1150 { 1, 1, 800, 525, 800, 525 }, /* 0x04: 320x240, 640x480 */ 1151 { 1, 1,1056, 628,1056, 628 }, /* 0x05: 400x300, 800x600 */ 1152 { 1, 1,1344, 806,1344, 806 }, /* 0x06: 512x384, 1024x768 */ 1153 { 1, 1,1688,1066,1688,1066 }, /* 0x07: 1280x1024 */ 1154 { 1, 1,1688, 802,1688, 802 }, /* 0x08: 1280x768: Fujitsu, TMDS only */ 1155 { 1, 1,2160,1250,2160,1250 }, /* 0x09: 1600x1200 */ 1156 { 1, 1,1800,1000,1800,1000 }, /* 0x0a: 1280x960 */ 1157 { 1, 1,1688,1066,1688,1066 }, /* 0x0b: 1400x1050 */ 1158 { 1, 1,1650, 750,1650, 750 }, /* 0x0c: 1280x720 (TMDS, projector) */ 1159 { 1, 1,1656, 841,1656, 841 }, /* 0x0d: 1280x800 (was: 1408, 816) */ 1160 { 1, 1,1900,1066,1900,1066 }, /* 0x0e: 1680x1050 (LVDS) */ 1161 { 1, 1,1408, 806,1408, 806 }, /* 0x0f: 1280x768_2 */ 1162 { 1, 1,1664, 798,1664, 798 }, /* 0x10: 1280x768_3 */ 1163 { 1, 1,1688, 802,1688, 802 }, /* 0x11: 1280x768: Std, TMDS only */ 1164 { 1, 1,1344, 806,1344, 806 }, /* 0x12: 1280x720 (LVDS) */ 1165 { 1, 1, 896, 497, 896, 497 }, /* 0x13: 720x480 */ 1166 { 1, 1, 912, 597, 912, 597 }, /* 0x14: 720x576 */ 1167 { 1, 1, 912, 597, 912, 597 }, /* 0x15: 768x576 */ 1168 { 1, 1,1056, 497,1056, 497 }, /* 0x16: 848x480 */ 1169 { 1, 1,1064, 497,1064, 497 }, /* 0x17: 856x480 */ 1170 { 1, 1,1056, 497,1056, 497 }, /* 0x18: 800x480 */ 1171 { 1, 1,1328, 739,1328, 739 }, /* 0x19: 1024x576 */ 1172 { 1, 1,1680, 892,1680, 892 }, /* 0x1a: 1152x864 */ 1173 { 1, 1,1808, 808,1808, 808 } /* 0x1b: 1360x768 */ 1174 }; 1175 1176 1177 /**************************************************************/ 1178 /* LVDS ----------------------------------------------------- */ 1179 /**************************************************************/ 1180 1181 static const SiS_LVDSDataStruct SiS_LVDS320x480Data_1[]= 1182 { 1183 { 848, 433, 400, 525}, 1184 { 848, 389, 400, 525}, 1185 { 848, 433, 400, 525}, 1186 { 848, 389, 400, 525}, 1187 { 848, 518, 400, 525}, 1188 {1056, 628, 400, 525}, 1189 { 400, 525, 400, 525}, 1190 { 800, 449,1000, 644}, 1191 { 800, 525,1000, 635} 1192 }; 1193 1194 static const SiS_LVDSDataStruct SiS_LVDS640x480Data_1[]= 1195 { 1196 { 800, 445, 800, 525}, /* 800, 449, 800, 449 */ 1197 { 800, 395, 800, 525}, 1198 { 800, 445, 800, 525}, 1199 { 800, 395, 800, 525}, 1200 { 800, 525, 800, 525}, 1201 { 800, 525, 800, 525}, /* pseudo */ 1202 { 800, 525, 800, 525} /* pseudo */ 1203 }; 1204 1205 /* FSTN 320x240 */ 1206 static const SiS_LVDSDataStruct SiS_LVDS640x480Data_2[]= 1207 { 1208 { 800, 445, 800, 525}, 1209 { 800, 395, 800, 525}, 1210 { 800, 445, 800, 525}, 1211 { 800, 395, 800, 525}, 1212 { 800, 525, 800, 525}, 1213 { 800, 525, 800, 525}, /* pseudo */ 1214 { 800, 525, 800, 525} /* pseudo */ 1215 }; 1216 1217 1218 static const SiS_LVDSDataStruct SiS_LVDS800x600Data_1[]= 1219 { 1220 { 848, 433,1060, 629}, 1221 { 848, 389,1060, 629}, 1222 { 848, 433,1060, 629}, 1223 { 848, 389,1060, 629}, 1224 { 848, 518,1060, 629}, 1225 {1056, 628,1056, 628}, 1226 {1056, 628,1056, 628} 1227 }; 1228 1229 static const SiS_LVDSDataStruct SiS_LVDS800x600Data_2[]= 1230 { 1231 {1056, 628,1056, 628}, 1232 {1056, 628,1056, 628}, 1233 {1056, 628,1056, 628}, 1234 {1056, 628,1056, 628}, 1235 {1056, 628,1056, 628}, 1236 {1056, 628,1056, 628}, 1237 {1056, 628,1056, 628} 1238 }; 1239 1240 static const SiS_LVDSDataStruct SiS_LVDS1024x768Data_1[]= 1241 { 1242 { 840, 438,1344, 806}, 1243 { 840, 409,1344, 806}, 1244 { 840, 438,1344, 806}, 1245 { 840, 409,1344, 806}, 1246 { 840, 518,1344, 806}, /* 640x480 */ 1247 {1050, 638,1344, 806}, /* 800x600 */ 1248 {1344, 806,1344, 806}, /* 1024x768 */ 1249 }; 1250 1251 static const SiS_LVDSDataStruct SiS_LVDS1024x768Data_2[]= 1252 { 1253 {1344, 806,1344, 806}, 1254 {1344, 806,1344, 806}, 1255 {1344, 806,1344, 806}, 1256 {1344, 806,1344, 806}, 1257 {1344, 806,1344, 806}, 1258 {1344, 806,1344, 806}, 1259 {1344, 806,1344, 806}, 1260 }; 1261 1262 static const SiS_LVDSDataStruct SiS_LVDS1280x1024Data_1[]= 1263 { 1264 {1048, 442,1688,1066}, 1265 {1048, 392,1688,1066}, 1266 {1048, 442,1688,1066}, 1267 {1048, 392,1688,1066}, 1268 {1048, 522,1688,1066}, 1269 {1208, 642,1688,1066}, 1270 {1432, 810,1688,1066}, 1271 {1688,1066,1688,1066} 1272 }; 1273 1274 static const SiS_LVDSDataStruct SiS_LVDS1280x1024Data_2[]= 1275 { 1276 {1688,1066,1688,1066}, 1277 {1688,1066,1688,1066}, 1278 {1688,1066,1688,1066}, 1279 {1688,1066,1688,1066}, 1280 {1688,1066,1688,1066}, 1281 {1688,1066,1688,1066}, 1282 {1688,1066,1688,1066}, 1283 {1688,1066,1688,1066} 1284 }; 1285 1286 static const SiS_LVDSDataStruct SiS_LVDS1400x1050Data_1[]= 1287 { 1288 { 928, 416, 1688,1066}, 1289 { 928, 366, 1688,1066}, 1290 { 928, 416, 1688,1066}, 1291 { 928, 366, 1688,1066}, 1292 { 928, 496, 1688,1066}, 1293 {1088, 616, 1688,1066}, 1294 {1312, 784, 1688,1066}, 1295 {1568,1040, 1688,1066}, 1296 {1688,1066, 1688,1066} 1297 }; 1298 1299 static const SiS_LVDSDataStruct SiS_LVDS1400x1050Data_2[]= 1300 { 1301 {1688,1066, 1688,1066}, 1302 {1688,1066, 1688,1066}, 1303 {1688,1066, 1688,1066}, 1304 {1688,1066, 1688,1066}, 1305 {1688,1066, 1688,1066}, 1306 {1688,1066, 1688,1066}, 1307 {1688,1066, 1688,1066}, 1308 {1688,1066, 1688,1066}, 1309 {1688,1066, 1688,1066}, 1310 }; 1311 1312 static const SiS_LVDSDataStruct SiS_LVDS1600x1200Data_1[]= 1313 { 1314 {1088, 520, 2048,1320}, 1315 {1088, 470, 2048,1320}, 1316 {1088, 520, 2048,1320}, 1317 {1088, 470, 2048,1320}, 1318 {1088, 600, 2048,1320}, 1319 {1248, 720, 2048,1320}, 1320 {1472, 888, 2048,1320}, 1321 {1728,1144, 2048,1320}, 1322 {1848,1170, 2048,1320}, 1323 {2048,1320, 2048,1320} 1324 #if 0 1325 {1088, 450, 2048,1250}, 1326 {1088, 400, 2048,1250}, 1327 {1088, 450, 2048,1250}, 1328 {1088, 400, 2048,1250}, 1329 {1088, 530, 2048,1250}, 1330 {1248, 650, 2048,1250}, 1331 {1472, 818, 2048,1250}, 1332 {1728,1066, 2048,1250}, 1333 {1848,1066, 2048,1250}, 1334 {2048,1250, 2048,1250} 1335 #endif 1336 }; 1337 1338 static const SiS_LVDSDataStruct SiS_LVDS1600x1200Data_2[]= 1339 { 1340 {2048,1320, 2048,1320}, 1341 {2048,1320, 2048,1320}, 1342 {2048,1320, 2048,1320}, 1343 {2048,1320, 2048,1320}, 1344 {2048,1320, 2048,1320}, 1345 {2048,1320, 2048,1320}, 1346 {2048,1320, 2048,1320}, 1347 {2048,1320, 2048,1320}, 1348 {2048,1320, 2048,1320}, 1349 {2048,1320, 2048,1320} 1350 }; 1351 1352 static const SiS_LVDSDataStruct SiS_LVDS1280x960Data_1[]= 1353 { 1354 { 840, 438,1344, 806}, 1355 { 840, 409,1344, 806}, 1356 { 840, 438,1344, 806}, 1357 { 840, 409,1344, 806}, 1358 { 840, 518,1344, 806}, 1359 {1050, 638,1344, 806}, 1360 {1344, 806,1344, 806}, 1361 { 800, 449,1280, 801}, 1362 { 800, 525,1280, 813} 1363 }; 1364 1365 static const SiS_LVDSDataStruct SiS_LVDS1280x960Data_2[]= 1366 { 1367 {1344, 806,1344, 806}, 1368 {1344, 806,1344, 806}, 1369 {1344, 806,1344, 806}, 1370 {1344, 806,1344, 806}, 1371 {1344, 806,1344, 806}, 1372 {1344, 806,1344, 806}, 1373 {1344, 806,1344, 806}, 1374 { 800, 449,1280, 801}, 1375 { 800, 525,1280, 813} 1376 }; 1377 1378 static const SiS_LVDSDataStruct SiS_LVDS1280x768Data_1[]= 1379 { 1380 { 768, 438, 1408, 806}, 1381 { 768, 388, 1408, 806}, 1382 { 768, 438, 1408, 806}, 1383 { 768, 388, 1408, 806}, 1384 { 768, 518, 1408, 806}, 1385 { 928, 638, 1408, 806}, 1386 {1152, 806, 1408, 806}, 1387 {1408, 806, 1408, 806}, 1388 {1408, 806, 1408, 806} 1389 }; 1390 1391 static const SiS_LVDSDataStruct SiS_LVDS1280x768Data_2[]= 1392 { 1393 {1408, 806, 1408, 806}, 1394 {1408, 806, 1408, 806}, 1395 {1408, 806, 1408, 806}, 1396 {1408, 806, 1408, 806}, 1397 {1408, 806, 1408, 806}, 1398 {1408, 806, 1408, 806}, 1399 {1408, 806, 1408, 806}, 1400 {1408, 806, 1408, 806}, 1401 {1408, 806, 1408, 806} 1402 }; 1403 1404 static const SiS_LVDSDataStruct SiS_LVDS1024x600Data_1[] = 1405 { 1406 { 840, 604,1344, 800}, 1407 { 840, 560,1344, 800}, 1408 { 840, 604,1344, 800}, 1409 { 840, 560,1344, 800}, 1410 { 840, 689,1344, 800}, 1411 {1050, 800,1344, 800}, 1412 {1344, 800,1344, 800} 1413 }; 1414 1415 static const SiS_LVDSDataStruct SiS_LVDS1024x600Data_2[] = 1416 { 1417 {1344, 800,1344, 800}, 1418 {1344, 800,1344, 800}, 1419 {1344, 800,1344, 800}, 1420 {1344, 800,1344, 800}, 1421 {1344, 800,1344, 800}, 1422 {1344, 800,1344, 800}, 1423 {1344, 800,1344, 800} 1424 }; 1425 1426 static const SiS_LVDSDataStruct SiS_LVDS1152x768Data_1[] = 1427 { 1428 { 840, 438,1344, 806}, 1429 { 840, 409,1344, 806}, 1430 { 840, 438,1344, 806}, 1431 { 840, 409,1344, 806}, 1432 { 840, 518,1344, 806}, 1433 {1050, 638,1344, 806}, 1434 {1344, 806,1344, 806} 1435 }; 1436 1437 static const SiS_LVDSDataStruct SiS_LVDS1152x768Data_2[] = 1438 { 1439 {1344, 806,1344, 806}, 1440 {1344, 806,1344, 806}, 1441 {1344, 806,1344, 806}, 1442 {1344, 806,1344, 806}, 1443 {1344, 806,1344, 806}, 1444 {1344, 806,1344, 806}, 1445 {1344, 806,1344, 806} 1446 }; 1447 1448 /* Pass 1:1 data */ 1449 static const SiS_LVDSDataStruct SiS_LVDSXXXxXXXData_1[]= 1450 { 1451 { 800, 449, 800, 449}, 1452 { 800, 449, 800, 449}, 1453 { 900, 449, 900, 449}, 1454 { 900, 449, 900, 449}, 1455 { 800, 525, 800, 525}, /* 640x480 */ 1456 {1056, 628, 1056, 628}, /* 800x600 */ 1457 {1344, 806, 1344, 806}, /* 1024x768 */ 1458 {1688,1066, 1688,1066}, /* 1280x1024 */ /* INSERTED ! */ 1459 {1688, 806, 1688, 806}, /* 1280x768 */ 1460 /* No other panels ! */ 1461 }; 1462 1463 /* Custom data for Barco iQ R series */ 1464 static const SiS_LVDSDataStruct SiS_LVDSBARCO1366Data_1[]= 1465 { 1466 { 832, 438,1331, 806}, 1467 { 832, 388,1331, 806}, 1468 { 832, 438,1331, 806}, 1469 { 832, 388,1331, 806}, 1470 { 832, 518,1331, 806}, 1471 {1050, 638,1344, 806}, 1472 {1344, 806,1344, 806}, 1473 {1688,1066,1688,1066}, 1474 {1688,1066,1688,1066} /* 1360x1024 */ 1475 }; 1476 1477 /* Custom data for Barco iQ R series */ 1478 static const SiS_LVDSDataStruct SiS_LVDSBARCO1366Data_2[]= 1479 { 1480 {1344, 806,1344, 806}, 1481 {1344, 806,1344, 806}, 1482 {1344, 806,1344, 806}, 1483 {1344, 806,1344, 806}, 1484 {1344, 806,1344, 806}, 1485 {1344, 806,1344, 806}, 1486 {1344, 806,1344, 806}, 1487 {1688,1066,1688,1066}, 1488 {1688,1066,1688,1066} /* 1360x1024 */ 1489 }; 1490 1491 /* Custom data for Barco iQ G series */ 1492 static const SiS_LVDSDataStruct SiS_LVDSBARCO1024Data_1[]= 1493 { 1494 { 832, 438,1331, 806}, 1495 { 832, 409,1331, 806}, 1496 { 832, 438,1331, 806}, 1497 { 832, 409,1331, 806}, 1498 { 832, 518,1331, 806}, /* 640x480 */ 1499 {1050, 638,1344, 806}, /* 800x600 */ 1500 {1344, 806,1344, 806}, /* 1024x768 */ 1501 }; 1502 1503 /* Custom data for Barco iQ G series */ 1504 static const SiS_LVDSDataStruct SiS_LVDSBARCO1024Data_2[]= 1505 { 1506 {1344, 806,1344, 806}, 1507 {1344, 806,1344, 806}, 1508 {1344, 806,1344, 806}, 1509 {1344, 806,1344, 806}, 1510 {1344, 806,1344, 806}, 1511 {1344, 806,1344, 806}, 1512 {1344, 806,1344, 806}, 1513 }; 1514 1515 /* Custom data for 848x480 parallel panel */ 1516 static const SiS_LVDSDataStruct SiS_LVDS848x480Data_1[]= 1517 { 1518 { 0, 0, 0, 0}, 1519 { 0, 0, 0, 0}, 1520 { 0, 0, 0, 0}, 1521 { 0, 0, 0, 0}, 1522 {1088, 525,1088, 525}, /* 640x480 TODO */ 1523 {1088, 525,1088, 525}, /* 800x600 TODO */ 1524 {1088, 525,1088, 525}, /* 1024x768 TODO */ 1525 { 0, 0, 0, 0}, 1526 { 0, 0, 0, 0}, 1527 { 0, 0, 0, 0}, 1528 { 0, 0, 0, 0}, 1529 {1088, 525,1088, 525}, /* 848x480 */ 1530 {1088, 525,1088, 525} /* 1360x768 TODO */ 1531 }; 1532 1533 /* Custom data for 848x480 parallel panel */ 1534 static const SiS_LVDSDataStruct SiS_LVDS848x480Data_2[]= 1535 { 1536 { 0, 0, 0, 0}, 1537 { 0, 0, 0, 0}, 1538 { 0, 0, 0, 0}, 1539 { 0, 0, 0, 0}, 1540 {1088, 525,1088, 525}, /* 640x480 */ 1541 {1088, 525,1088, 525}, /* 800x600 */ 1542 {1088, 525,1088, 525}, /* 1024x768 */ 1543 { 0, 0, 0, 0}, 1544 { 0, 0, 0, 0}, 1545 { 0, 0, 0, 0}, 1546 { 0, 0, 0, 0}, 1547 {1088, 525,1088, 525}, /* 848x480 */ 1548 {1088, 525,1088, 525} /* 1360x768 TODO */ 1549 }; 1550 1551 static const SiS_LVDSDataStruct SiS_CHTVUNTSCData[]= 1552 { 1553 { 840, 600, 840, 600}, 1554 { 840, 600, 840, 600}, 1555 { 840, 600, 840, 600}, 1556 { 840, 600, 840, 600}, 1557 { 784, 600, 784, 600}, 1558 {1064, 750,1064, 750}, 1559 {1160, 945,1160, 945} 1560 }; 1561 1562 static const SiS_LVDSDataStruct SiS_CHTVONTSCData[]= 1563 { 1564 { 840, 525, 840, 525}, 1565 { 840, 525, 840, 525}, 1566 { 840, 525, 840, 525}, 1567 { 840, 525, 840, 525}, 1568 { 784, 525, 784, 525}, 1569 {1040, 700,1040, 700}, 1570 {1160, 840,1160, 840} 1571 }; 1572 1573 /* Chrontel TV Skew */ 1574 1575 static const SiS_LVDSDesStruct SiS_CHTVUNTSCDesData[]= 1576 { 1577 { 0, 0}, 1578 { 0, 0}, 1579 { 0, 0}, 1580 { 0, 0}, 1581 { 0, 0}, 1582 { 0, 0}, 1583 { 0, 0} 1584 }; 1585 1586 static const SiS_LVDSDesStruct SiS_CHTVONTSCDesData[]= 1587 { 1588 { 0, 0}, 1589 { 0, 0}, 1590 { 0, 0}, 1591 { 0, 0}, 1592 { 0, 0}, 1593 { 0, 0}, 1594 { 0, 0} 1595 }; 1596 1597 static const SiS_LVDSDesStruct SiS_CHTVUPALDesData[]= 1598 { 1599 {256, 0}, 1600 {256, 0}, 1601 {256, 0}, 1602 {256, 0}, 1603 { 0, 0}, 1604 { 0, 0}, 1605 { 0, 0} 1606 }; 1607 1608 static const SiS_LVDSDesStruct SiS_CHTVOPALDesData[]= 1609 { 1610 {256, 0}, 1611 {256, 0}, 1612 {256, 0}, 1613 {256, 0}, 1614 { 0, 0}, 1615 { 0, 0}, 1616 { 0, 0} 1617 }; 1618 1619 /* CRT1 CRTC data for slave modes */ 1620 1621 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT1320x480_1[] = 1622 { 1623 {{0x65,0x4f,0x89,0x56,0x83,0xaa,0x1f, 1624 0x90,0x85,0x8f,0xab,0x30,0x00,0x05, 1625 0x00 }}, 1626 {{0x65,0x4f,0x89,0x56,0x83,0x83,0x1f, 1627 0x5e,0x83,0x5d,0x79,0x10,0x00,0x05, 1628 0x00 }}, 1629 {{0x65,0x4f,0x89,0x54,0x9f,0xc4,0x1f, 1630 0x92,0x89,0x8f,0xb5,0x30,0x00,0x01, 1631 0x00 }}, 1632 {{0x65,0x4f,0x89,0x56,0x83,0x83,0x1f, 1633 0x5e,0x83,0x5d,0x79,0x10,0x00,0x05, 1634 0x00 }}, 1635 {{0x65,0x4f,0x89,0x56,0x83,0x04,0x3e, 1636 0xe0,0x85,0xdf,0xfb,0x10,0x00,0x05, 1637 0x00 }}, 1638 {{0x7f,0x63,0x83,0x6c,0x1c,0x72,0xf0, 1639 0x58,0x8c,0x57,0x73,0x20,0x00,0x06, 1640 0x01 }}, 1641 {{0x2d,0x27,0x90,0x2c,0x80,0x0b,0x3e, 1642 0xe9,0x8b,0xe7,0x04,0x00,0x00,0x00, 1643 0x00 }} 1644 }; 1645 1646 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT1640x480_1[] = 1647 { 1648 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1649 0xe9,0x8b,0xdf,0x04,0x30,0x00,0x05, 1650 0x00}}, 1651 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1652 0xe9,0x8b,0xdf,0x04,0x30,0x00,0x05, 1653 0x00}}, 1654 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1655 0xe9,0x8b,0xdf,0x04,0x30,0x00,0x05, 1656 0x00}}, 1657 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1658 0xe9,0x8b,0xdf,0x04,0x30,0x00,0x05, 1659 0x00}}, 1660 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1661 0xe9,0x8b,0xdf,0x04,0x30,0x00,0x05, 1662 0x00}}, 1663 {{0x7f,0x63,0x83,0x6c,0x1c,0x72,0xf0, 1664 0x58,0x8c,0x57,0x73,0x20,0x00,0x06, 1665 0x01}} 1666 }; 1667 1668 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT1640x480_1_H[] = 1669 { 1670 {{0x2d,0x28,0x90,0x2b,0xa0,0xbf,0x1f, 1671 0x9c,0x8e,0x96,0xb9,0x00,0x00,0x00, 1672 0x00}}, 1673 {{0x2d,0x28,0x90,0x2b,0xa0,0xbf,0x1f, 1674 0x83,0x85,0x63,0xba,0x00,0x00,0x00, 1675 0x00}}, 1676 {{0x2d,0x28,0x90,0x2b,0xa0,0xbf,0x1f, 1677 0x9c,0x8e,0x96,0xb9,0x00,0x00,0x00, 1678 0x00}}, 1679 {{0x2d,0x28,0x90,0x2b,0xa0,0xbf,0x1f, 1680 0x83,0x85,0x63,0xba,0x00,0x00,0x00, 1681 0x00}}, 1682 {{0x2d,0x28,0x90,0x2c,0x80,0x0b,0x3e, 1683 0xe9,0x8b,0xe7,0x04,0x00,0x00,0x00, 1684 0x00}} 1685 }; 1686 1687 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT1640x480_2[] = 1688 { 1689 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1690 0xe9,0x8b,0xdf,0x04,0x30,0x00,0x05, 1691 0x00}}, 1692 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1693 0xe9,0x8b,0xdf,0x04,0x30,0x00,0x05, 1694 0x00}}, 1695 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1696 0xe9,0x8b,0xdf,0x04,0x30,0x00,0x05, 1697 0x00}}, 1698 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1699 0xe9,0x8b,0xdf,0x04,0x30,0x00,0x05, 1700 0x00}}, 1701 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1702 0xe9,0x8b,0xdf,0x04,0x30,0x00,0x05, 1703 0x00}}, 1704 {{0x7f,0x63,0x83,0x6c,0x1c,0x72,0xf0, 1705 0x58,0x8c,0x57,0x73,0x20,0x00,0x06, 1706 0x01}}, 1707 {{0x2d,0x27,0x90,0x2c,0x80,0x0b,0x3e, 1708 0xe9,0x8b,0xe7,0x04,0x00,0x00,0x00, 1709 0x00}} 1710 }; 1711 1712 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT1640x480_2_H[] = 1713 { 1714 {{0x65,0x4f,0x89,0x56,0x83,0xaa,0x1f, 1715 0x90,0x85,0x8f,0xab,0x30,0x00,0x05, 1716 0x00}}, 1717 {{0x65,0x4f,0x89,0x56,0x83,0x83,0x1f, 1718 0x5e,0x83,0x5d,0x79,0x10,0x00,0x05, 1719 0x00}}, 1720 {{0x65,0x4f,0x89,0x54,0x9f,0xc4,0x1f, 1721 0x92,0x89,0x8f,0xb5,0x30,0x00,0x01, 1722 0x00}}, 1723 {{0x65,0x4f,0x89,0x56,0x83,0x83,0x1f, 1724 0x5e,0x83,0x5d,0x79,0x10,0x00,0x05, 1725 0x00}}, 1726 {{0x65,0x4f,0x89,0x56,0x83,0x04,0x3e, 1727 0xe0,0x85,0xdf,0xfb,0x10,0x00,0x05, 1728 0x00}}, 1729 {{0x7f,0x63,0x83,0x6c,0x1c,0x72,0xf0, 1730 0x58,0x8c,0x57,0x73,0x20,0x00,0x06, 1731 0x01}}, 1732 {{0x2d,0x27,0x90,0x2c,0x80,0x0b,0x3e, 1733 0xe9,0x8b,0xe7,0x04,0x00,0x00,0x00, 1734 0x00}} 1735 }; 1736 1737 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT1640x480_3[] = 1738 { 1739 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1740 0xe9,0x8b,0xdf,0x04,0x00,0x00,0x05, 1741 0x00}}, 1742 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1743 0xe9,0x8b,0xdf,0x04,0x00,0x00,0x05, 1744 0x00}}, 1745 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1746 0xe9,0x8b,0xdf,0x04,0x00,0x00,0x05, 1747 0x00}}, 1748 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1749 0xe9,0x8b,0xdf,0x04,0x00,0x00,0x05, 1750 0x00}}, 1751 {{0x5f,0x4f,0x82,0x55,0x81,0x0b,0x3e, 1752 0xe9,0x8b,0xdf,0x04,0x00,0x00,0x05, 1753 0x00}}, 1754 {{0x7f,0x63,0x83,0x6c,0x1c,0x72,0xf0, 1755 0x58,0x8c,0x57,0x73,0x20,0x00,0x06, 1756 0x01}}, 1757 {{0x2d,0x27,0x90,0x2c,0x80,0x0b,0x3e, 1758 0xe9,0x8b,0xe7,0x04,0x00,0x00,0x00, 1759 0x00}} 1760 }; 1761 1762 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT1640x480_3_H[] = 1763 { 1764 {{0x65,0x4f,0x89,0x56,0x83,0xaa,0x1f, 1765 0x90,0x85,0x8f,0xab,0x30,0x00,0x05, 1766 0x00}}, 1767 {{0x65,0x4f,0x89,0x56,0x83,0x83,0x1f, 1768 0x5e,0x83,0x5d,0x79,0x10,0x00,0x05, 1769 0x00}}, 1770 {{0x65,0x4f,0x89,0x54,0x9f,0xc4,0x1f, 1771 0x92,0x89,0x8f,0xb5,0x30,0x00,0x01, 1772 0x00}}, 1773 {{0x65,0x4f,0x89,0x56,0x83,0x83,0x1f, 1774 0x5e,0x83,0x5d,0x79,0x10,0x00,0x05, 1775 0x00}}, 1776 {{0x65,0x4f,0x89,0x56,0x83,0x04,0x3e, 1777 0xe0,0x85,0xdf,0xfb,0x10,0x00,0x05, 1778 0x00}}, 1779 {{0x7f,0x63,0x83,0x6c,0x1c,0x72,0xf0, 1780 0x58,0x8c,0x57,0x73,0x20,0x00,0x06, 1781 0x01}}, 1782 {{0x2d,0x27,0x90,0x2c,0x80,0x0b,0x3e, 1783 0xe9,0x8b,0xe7,0x04,0x00,0x00,0x00, 1784 0x00}} 1785 }; 1786 1787 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11024x600_1[] = 1788 { 1789 {{0x64,0x4f,0x88,0x54,0x9f,0x5a,0x3e, 1790 0xe8,0x8f,0x8f,0x5b,0x00,0x00,0x01, 1791 0x00}}, 1792 {{0x64,0x4f,0x88,0x54,0x9f,0x2e,0x3e, 1793 0xb9,0x80,0x5d,0x2f,0x00,0x00,0x01, 1794 0x00}}, 1795 {{0x64,0x4f,0x88,0x54,0x9f,0x5a,0x3e, 1796 0xe8,0x8f,0x8f,0x5b,0x00,0x00,0x01, 1797 0x00}}, 1798 {{0x64,0x4f,0x88,0x54,0x9f,0x2e,0x3e, 1799 0xb9,0x80,0x5d,0x2f,0x00,0x00,0x01, 1800 0x00}}, 1801 {{0x64,0x4f,0x88,0x54,0x9f,0xaf,0xba, 1802 0x3b,0x82,0xdf,0xb0,0x00,0x00,0x01, 1803 0x00}}, 1804 {{0x7e,0x63,0x82,0x68,0x15,0x1e,0xf1, 1805 0xae,0x85,0x57,0x1f,0x30,0x00,0x26, 1806 0x01}}, 1807 {{0xa3,0x7f,0x87,0x86,0x97,0x1e,0xf1, 1808 0xae,0x85,0x57,0x1f,0x30,0x00,0x02, 1809 0x01}} 1810 }; 1811 1812 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11024x600_1_H[] = 1813 { 1814 {{0x2f,0x27,0x93,0x2b,0x90,0xc4,0x1f, 1815 0x92,0x89,0x8f,0xb5,0x30,0x00,0x44, 1816 0x00}}, 1817 {{0x2f,0x27,0x93,0x2b,0x90,0x97,0x1f, 1818 0x60,0x87,0x5d,0x83,0x10,0x00,0x44, 1819 0x00}}, 1820 {{0x2f,0x27,0x93,0x2b,0x90,0xc4,0x1f, 1821 0x92,0x89,0x8f,0xb5,0x30,0x00,0x44, 1822 0x00}}, 1823 {{0x2f,0x27,0x93,0x2b,0x90,0x97,0x1f, 1824 0x60,0x87,0x5d,0x83,0x10,0x00,0x44, 1825 0x00}}, 1826 {{0x2f,0x27,0x93,0x2b,0x90,0x04,0x3e, 1827 0xe2,0x89,0xdf,0x05,0x00,0x00,0x44, 1828 0x00}}, 1829 {{0x3c,0x31,0x80,0x35,0x1c,0x7c,0xf0, 1830 0x5a,0x8f,0x57,0x7d,0x20,0x00,0x55, 1831 0x01}}, 1832 {{0x4f,0x3f,0x93,0x45,0x0d,0x24,0xf5, 1833 0x02,0x88,0xff,0x25,0x10,0x00,0x01, 1834 0x01}} 1835 }; 1836 1837 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11024x600_2[] = 1838 { 1839 {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb, 1840 0x4a,0x80,0x8f,0x25,0x30,0x00,0x06, 1841 0x00}}, 1842 {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb, 1843 0x31,0x87,0x5d,0x25,0x30,0x00,0x06, 1844 0x00}}, 1845 {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb, 1846 0x4a,0x80,0x8f,0x25,0x30,0x00,0x06, 1847 0x00}}, 1848 {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb, 1849 0x31,0x87,0x5d,0x25,0x30,0x00,0x06, 1850 0x00}}, 1851 {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb, 1852 0x72,0x88,0xdf,0x25,0x30,0x00,0x06, 1853 0x00}}, 1854 {{0xa3,0x63,0x87,0x78,0x89,0x24,0xf1, 1855 0xae,0x84,0x57,0x25,0x30,0x00,0x02, 1856 0x01}}, 1857 {{0xa3,0x7f,0x87,0x86,0x97,0x24,0xf5, 1858 0x02,0x88,0xff,0x25,0x10,0x00,0x02, 1859 0x01}} 1860 }; 1861 1862 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11024x600_2_H[] = 1863 { 1864 {{0x4f,0x27,0x93,0x39,0x01,0x24,0xbb, 1865 0x4a,0x80,0x8f,0x25,0x30,0x00,0x01, 1866 0x00}}, 1867 {{0x4f,0x27,0x93,0x39,0x01,0x24,0xbb, 1868 0x31,0x87,0x5d,0x25,0x30,0x00,0x01, 1869 0x00}}, 1870 {{0x4f,0x27,0x93,0x39,0x01,0x24,0xbb, 1871 0x4a,0x80,0x8f,0x25,0x30,0x00,0x01, 1872 0x00}}, 1873 {{0x4f,0x27,0x93,0x39,0x01,0x24,0xbb, 1874 0x31,0x87,0x5d,0x25,0x30,0x00,0x01, 1875 0x00}}, 1876 {{0x4f,0x27,0x93,0x39,0x01,0x24,0xbb, 1877 0x72,0x88,0xdf,0x25,0x30,0x00,0x01, 1878 0x00}}, 1879 {{0x4f,0x31,0x93,0x3e,0x06,0x24,0xf1, 1880 0xae,0x84,0x57,0x25,0x30,0x00,0x01, 1881 0x01}}, 1882 {{0x4f,0x3f,0x93,0x45,0x0d,0x24,0xf5, 1883 0x02,0x88,0xff,0x25,0x10,0x00,0x01, 1884 0x01}} 1885 }; 1886 1887 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11152x768_1[] = 1888 { 1889 {{0x64,0x4f,0x88,0x54,0x9f,0xc4,0x1f, 1890 0x92,0x89,0x8f,0xb5,0x30,0x00,0x01, 1891 0x00}}, 1892 {{0x64,0x4f,0x88,0x54,0x9f,0x97,0x1f, 1893 0x60,0x87,0x5d,0x83,0x10,0x00,0x01, 1894 0x00}}, 1895 {{0x64,0x4f,0x88,0x54,0x9f,0xc4,0x1f, 1896 0x92,0x89,0x8f,0xb5,0x30,0x00,0x01, 1897 0x00}}, 1898 {{0x64,0x4f,0x88,0x54,0x9f,0x97,0x1f, 1899 0x60,0x87,0x5d,0x83,0x10,0x00,0x01, 1900 0x00}}, 1901 {{0x64,0x4f,0x88,0x54,0x9f,0x04,0x3e, 1902 0xe2,0x89,0xdf,0x05,0x00,0x00,0x01, 1903 0x00}}, 1904 {{0x7e,0x63,0x82,0x68,0x15,0x7c,0xf0, 1905 0x5a,0x8f,0x57,0x7d,0x20,0x00,0x26, 1906 0x01}}, 1907 {{0xa3,0x7f,0x87,0x86,0x97,0x24,0xf5, 1908 0x02,0x88,0xff,0x25,0x10,0x00,0x02, 1909 0x01}} 1910 }; 1911 1912 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11152x768_1_H[] = 1913 { 1914 {{0x2f,0x27,0x93,0x2b,0x90,0xc4,0x1f, 1915 0x92,0x89,0x8f,0xb5,0x30,0x00,0x44, 1916 0x00}}, 1917 {{0x2f,0x27,0x93,0x2b,0x90,0x97,0x1f, 1918 0x60,0x87,0x5d,0x83,0x10,0x00,0x44, 1919 0x00}}, 1920 {{0x2f,0x27,0x93,0x2b,0x90,0xc4,0x1f, 1921 0x92,0x89,0x8f,0xb5,0x30,0x00,0x44, 1922 0x00}}, 1923 {{0x2f,0x27,0x93,0x2b,0x90,0x97,0x1f, 1924 0x60,0x87,0x5d,0x83,0x10,0x00,0x44, 1925 0x00}}, 1926 {{0x2f,0x27,0x93,0x2b,0x90,0x04,0x3e, 1927 0xe2,0x89,0xdf,0x05,0x00,0x00,0x44, 1928 0x00}}, 1929 {{0x3c,0x31,0x80,0x35,0x1c,0x7c,0xf0, 1930 0x5a,0x8f,0x57,0x7d,0x20,0x00,0x55, 1931 0x01}}, 1932 {{0x4f,0x3f,0x93,0x45,0x0d,0x24,0xf5, 1933 0x02,0x88,0xff,0x25,0x10,0x00,0x01, 1934 0x01}} 1935 }; 1936 1937 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11152x768_2[] = 1938 { 1939 {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb, 1940 0x4a,0x80,0x8f,0x25,0x30,0x00,0x06, 1941 0x00}}, 1942 {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb, 1943 0x31,0x87,0x5d,0x25,0x30,0x00,0x06, 1944 0x00}}, 1945 {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb, 1946 0x4a,0x80,0x8f,0x25,0x30,0x00,0x06, 1947 0x00}}, 1948 {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb, 1949 0x31,0x87,0x5d,0x25,0x30,0x00,0x06, 1950 0x00}}, 1951 {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb, 1952 0x72,0x88,0xdf,0x25,0x30,0x00,0x06, 1953 0x00}}, 1954 {{0xa3,0x63,0x87,0x78,0x89,0x24,0xf1, 1955 0xae,0x84,0x57,0x25,0x30,0x00,0x02, 1956 0x01}}, 1957 {{0xa3,0x7f,0x87,0x86,0x97,0x24,0xf5, 1958 0x02,0x88,0xff,0x25,0x10,0x00,0x02, 1959 0x01}} 1960 }; 1961 1962 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11152x768_2_H[] = 1963 { 1964 {{0x4f,0x27,0x93,0x39,0x01,0x24,0xbb, 1965 0x4a,0x80,0x8f,0x25,0x30,0x00,0x01, 1966 0x00}}, 1967 {{0x4f,0x27,0x93,0x39,0x01,0x24,0xbb, 1968 0x31,0x87,0x5d,0x25,0x30,0x00,0x01, 1969 0x00}}, 1970 {{0x4f,0x27,0x93,0x39,0x01,0x24,0xbb, 1971 0x4a,0x80,0x8f,0x25,0x30,0x00,0x01, 1972 0x00}}, 1973 {{0x4f,0x27,0x93,0x39,0x01,0x24,0xbb, 1974 0x31,0x87,0x5d,0x25,0x30,0x00,0x01, 1975 0x00}}, 1976 {{0x4f,0x27,0x93,0x39,0x01,0x24,0xbb, 1977 0x72,0x88,0xdf,0x25,0x30,0x00,0x01, 1978 0x00}}, 1979 {{0x4f,0x31,0x93,0x3e,0x06,0x24,0xf1, 1980 0xae,0x84,0x57,0x25,0x30,0x00,0x01, 1981 0x01}}, 1982 {{0x4f,0x3f,0x93,0x45,0x0d,0x24,0xf5, 1983 0x02,0x88,0xff,0x25,0x10,0x00,0x01, 1984 0x01}} 1985 }; 1986 1987 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11280x768_1[] = 1988 { 1989 {{0x5b,0x4f,0x9f,0x55,0x19,0xb4,0x1f, 1990 0x9c,0x8e,0x8f,0xb5,0x10,0x00,0x01, 1991 0x00}}, 1992 {{0x5b,0x4f,0x9f,0x55,0x19,0x82,0x1f, 1993 0x6a,0x8c,0x5d,0x83,0x30,0x00,0x01, 1994 0x00}}, 1995 {{0x5b,0x4f,0x9f,0x55,0x19,0xb4,0x1f, 1996 0x9c,0x8e,0x8f,0xb5,0x10,0x00,0x01, 1997 0x00}}, 1998 {{0x5b,0x4f,0x9f,0x55,0x19,0x82,0x1f, 1999 0x6a,0x8c,0x5d,0x83,0x30,0x00,0x01, 2000 0x00}}, 2001 {{0x5b,0x4f,0x9f,0x55,0x19,0x04,0x3e, 2002 0xec,0x8e,0xdf,0x05,0x20,0x00,0x01, 2003 0x00}}, 2004 {{0x6f,0x63,0x93,0x69,0x8d,0x7c,0xf0, 2005 0x64,0x86,0x57,0x7d,0x20,0x00,0x05, 2006 0x01}}, 2007 {{0x8b,0x7f,0x8f,0x85,0x09,0x24,0xf5, 2008 0x0c,0x8e,0xff,0x25,0x30,0x00,0x02, 2009 0x01}}, 2010 {{0xab,0x9f,0x8f,0xa5,0x89,0x24,0xf5, 2011 0x0c,0x8e,0xff,0x25,0x30,0x00,0x06, 2012 0x01}}, 2013 {{0xab,0x9f,0x8f,0xa5,0x89,0x24,0xf5, 2014 0x0c,0x8e,0xff,0x25,0x30,0x00,0x06, 2015 0x01}} 2016 }; 2017 2018 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11280x768_1_H[] = 2019 { 2020 {{0x47,0x27,0x8b,0x2c,0x1a,0x9e,0x1f, 2021 0x93,0x86,0x8f,0x9f,0x30,0x00,0x05, 2022 0x00}}, 2023 {{0x47,0x27,0x8b,0x2c,0x1a,0x6c,0x1f, 2024 0x60,0x84,0x5d,0x6d,0x10,0x00,0x05, 2025 0x00}}, 2026 {{0x47,0x27,0x8b,0x30,0x1e,0x9e,0x1f, 2027 0x92,0x86,0x8f,0x9f,0x30,0x00,0x05, 2028 0x00}}, 2029 {{0x47,0x27,0x8b,0x2c,0x1a,0x6c,0x1f, 2030 0x60,0x84,0x5d,0x6d,0x10,0x00,0x05, 2031 0x00}}, 2032 {{0x47,0x27,0x8b,0x2c,0x1a,0xee,0x1f, 2033 0xe2,0x86,0xdf,0xef,0x10,0x00,0x05, 2034 0x00}}, 2035 {{0x51,0x31,0x95,0x36,0x04,0x66,0xf0, 2036 0x5a,0x8e,0x57,0x67,0x20,0x00,0x01, 2037 0x01}}, 2038 {{0x5f,0x3f,0x83,0x44,0x92,0x0e,0xf5, 2039 0x02,0x86,0xff,0x0f,0x10,0x00,0x01, 2040 0x01}}, 2041 {{0x6f,0x4f,0x93,0x54,0x82,0x0e,0x5a, 2042 0x02,0x86,0xff,0x0f,0x09,0x00,0x05, 2043 0x01}}, 2044 {{0x6f,0x4f,0x93,0x54,0x82,0x0e,0x5a, 2045 0x02,0x86,0xff,0x0f,0x09,0x00,0x05, 2046 0x01}} 2047 }; 2048 2049 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11280x768_2[] = 2050 { 2051 {{0xab,0x60,0x9f,0x80,0x04,0x24,0xbb, 2052 0x54,0x86,0xdb,0xda,0x00,0x00,0x02, 2053 0x00}}, 2054 {{0xab,0x60,0x9f,0x80,0x04,0x24,0xbb, 2055 0x3b,0x8d,0xc2,0xc1,0x00,0x00,0x02, 2056 0x00}}, 2057 {{0xab,0x60,0x9f,0x80,0x04,0x24,0xbb, 2058 0x54,0x86,0xdb,0xda,0x00,0x00,0x02, 2059 0x00}}, 2060 {{0xab,0x60,0x9f,0x80,0x04,0x24,0xbb, 2061 0x3b,0x8d,0xc2,0xc1,0x00,0x00,0x02, 2062 0x00}}, 2063 {{0xab,0x60,0x9f,0x80,0x04,0x24,0xb3, 2064 0x7c,0x8e,0x03,0x02,0x10,0x00,0x02, 2065 0x01}}, 2066 {{0xab,0x63,0x8f,0x8a,0x8e,0x24,0xf1, 2067 0xb6,0x88,0x57,0x25,0x10,0x00,0x02, 2068 0x01}}, 2069 {{0xab,0x7f,0x8f,0x98,0x9c,0x24,0xf5, 2070 0x0a,0x8c,0xff,0x25,0x30,0x00,0x02, 2071 0x01}}, 2072 {{0xab,0x9f,0x8f,0xa8,0x8c,0x24,0xf5, 2073 0x0a,0x8c,0xff,0x25,0x30,0x00,0x06, 2074 0x01}}, 2075 {{0xab,0x9f,0x8f,0xa8,0x8c,0x24,0xf5, 2076 0x0a,0x8c,0xff,0x25,0x30,0x00,0x06, 2077 0x01}} 2078 }; 2079 2080 static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11280x768_2_H[] = 2081 { 2082 {{0x83,0x38,0x97,0x58,0x9c,0x24,0xbb, 2083 0x54,0x86,0xdb,0xda,0x00,0x00,0x01, 2084 0x00}}, 2085 {{0x83,0x38,0x97,0x58,0x9c,0x24,0xbb, 2086 0x3b,0x8d,0xc2,0xc1,0x00,0x00,0x01, 2087 0x00}}, 2088 {{0x83,0x38,0x97,0x58,0x9c,0x24,0xbb, 2089 0x54,0x86,0xdb,0xda,0x00,0x00,0x01, 2090 0x00}}, 2091 {{0x83,0x38,0x97,0x58,0x9c,0x24,0xbb, 2092 0x3b,0x8d,0xc2,0xc1,0x00,0x00,0x01, 2093 0x00}}, 2094 {{0x83,0x38,0x97,0x58,0x9c,0x24,0xb3, 2095 0x7c,0x8e,0x03,0x02,0x10,0x00,0x01, 2096 0x01}}, 2097 {{0x79,0x31,0x9d,0x58,0x9c,0x24,0xf1, 2098 0xb6,0x88,0x57,0x25,0x10,0x00,0x01, 2099 0x01}}, 2100 {{0x6b,0x3f,0x8f,0x58,0x9c,0x24,0xf5, 2101 0x0a,0x8c,0xff,0x25,0x30,0x00,0x01, 2102 0x01}}, 2103 {{0xab,0x9f,0x8f,0xa8,0x8c,0x24,0xf5, 2104 0x0a,0x8c,0xff,0x25,0x30,0x00,0x06, 2105 0x01}}, 2106 {{0xab,0x9f,0x8f,0xa8,0x8c,0x24,0xf5, 2107 0x0a,0x8c,0xff,0x25,0x30,0x00,0x06, 2108 0x01}} 2109 }; 2110 2111 /**************************************************************/ 2112 /* COMMON --------------------------------------------------- */ 2113 /**************************************************************/ 2114 2115 #define SIS_PL_HSYNCP 0x01 2116 #define SIS_PL_HSYNCN 0x02 2117 #define SIS_PL_VSYNCP 0x04 2118 #define SIS_PL_VSYNCN 0x08 2119 #define SIS_PL_DVI 0x80 2120 2121 typedef struct _SiS_PlasmaModes 2122 { 2123 const char *name; 2124 ULONG clock; 2125 USHORT HDisplay, HTotal, HFrontPorch, HSyncWidth; 2126 USHORT VDisplay, VTotal, VFrontPorch, VSyncWidth; 2127 UCHAR SyncFlags; 2128 } SiS_PlasmaModes; 2129 2130 typedef struct _SiS_PlasmaTables 2131 { 2132 USHORT vendor; 2133 UCHAR productnum; 2134 USHORT product[5]; 2135 const char *DDCnames[5]; 2136 const char *plasmaname; 2137 UCHAR modenum; 2138 UCHAR plasmamodes[20]; /* | 0x80 = DVI-capable, | 0x40 = analog */ 2139 } SiS_PlasmaTables; 2140 2141 static const SiS_PlasmaModes SiS_PlasmaMode[] = { 2142 { "640x400", /* 00: IBM 400@70 */ 2143 25175, 2144 640, 800, 17, 64, 2145 400, 449, 13, 2, 2146 SIS_PL_HSYNCN | SIS_PL_VSYNCN }, 2147 { "640x480", /* 01: VESA 480@72 */ 2148 31500, 2149 640, 832, 24, 40, 2150 480, 520, 9, 3, 2151 SIS_PL_HSYNCN | SIS_PL_VSYNCN }, 2152 { "800x600", /* 02: VESA 600@72 */ 2153 50000, 2154 800, 1040, 56, 120, 2155 600, 666, 37, 6, 2156 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2157 { "864x480", /* 03: Cereb wide 1 */ 2158 42526, 2159 864, 1134, 22, 86, 2160 480, 500, 1, 3, 2161 SIS_PL_HSYNCP | SIS_PL_VSYNCN }, 2162 { "848x480", /* 04: VESA wide (NEC1) */ 2163 33750, 2164 848, 1088, 16, 112, 2165 480, 517, 6, 8, 2166 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2167 { "1024x576", /* 05: VESA wide (NEC2) */ 2168 47250, 2169 1024, 1320, 16, 144, 2170 576, 596, 2, 4, 2171 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2172 { "1280x720", /* 06: VESA wide (NEC3) */ 2173 76500, 2174 1280, 1696, 48, 176, 2175 720, 750, 4, 8, 2176 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2177 { "1360x765", /* 07: VESA wide (NEC4) */ 2178 85500, 2179 1360, 1792, 64, 176, 2180 765, 795, 4, 8, 2181 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2182 { "1024x600", /* 08: CEREB wide 2 */ 2183 51200, 2184 1024, 1352, 51, 164, 2185 600, 628, 1, 4, 2186 SIS_PL_HSYNCN | SIS_PL_VSYNCP }, 2187 { "1024x768", /* 09: VESA 768@75 */ 2188 78750, 2189 1024, 1312, 16, 96, 2190 768, 800, 1, 3, 2191 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2192 { "1152x864", /* 10: VESA 1152x864@75 */ 2193 108000, 2194 1152, 1600, 64, 128, 2195 864, 900, 1, 3, 2196 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2197 { "1280x1024", /* 11: VESA 1024@60 */ 2198 108000, 2199 1280, 1688, 48, 112, 2200 1024, 1066, 1, 3, 2201 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2202 { "1280x768", /* 12: W_XGA */ 2203 81000, 2204 1280, 1688, 48, 112, 2205 768, 802, 3, 6, 2206 SIS_PL_HSYNCP | SIS_PL_VSYNCN }, 2207 { "1280x768", /* 13: I/O Data W_XGA@56Hz */ 2208 76064, 2209 1280, 1688, 48, 112, 2210 768, 802, 2, 3, 2211 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2212 { "1376x768", /* 14: I/O Wide XGA */ 2213 87340, 2214 1376, 1808, 32, 128, 2215 768, 806, 3, 6, 2216 SIS_PL_HSYNCN | SIS_PL_VSYNCP }, 2217 { "1280x960", /* 15: VESA 960@60 */ 2218 108000, 2219 1280, 1800, 96, 112, 2220 960, 1000, 1, 3, 2221 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2222 { "1400x1050", /* 16: VESA 1050@60Hz */ 2223 108000, 2224 1400, 1688, 48, 112, 2225 1050, 1066, 1, 3, 2226 SIS_PL_HSYNCN | SIS_PL_VSYNCN }, 2227 { "1360x768", /* 17: VESA wide (NEC4/2) */ 2228 85500, 2229 1360, 1792, 64, 112, 2230 765, 795, 3, 6, 2231 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2232 { "800x600", /* 18: VESA 600@56 */ 2233 36000, 2234 800, 1024, 24, 2, 2235 600, 625, 1, 2, 2236 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2237 { "1072x600", /* 19: Panasonic 1072x600 (sync?) */ 2238 54100, 2239 1072, 1424, 48, 176, 2240 600, 628, 16, 1, 2241 SIS_PL_HSYNCP | SIS_PL_VSYNCP }, 2242 { "848x480", /* 20: Panasonic 848x480 (sync?) */ 2243 33070, /* is 852x480, but we can't use 852 */ 2244 848, 1068, 20, 40, /* differs from DDC data, better centered */ 2245 480, 516, 3, 5, /* won't work assumingly, because data is % 8 */ 2246 SIS_PL_HSYNCN | SIS_PL_VSYNCN }, 2247 }; 2248 2249 static const SiS_PlasmaTables SiS_PlasmaTable[] = { 2250 #if 0 /* Product IDs missing */ 2251 { 0x38a3, 4, 2252 { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, 2253 { "", "", "", "", "" }, 2254 "NEC PlasmaSync 42VP4/42VP4D/42VP4G/42VP4DG", 2255 11, /* All DVI, except 0, 7, 13 */ 2256 { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 7|0x40, 9|0xc0,10|0xc0,11|0xc0,13|0x40,14|0xc0, 2257 17|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2258 }, 2259 #endif 2260 #if 0 /* Product IDs missing */ 2261 { 0x38a3, 3, 2262 { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, 2263 { "", "", "", "", "" }, 2264 "NEC PlasmaSync 42PD1/50PD1/50PD2", 2265 5, /* DVI entirely unknown */ 2266 { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 9|0xc0, 0 , 0 , 0 , 0 , 0 , 2267 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2268 }, 2269 { 0x38a3, 1, 2270 { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, 2271 { "", "", "", "", "" }, 2272 "NEC PlasmaSync 42PD3", 2273 10, /* DVI entirely unknown */ 2274 { 0|0x40, 1|0xc0, 2|0xc0, 3|0xc0, 4|0xc0, 5|0xc0, 6|0xc0, 7|0x40, 8|0xc0, 9|0xc0, 2275 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2276 }, 2277 { 0x38a3, 2, 2278 { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, 2279 { "", "", "", "", "" }, 2280 "NEC PlasmaSync 42VM3/61XM1", 2281 11, /* DVI entirely unknown */ 2282 { 0|0x40, 1|0xc0, 2|0xc0, 3|0xc0, 4|0xc0, 5|0xc0, 6|0xc0, 8|0xc0, 9|0xc0,11|0xc0, 2283 17|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2284 }, 2285 { 0x38a3, 2, 2286 { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, 2287 { "", "", "", "", "" }, 2288 "NEC PlasmaSync 42MP1/42MP2", 2289 6, /* DVI entirely unknown */ 2290 { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 9|0xc0,11|0xc0, 0 , 0 , 0 , 0 , 2291 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2292 }, 2293 { 0x38a3, 1, 2294 { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, 2295 { "", "", "", "", "" }, 2296 "NEC PlasmaSync 50MP1", 2297 10, /* DVI entirely unknown */ 2298 { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 7|0x40, 9|0xc0,10|0xc0,11|0xc0,13|0x40,14|0xc0, 2299 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2300 }, 2301 #endif 2302 { 0x38a3, 4, 2303 { 0xa482, 0xa483, 0x0000, 0x0000, 0x0000 }, 2304 { "PX-42VM", "", "", "", "" }, 2305 "NEC PlasmaSync 42MP3/42MP4/50MP2/61MP1", 2306 11, /* All DVI except 0, 7, 13, 17 */ 2307 { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 7|0x40, 9|0xc0,10|0xc0,11|0xc0,13|0x40,14|0xc0, 2308 17|0x40, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2309 }, 2310 #if 0 /* Product IDs missing */ 2311 { 0x38a3, 1, 2312 { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, 2313 { "", "", "", "", "" }, 2314 "NEC PlasmaSync 3300W", 2315 3, 2316 { 0|0x40, 1|0xc0,18|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2317 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2318 }, 2319 { 0x38a3, 1, 2320 { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, 2321 { "", "", "", "", "" }, 2322 "NEC PlasmaSync 4200W", 2323 4, /* DVI entirely unknown */ 2324 { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 2325 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2326 }, 2327 { 0x38a3, 1, 2328 { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, 2329 { "", "", "", "", "" }, 2330 "NEC PlasmaSync 4210W", 2331 6, /* DVI entirely unknown */ 2332 { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 9|0xc0,11|0xc0, 0 , 0 , 0 , 0 , 2333 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2334 }, 2335 { 0x38a3, 1, 2336 { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, 2337 { "", "", "", "", "" }, 2338 "NEC PlasmaSync 5000W", 2339 7, /* DVI entirely unknown */ 2340 { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 7|0x40, 9|0xc0,11|0xc0, 0 , 0 , 0 , 2341 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2342 }, 2343 #endif 2344 { 0x412f, 2, 2345 { 0x000c, 0x000b, 0x0000, 0x0000, 0x0000 }, 2346 { "", "", "", "", "" }, 2347 "Pioneer 503CMX/PDA-5002", 2348 6, /* DVI unknown */ 2349 { 1|0xc0, 2|0xc0, 9|0xc0,11|0xc0,12|0xc0,15|0xc0, 0 , 0 , 0 , 0 , 2350 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2351 }, 2352 { 0x34a9, 1, 2353 { 0xa00e, 0x0000, 0x0000, 0x0000, 0x0000 }, 2354 { "", "", "", "", "" }, 2355 "Panasonic TH-42", 2356 5, /* No DVI output */ 2357 { 1|0x40, 2|0x40, 4|0x40, 9|0x40,15|0x40, 0 , 0 , 0 , 0 , 0 , 2358 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2359 }, 2360 { 0x34a9, 1, 2361 { 0xa005, 0x0000, 0x0000, 0x0000, 0x0000 }, 2362 { "TH-42PW*4", "", "", "", "" }, 2363 "Panasonic TH-42PW5", 2364 1, /* No special modes otherwise; no DVI. */ 2365 {20|0x40,19|0x40, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2366 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } 2367 }, 2368 { 0x0000 } 2369 }; 2370 2371 USHORT SiS_GetModeID(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, 2372 int Depth, BOOLEAN FSTN, int LCDwith, int LCDheight); 2373 USHORT SiS_GetModeID_LCD(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, int Depth, BOOLEAN FSTN, 2374 USHORT CustomT, int LCDwith, int LCDheight); 2375 USHORT SiS_GetModeID_TV(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, int Depth); 2376 USHORT SiS_GetModeID_VGA2(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, int Depth); 2377 2378 void SiS_SetReg(SISIOADDRESS port, USHORT index, USHORT data); 2379 void SiS_SetRegByte(SISIOADDRESS port, USHORT data); 2380 void SiS_SetRegShort(SISIOADDRESS port, USHORT data); 2381 void SiS_SetRegLong(SISIOADDRESS port, ULONG data); 2382 UCHAR SiS_GetReg(SISIOADDRESS port, USHORT index); 2383 UCHAR SiS_GetRegByte(SISIOADDRESS port); 2384 USHORT SiS_GetRegShort(SISIOADDRESS port); 2385 ULONG SiS_GetRegLong(SISIOADDRESS port); 2386 void SiS_SetRegANDOR(SISIOADDRESS Port,USHORT Index,USHORT DataAND,USHORT DataOR); 2387 void SiS_SetRegAND(SISIOADDRESS Port,USHORT Index,USHORT DataAND); 2388 void SiS_SetRegOR(SISIOADDRESS Port,USHORT Index,USHORT DataOR); 2389 void SiS_DisplayOn(SiS_Private *SiS_Pr); 2390 void SiS_DisplayOff(SiS_Private *SiS_Pr); 2391 void SiSRegInit(SiS_Private *SiS_Pr, SISIOADDRESS BaseAddr); 2392 void SiSSetLVDSetc(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); 2393 BOOLEAN SiSDetermineROMLayout661(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); 2394 void SiS_SetEnableDstn(SiS_Private *SiS_Pr, int enable); 2395 void SiS_SetEnableFstn(SiS_Private *SiS_Pr, int enable); 2396 void SiS_GetVBType(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); 2397 USHORT SiS_GetMCLK(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); 2398 BOOLEAN SiS_SearchModeID(SiS_Private *SiS_Pr, USHORT *ModeNo, USHORT *ModeIdIndex); 2399 UCHAR SiS_GetModePtr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex); 2400 USHORT SiS_GetColorDepth(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex); 2401 USHORT SiS_GetOffset(SiS_Private *SiS_Pr,USHORT ModeNo,USHORT ModeIdIndex, 2402 USHORT RefreshRateTableIndex,PSIS_HW_INFO HwInfo); 2403 void SiS_LoadDAC(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, USHORT ModeNo, USHORT ModeIdIndex); 2404 void SiS_CalcLCDACRT1Timing(SiS_Private *SiS_Pr,USHORT ModeNo,USHORT ModeIdIndex); 2405 #ifdef LINUX_XF86 2406 BOOLEAN SiSSetMode(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo,ScrnInfoPtr pScrn,USHORT ModeNo, BOOLEAN dosetpitch); 2407 BOOLEAN SiSBIOSSetMode(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, ScrnInfoPtr pScrn, 2408 DisplayModePtr mode, BOOLEAN IsCustom); 2409 BOOLEAN SiSBIOSSetModeCRT2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, ScrnInfoPtr pScrn, 2410 DisplayModePtr mode, BOOLEAN IsCustom); 2411 BOOLEAN SiSBIOSSetModeCRT1(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, ScrnInfoPtr pScrn, 2412 DisplayModePtr mode, BOOLEAN IsCustom); 2413 int SiSTranslateToVESA(ScrnInfoPtr pScrn, int modenumber); 2414 BOOLEAN SiS_GetPanelID(SiS_Private *SiS_Pr, PSIS_HW_INFO); 2415 USHORT SiS_CheckBuildCustomMode(ScrnInfoPtr pScrn, DisplayModePtr mode, int VBFlags); 2416 DisplayModePtr SiSBuildBuiltInModeList(ScrnInfoPtr pScrn, BOOLEAN includelcdmodes, BOOLEAN isfordvi); 2417 #else 2418 BOOLEAN SiSSetMode(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo,USHORT ModeNo); 2419 #endif 2420 #ifdef LINUX_KERNEL 2421 int sisfb_mode_rate_to_dclock(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, 2422 unsigned char modeno, unsigned char rateindex); 2423 int sisfb_mode_rate_to_ddata(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, 2424 unsigned char modeno, unsigned char rateindex, 2425 struct fb_var_screeninfo *var); 2426 BOOLEAN sisfb_gettotalfrommode(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, 2427 unsigned char modeno, int *htotal, int *vtotal, unsigned char rateindex); 2428 #endif 2429 2430 extern void SiS_GetVBInfo(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, 2431 PSIS_HW_INFO HwInfo, int chkcrt2mode); 2432 extern void SiS_GetLCDResInfo(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, 2433 PSIS_HW_INFO HwInfo); 2434 extern void SiS_SetYPbPr(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); 2435 extern void SiS_SetTVMode(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, PSIS_HW_INFO HwInfo); 2436 extern void SiS_UnLockCRT2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); 2437 extern void SiS_LockCRT2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); 2438 extern void SiS_DisableBridge(SiS_Private *, PSIS_HW_INFO); 2439 extern BOOLEAN SiS_SetCRT2Group(SiS_Private *, PSIS_HW_INFO, USHORT); 2440 extern USHORT SiS_GetRatePtr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, 2441 PSIS_HW_INFO HwInfo); 2442 extern void SiS_WaitRetrace1(SiS_Private *SiS_Pr); 2443 extern USHORT SiS_GetResInfo(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex); 2444 extern USHORT SiS_GetCH700x(SiS_Private *SiS_Pr, USHORT tempax); 2445 extern USHORT SiS_GetVCLK2Ptr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, 2446 USHORT RefreshRateTableIndex, PSIS_HW_INFO HwInfo); 2447 extern BOOLEAN SiS_IsVAMode(SiS_Private *, PSIS_HW_INFO); 2448 extern BOOLEAN SiS_IsDualEdge(SiS_Private *, PSIS_HW_INFO); 2449 2450 #ifdef LINUX_XF86 2451 extern int SiS_compute_vclk(int Clock, int *out_n, int *out_dn, int *out_div, 2452 int *out_sbit, int *out_scale); 2453 extern void SiSCalcClock(ScrnInfoPtr pScrn, int clock, int max_VLD, unsigned int *vclk); 2454 2455 extern unsigned char SiS_GetSetBIOSScratch(ScrnInfoPtr pScrn, USHORT offset, unsigned char value); 2456 extern unsigned char SiS_GetSetModeID(ScrnInfoPtr pScrn, unsigned char id); 2457 extern USHORT SiS_CalcModeIndex(ScrnInfoPtr pScrn, DisplayModePtr mode, unsigned long VBFlags, 2458 BOOLEAN hcm); 2459 #endif 2460 2461 #endif 2462 2463