init301.h revision 72b676d7
1/* $XFree86$ */ 2/* $XdotOrg$ */ 3/* 4 * Data and prototypes for init301.c 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#ifndef _INIT301_H_ 54#define _INIT301_H_ 55 56#include "osdef.h" 57#include "initdef.h" 58 59#ifdef SIS_XORG_XF86 60#include "sis.h" 61#include "sis_regs.h" 62#endif 63 64#ifdef SIS_LINUX_KERNEL 65#include "vgatypes.h" 66#include "vstruct.h" 67#ifdef SIS_CP 68#undef SIS_CP 69#endif 70#include <linux/config.h> 71#include <linux/version.h> 72#include <linux/types.h> 73#include <asm/io.h> 74#include <linux/fb.h> 75#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) 76#include <video/fbcon.h> 77#endif 78#include "sis.h" 79#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) 80#include <linux/sisfb.h> 81#else 82#include <video/sisfb.h> 83#endif 84#endif 85 86static const unsigned char SiS_YPbPrTable[5][64] = { 87 { /* 525i */ 88 0x17,0x1d,0x03,0x09,0x05,0x06,0x0c,0x0c, 89 0x94,0x49,0x01,0x0a,0x06,0x0d,0x04,0x0a, 90 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x1b, 91 0x0c,0x50,0x00,0x97,0x00,0xda,0x4a,0x17, 92 0x7d,0x05,0x4b,0x00,0x00,0xe2,0x00,0x02, 93 0x03,0x0a,0x65,0x9d,0x08,0x92,0x8f,0x40, 94 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x53, 95 0x00,0x40,0x44,0x00,0xdb,0x02,0x3b,0x00 96 }, 97 { /* 525p */ 98 0x33,0x06,0x06,0x09,0x0b,0x0c,0x0c,0x0c, 99 0x98,0x0a,0x01,0x0d,0x06,0x0d,0x04,0x0a, 100 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f, 101 0x0c,0x50,0xb2,0x9f,0x16,0x59,0x4f,0x13, 102 0xad,0x11,0xad,0x1d,0x40,0x8a,0x3d,0xb8, 103 0x51,0x5e,0x60,0x49,0x7d,0x92,0x0f,0x40, 104 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x4e, 105 0x43,0x41,0x11,0x00,0xfc,0xff,0x32,0x00 106 }, 107 { /* 750p */ 108#if 0 /* OK, but sticks to left edge */ 109 0x13,0x1d,0xe8,0x09,0x09,0xed,0x0c,0x0c, 110 0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a, 111 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f, 112 0xed,0x50,0x70,0x9f,0x16,0x59,0x21 /*0x2b*/,0x13, 113 0x27,0x0b,0x27,0xfc,0x30,0x27,0x1c,0xb0, 114 0x4b,0x4b,0x65 /*0x6f*/,0x2f,0x63,0x92,0x0f,0x40, 115 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x27, 116 0x00,0x40,0x11,0x00,0xfc,0xff,0x32,0x00 117#endif 118 0x23,0x2d,0xe8,0x09,0x09,0xed,0x0c,0x0c, 119 0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a, 120 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f, 121 0xed,0x50,0x70,0x9f,0x16,0x59,0x60,0x13, 122 0x27,0x0b,0x27,0xfc,0x30,0x27,0x1c,0xb0, 123 0x4b,0x4b,0x6f,0x2f,0x63,0x92,0x0f,0x40, 124 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x73, 125 0x00,0x40,0x11,0x00,0xfc,0xff,0x32,0x00 126 }, 127 { /* 625i */ 128 0x19,0x52,0x35,0x6e,0x04,0x38,0x3d,0x70, 129 0x94,0x49,0x01,0x12,0x06,0x3e,0x35,0x6d, 130 0x06,0x14,0x3e,0x35,0x6d,0x00,0x45,0x2b, 131 0x70,0x50,0x00,0x9b,0x00,0xd9,0x5d,0x17, 132 0x7d,0x05,0x45,0x00,0x00,0xe8,0x00,0x02, 133 0x0d,0x00,0x68,0xb0,0x0b,0x92,0x8f,0x40, 134 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x63, 135 0x00,0x40,0x3e,0x00,0xe1,0x02,0x28,0x00 136 }, 137 { /* 625p */ 138 0x3a,0x06,0x6a,0x6e,0x0b,0x70,0x0c,0x0c, 139 0x98,0x0a,0x01,0x0d,0x06,0x0d,0x04,0x0a, 140 0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f, 141 0x70,0x50,0xb2,0x9f,0x16,0x59,0x4f,0x13, 142 0xad,0x11,0xad,0x1d,0x40,0x8a,0x3d,0xb8, 143 0x51,0x5e,0x60,0x49,0x7d,0x92,0x0f,0x40, 144 0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x4e, 145 0x43,0x41,0x11,0x00,0xfc,0xff,0x32,0x00 146 } 147}; 148 149static const unsigned char SiS_TVPhase[] = 150{ 151 0x21,0xED,0xBA,0x08, /* 0x00 SiS_NTSCPhase */ 152 0x2A,0x05,0xE3,0x00, /* 0x01 SiS_PALPhase */ 153 0x21,0xE4,0x2E,0x9B, /* 0x02 SiS_PALMPhase */ 154 0x21,0xF4,0x3E,0xBA, /* 0x03 SiS_PALNPhase */ 155 0x1E,0x8B,0xA2,0xA7, 156 0x1E,0x83,0x0A,0xE0, /* 0x05 SiS_SpecialPhaseM */ 157 0x00,0x00,0x00,0x00, 158 0x00,0x00,0x00,0x00, 159 0x21,0xF0,0x7B,0xD6, /* 0x08 SiS_NTSCPhase2 */ 160 0x2A,0x09,0x86,0xE9, /* 0x09 SiS_PALPhase2 */ 161 0x21,0xE6,0xEF,0xA4, /* 0x0a SiS_PALMPhase2 */ 162 0x21,0xF6,0x94,0x46, /* 0x0b SiS_PALNPhase2 */ 163 0x1E,0x8B,0xA2,0xA7, 164 0x1E,0x83,0x0A,0xE0, /* 0x0d SiS_SpecialPhaseM */ 165 0x00,0x00,0x00,0x00, 166 0x00,0x00,0x00,0x00, 167 0x1e,0x8c,0x5c,0x7a, /* 0x10 SiS_SpecialPhase */ 168 0x25,0xd4,0xfd,0x5e /* 0x11 SiS_SpecialPhaseJ */ 169}; 170 171static const unsigned char SiS_HiTVGroup3_1[] = { 172 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x13, 173 0xb1, 0x41, 0x62, 0x62, 0xff, 0xf4, 0x45, 0xa6, 174 0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20, 175 0xac, 0xda, 0x60, 0xfe, 0x6a, 0x9a, 0x06, 0x10, 176 0xd1, 0x04, 0x18, 0x0a, 0xff, 0x80, 0x00, 0x80, 177 0x3b, 0x77, 0x00, 0xef, 0xe0, 0x10, 0xb0, 0xe0, 178 0x10, 0x4f, 0x0f, 0x0f, 0x05, 0x0f, 0x08, 0x6e, 179 0x1a, 0x1f, 0x25, 0x2a, 0x4c, 0xaa, 0x01 180}; 181 182static const unsigned char SiS_HiTVGroup3_2[] = { 183 0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x7a, 184 0x54, 0x41, 0xe7, 0xe7, 0xff, 0xf4, 0x45, 0xa6, 185 0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20, 186 0xac, 0x6a, 0x60, 0x2b, 0x52, 0xcd, 0x61, 0x10, 187 0x51, 0x04, 0x18, 0x0a, 0x1f, 0x80, 0x00, 0x80, 188 0xff, 0xa4, 0x04, 0x2b, 0x94, 0x21, 0x72, 0x94, 189 0x26, 0x05, 0x01, 0x0f, 0xed, 0x0f, 0x0a, 0x64, 190 0x18, 0x1d, 0x23, 0x28, 0x4c, 0xaa, 0x01 191}; 192 193#ifdef SIS315H 194/* 661 et al LCD data structure (2.03.00) */ 195static const unsigned char SiS_LCDStruct661[] = { 196 /* 1024x768 */ 197/* type|CR37| HDE | VDE | HT | VT | hss | hse */ 198 0x02,0xC0,0x00,0x04,0x00,0x03,0x40,0x05,0x26,0x03,0x10,0x00,0x88, 199 0x00,0x02,0x00,0x06,0x00,0x41,0x5A,0x64,0x00,0x00,0x00,0x00,0x04, 200 /* | vss | vse |clck| clock |CRT2DataP|CRT2DataP|idx */ 201 /* VESA non-VESA noscale */ 202 /* 1280x1024 */ 203 0x03,0xC0,0x00,0x05,0x00,0x04,0x98,0x06,0x2A,0x04,0x30,0x00,0x70, 204 0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x08, 205 /* 1400x1050 */ 206 0x09,0x20,0x78,0x05,0x1A,0x04,0x98,0x06,0x2A,0x04,0x18,0x00,0x38, 207 0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x09, 208 /* 1600x1200 */ 209 0x0B,0xE0,0x40,0x06,0xB0,0x04,0x70,0x08,0xE2,0x04,0x40,0x00,0xC0, 210 0x00,0x01,0x00,0x03,0x00,0xA2,0x70,0x24,0x00,0x00,0x00,0x00,0x0A, 211 /* 1280x768 (_2) */ 212 0x0A,0xE0,0x00,0x05,0x00,0x03,0x7C,0x06,0x26,0x03,0x30,0x00,0x70, 213 0x00,0x03,0x00,0x06,0x00,0x4D,0xC8,0x48,0x00,0x00,0x00,0x00,0x06, 214 /* 1280x720 */ 215 0x0E,0xE0,0x00,0x05,0xD0,0x02,0x80,0x05,0x26,0x03,0x10,0x00,0x20, 216 0x00,0x01,0x00,0x06,0x00,0x45,0x9C,0x62,0x00,0x00,0x00,0x00,0x05, 217 /* 1280x800 (_2) */ 218 0x0C,0xE0,0x00,0x05,0x20,0x03,0x10,0x06,0x2C,0x03,0x30,0x00,0x70, 219 0x00,0x04,0x00,0x03,0x00,0x49,0xCE,0x1E,0x00,0x00,0x00,0x00,0x09, 220 /* 1680x1050 */ 221 0x0D,0xE0,0x90,0x06,0x1A,0x04,0x6C,0x07,0x2A,0x04,0x1A,0x00,0x4C, 222 0x00,0x03,0x00,0x06,0x00,0x79,0xBE,0x44,0x00,0x00,0x00,0x00,0x06, 223 /* 1280x800_3 */ 224 0x0C,0xE0,0x00,0x05,0x20,0x03,0xAA,0x05,0x2E,0x03,0x30,0x00,0x50, 225 0x00,0x04,0x00,0x03,0x00,0x47,0xA9,0x10,0x00,0x00,0x00,0x00,0x07, 226 /* 800x600 */ 227 0x01,0xC0,0x20,0x03,0x58,0x02,0x20,0x04,0x74,0x02,0x2A,0x00,0x80, 228 0x00,0x06,0x00,0x04,0x00,0x28,0x63,0x4B,0x00,0x00,0x00,0x00,0x00, 229 /* 1280x854 */ 230 0x08,0xE0,0x00,0x05,0x56,0x03,0x80,0x06,0x5d,0x03,0x10,0x00,0x70, 231 0x00,0x01,0x00,0x03,0x00,0x54,0x75,0x13,0x00,0x00,0x00,0x00,0x08 232}; 233#endif 234 235#ifdef SIS300 236static unsigned char SiS300_TrumpionData[14][80] = { 237 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02, 238 0x20,0x03,0x0B,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x10,0x00,0x00,0x04,0x23, 239 0x00,0x00,0x03,0x28,0x03,0x10,0x05,0x08,0x40,0x10,0x00,0x10,0x04,0x23,0x00,0x23, 240 0x03,0x11,0x60,0xBC,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x09,0x04,0x04,0x05, 241 0x04,0x0C,0x09,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5A,0x01,0xBE,0x01,0x00 }, 242 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x27,0x00,0x80,0x02, 243 0x20,0x03,0x07,0x00,0x5E,0x01,0x0D,0x02,0x60,0x0C,0x30,0x11,0x00,0x00,0x04,0x23, 244 0x00,0x00,0x03,0x80,0x03,0x28,0x06,0x08,0x40,0x11,0x00,0x11,0x04,0x23,0x00,0x23, 245 0x03,0x11,0x60,0x90,0x01,0xFF,0x0F,0xF4,0x19,0x01,0x00,0x05,0x01,0x00,0x04,0x05, 246 0x04,0x0C,0x02,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEC,0x57,0x01,0xBE,0x01,0x00 }, 247 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x8A,0x00,0xD8,0x02, 248 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23, 249 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23, 250 0x03,0x11,0x60,0xD9,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05, 251 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x59,0x01,0xBE,0x01,0x00 }, 252 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x72,0x00,0xD8,0x02, 253 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23, 254 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23, 255 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05, 256 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 }, 257 { 0x02,0x0A,0x02,0x00,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02, 258 0x20,0x03,0x16,0x00,0xE0,0x01,0x0D,0x02,0x60,0x0C,0x30,0x98,0x00,0x00,0x04,0x23, 259 0x00,0x01,0x03,0x45,0x03,0x48,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x23,0x00,0x23, 260 0x03,0x11,0x60,0xF4,0x01,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x05,0x01,0x00,0x05,0x05, 261 0x04,0x0C,0x08,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 }, 262 { 0x02,0x0A,0x02,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xBF,0x00,0x20,0x03, 263 0x20,0x04,0x0D,0x00,0x58,0x02,0x71,0x02,0x80,0x0C,0x30,0x9A,0x00,0xFA,0x03,0x1D, 264 0x00,0x01,0x03,0x22,0x03,0x28,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x1D,0x00,0x1D, 265 0x03,0x11,0x60,0x39,0x03,0x40,0x05,0xF4,0x18,0x07,0x02,0x06,0x04,0x01,0x06,0x0B, 266 0x02,0x0A,0x20,0x19,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 }, 267 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xEF,0x00,0x00,0x04, 268 0x40,0x05,0x13,0x00,0x00,0x03,0x26,0x03,0x88,0x0C,0x30,0x90,0x00,0x00,0x04,0x23, 269 0x00,0x01,0x03,0x24,0x03,0x28,0x06,0x08,0x40,0x90,0x00,0x90,0x04,0x23,0x00,0x23, 270 0x03,0x11,0x60,0x40,0x05,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x08,0x01,0x00,0x08,0x01, 271 0x00,0x08,0x01,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 }, 272 /* variant 2 */ 273 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02, 274 0x20,0x03,0x15,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x18,0x00,0x00,0x04,0x23, 275 0x00,0x01,0x03,0x44,0x03,0x28,0x06,0x08,0x40,0x18,0x00,0x18,0x04,0x23,0x00,0x23, 276 0x03,0x11,0x60,0xA6,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x13,0x04,0x04,0x05, 277 0x04,0x0C,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 }, 278 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02, 279 0x20,0x03,0x15,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x18,0x00,0x00,0x04,0x23, 280 0x00,0x01,0x03,0x44,0x03,0x28,0x06,0x08,0x40,0x18,0x00,0x18,0x04,0x23,0x00,0x23, 281 0x03,0x11,0x60,0xA6,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x13,0x04,0x04,0x05, 282 0x04,0x0C,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 }, 283 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x8A,0x00,0xD8,0x02, 284 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23, 285 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23, 286 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05, 287 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 }, 288 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x72,0x00,0xD8,0x02, 289 0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23, 290 0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23, 291 0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05, 292 0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 }, 293 { 0x02,0x0A,0x02,0x00,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02, 294 0x20,0x03,0x16,0x00,0xE0,0x01,0x0D,0x02,0x60,0x0C,0x30,0x98,0x00,0x00,0x04,0x23, 295 0x00,0x01,0x03,0x45,0x03,0x48,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x23,0x00,0x23, 296 0x03,0x11,0x60,0xF4,0x01,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x05,0x01,0x00,0x05,0x05, 297 0x04,0x0C,0x08,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 }, 298 { 0x02,0x0A,0x02,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0xBF,0x00,0x20,0x03, 299 0x20,0x04,0x0D,0x00,0x58,0x02,0x71,0x02,0x80,0x0C,0x30,0x9A,0x00,0xFA,0x03,0x1D, 300 0x00,0x01,0x03,0x22,0x03,0x28,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x1D,0x00,0x1D, 301 0x03,0x11,0x60,0x39,0x03,0x40,0x05,0xF4,0x18,0x07,0x02,0x06,0x04,0x01,0x06,0x0B, 302 0x02,0x0A,0x20,0x19,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 }, 303 { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0xEF,0x00,0x00,0x04, 304 0x40,0x05,0x13,0x00,0x00,0x03,0x26,0x03,0x88,0x0C,0x30,0x90,0x00,0x00,0x04,0x23, 305 0x00,0x01,0x03,0x24,0x03,0x28,0x06,0x08,0x40,0x90,0x00,0x90,0x04,0x23,0x00,0x23, 306 0x03,0x11,0x60,0x40,0x05,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x08,0x01,0x00,0x08,0x01, 307 0x00,0x08,0x01,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 } 308}; 309#endif 310 311void SiS_UnLockCRT2(struct SiS_Private *SiS_Pr); 312#ifndef SIS_LINUX_KERNEL 313void SiS_LockCRT2(struct SiS_Private *SiS_Pr); 314#endif 315void SiS_EnableCRT2(struct SiS_Private *SiS_Pr); 316unsigned short SiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex); 317void SiS_WaitRetrace1(struct SiS_Private *SiS_Pr); 318BOOLEAN SiS_IsDualEdge(struct SiS_Private *SiS_Pr); 319BOOLEAN SiS_IsVAMode(struct SiS_Private *SiS_Pr); 320void SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, 321 unsigned short ModeIdIndex, int checkcrt2mode); 322void SiS_SetYPbPr(struct SiS_Private *SiS_Pr); 323void SiS_SetTVMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo, 324 unsigned short ModeIdIndex); 325void SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, 326 unsigned short ModeIdIndex); 327unsigned short SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, 328 unsigned short RefreshRateTableIndex); 329unsigned short SiS_GetResInfo(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned short ModeIdIndex); 330void SiS_DisableBridge(struct SiS_Private *SiS_Pr); 331#ifndef SIS_LINUX_KERNEL 332void SiS_EnableBridge(struct SiS_Private *SiS_Pr); 333#endif 334BOOLEAN SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo); 335void SiS_SiS30xBLOn(struct SiS_Private *SiS_Pr); 336void SiS_SiS30xBLOff(struct SiS_Private *SiS_Pr); 337 338void SiS_SetCH700x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val); 339unsigned short SiS_GetCH700x(struct SiS_Private *SiS_Pr, unsigned short tempax); 340void SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val); 341unsigned short SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempax); 342#ifndef SIS_LINUX_KERNEL 343void SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val); 344unsigned short SiS_GetCH70xx(struct SiS_Private *SiS_Pr, unsigned short tempax); 345#endif 346void SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg, 347 unsigned char orval,unsigned short andval); 348#ifdef SIS315H 349static void SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr); 350static void SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr); 351static void SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr); 352static void SiS_ChrontelDoSomething1(struct SiS_Private *SiS_Pr); 353void SiS_Chrontel701xBLOn(struct SiS_Private *SiS_Pr); 354void SiS_Chrontel701xBLOff(struct SiS_Private *SiS_Pr); 355#endif /* 315 */ 356 357#ifdef SIS300 358static BOOLEAN SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr); 359void SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo); 360#endif 361 362void SiS_DDC2Delay(struct SiS_Private *SiS_Pr, unsigned int delaytime); 363unsigned short SiS_ReadDDC1Bit(struct SiS_Private *SiS_Pr); 364unsigned short SiS_HandleDDC(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine, 365 unsigned short adaptnum, unsigned short DDCdatatype, 366 unsigned char *buffer, unsigned int VBFlags2); 367 368#ifdef SIS_XORG_XF86 369unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags, 370 int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype, 371 BOOLEAN checkcr32, unsigned int VBFlags2); 372unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr); 373unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype, 374 unsigned char *buffer); 375#else 376static unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags, 377 int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype, 378 BOOLEAN checkcr32, unsigned int VBFlags2); 379static unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr); 380static unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype, 381 unsigned char *buffer); 382#endif 383static void SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr); 384static unsigned short SiS_SetStart(struct SiS_Private *SiS_Pr); 385static unsigned short SiS_SetStop(struct SiS_Private *SiS_Pr); 386static unsigned short SiS_SetSCLKLow(struct SiS_Private *SiS_Pr); 387static unsigned short SiS_SetSCLKHigh(struct SiS_Private *SiS_Pr); 388static unsigned short SiS_ReadDDC2Data(struct SiS_Private *SiS_Pr); 389static unsigned short SiS_WriteDDC2Data(struct SiS_Private *SiS_Pr, unsigned short tempax); 390static unsigned short SiS_CheckACK(struct SiS_Private *SiS_Pr); 391static unsigned short SiS_WriteDABDDC(struct SiS_Private *SiS_Pr); 392static unsigned short SiS_PrepareReadDDC(struct SiS_Private *SiS_Pr); 393static unsigned short SiS_PrepareDDC(struct SiS_Private *SiS_Pr); 394static void SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno); 395static unsigned short SiS_DoProbeDDC(struct SiS_Private *SiS_Pr); 396 397#ifdef SIS300 398static void SiS_OEM300Setting(struct SiS_Private *SiS_Pr, 399 unsigned short ModeNo, unsigned short ModeIdIndex, unsigned short RefTabindex); 400static void SetOEMLCDData2(struct SiS_Private *SiS_Pr, 401 unsigned short ModeNo, unsigned short ModeIdIndex,unsigned short RefTableIndex); 402#endif 403#ifdef SIS315H 404static void SiS_OEM310Setting(struct SiS_Private *SiS_Pr, 405 unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI); 406static void SiS_OEM661Setting(struct SiS_Private *SiS_Pr, 407 unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI); 408static void SiS_FinalizeLCD(struct SiS_Private *, unsigned short, unsigned short); 409#endif 410 411extern void SiS_SetReg(SISIOADDRESS, unsigned short, unsigned short); 412extern void SiS_SetRegByte(SISIOADDRESS, unsigned short); 413extern void SiS_SetRegShort(SISIOADDRESS, unsigned short); 414extern void SiS_SetRegLong(SISIOADDRESS, unsigned int); 415extern unsigned char SiS_GetReg(SISIOADDRESS, unsigned short); 416extern unsigned char SiS_GetRegByte(SISIOADDRESS); 417extern unsigned short SiS_GetRegShort(SISIOADDRESS); 418extern unsigned int SiS_GetRegLong(SISIOADDRESS); 419extern void SiS_SetRegANDOR(SISIOADDRESS, unsigned short, unsigned short, unsigned short); 420extern void SiS_SetRegOR(SISIOADDRESS, unsigned short, unsigned short); 421extern void SiS_SetRegAND(SISIOADDRESS, unsigned short, unsigned short); 422extern void SiS_DisplayOff(struct SiS_Private *SiS_Pr); 423extern void SiS_DisplayOn(struct SiS_Private *SiS_Pr); 424extern BOOLEAN SiS_SearchModeID(struct SiS_Private *, unsigned short *, unsigned short *); 425extern unsigned short SiS_GetModeFlag(struct SiS_Private *SiS_Pr, unsigned short ModeNo, 426 unsigned short ModeIdIndex); 427extern unsigned short SiS_GetModePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex); 428extern unsigned short SiS_GetColorDepth(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex); 429extern unsigned short SiS_GetOffset(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, 430 unsigned short RefreshRateTableIndex); 431extern void SiS_LoadDAC(struct SiS_Private *SiS_Pr, unsigned short ModeNo, 432 unsigned short ModeIdIndex); 433extern void SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo, 434 unsigned short ModeIdIndex); 435extern void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth); 436extern unsigned short SiS_GetRefCRTVCLK(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide); 437extern unsigned short SiS_GetRefCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide); 438#ifdef SIS300 439extern void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *tempbx, 440 unsigned short *tempcl); 441extern unsigned short SiS_GetFIFOThresholdB300(unsigned short tempbx, unsigned short tempcl); 442extern unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index); 443#ifdef SIS_LINUX_KERNEL 444extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg); 445extern unsigned int sisfb_read_lpc_pci_dword(struct SiS_Private *SiS_Pr, int reg); 446#endif 447#endif 448#ifdef SIS315H 449extern void SiS_SetGroup2_C_ELV(struct SiS_Private *SiS_Pr, unsigned short ModeNo, 450 unsigned short ModeIdIndex, unsigned short RefreshRateTableIndex); 451#endif 452 453#endif 454