4
* Data and prototypes for init301.c
6
* Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
8
* If distributed as part of the Linux kernel, the following license terms
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.
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.
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
25
* Otherwise, the following license terms apply:
27
* * Redistribution and use in source and binary forms, with or without
28
* * modification, are permitted provided that the following conditions
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.
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.
49
* Author: Thomas Winischhofer <thomas@winischhofer.net>
63
#include <linux/types.h>
67
#include <video/sisfb.h>
69
static const unsigned char SiS_YPbPrTable[3][64] = {
71
0x17,0x1d,0x03,0x09,0x05,0x06,0x0c,0x0c,
72
0x94,0x49,0x01,0x0a,0x06,0x0d,0x04,0x0a,
73
0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x1b,
74
0x0c,0x50,0x00,0x97,0x00,0xda,0x4a,0x17,
75
0x7d,0x05,0x4b,0x00,0x00,0xe2,0x00,0x02,
76
0x03,0x0a,0x65,0x9d /*0x8d*/,0x08,0x92,0x8f,0x40,
77
0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x53 /*0x50*/,
78
0x00,0x40,0x44,0x00,0xdb,0x02,0x3b,0x00
81
0x33,0x06,0x06,0x09,0x0b,0x0c,0x0c,0x0c,
82
0x98,0x0a,0x01,0x0d,0x06,0x0d,0x04,0x0a,
83
0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
84
0x0c,0x50,0xb2,0x9f,0x16,0x59,0x4f,0x13,
85
0xad,0x11,0xad,0x1d,0x40,0x8a,0x3d,0xb8,
86
0x51,0x5e,0x60,0x49,0x7d,0x92,0x0f,0x40,
87
0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x4e,
88
0x43,0x41,0x11,0x00,0xfc,0xff,0x32,0x00
91
#if 0 /* OK, but sticks to left edge */
92
0x13,0x1d,0xe8,0x09,0x09,0xed,0x0c,0x0c,
93
0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a,
94
0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
95
0xed,0x50,0x70,0x9f,0x16,0x59,0x21 /*0x2b*/,0x13,
96
0x27,0x0b,0x27,0xfc,0x30,0x27,0x1c,0xb0,
97
0x4b,0x4b,0x65 /*0x6f*/,0x2f,0x63,0x92,0x0f,0x40,
98
0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x27,
99
0x00,0x40,0x11,0x00,0xfc,0xff,0x32,0x00
102
0x23,0x2d,0xe8,0x09,0x09,0xed,0x0c,0x0c,
103
0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a,
104
0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
105
0xed,0x50,0x70,0x9f,0x16,0x59,0x60,0x13,
106
0x27,0x0b,0x27,0xfc,0x30,0x27,0x1c,0xb0,
107
0x4b,0x4b,0x6f,0x2f,0x63,0x92,0x0f,0x40,
108
0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x73,
109
0x00,0x40,0x11,0x00,0xfc,0xff,0x32,0x00
114
static const unsigned char SiS_TVPhase[] =
116
0x21,0xED,0xBA,0x08, /* 0x00 SiS_NTSCPhase */
117
0x2A,0x05,0xE3,0x00, /* 0x01 SiS_PALPhase */
118
0x21,0xE4,0x2E,0x9B, /* 0x02 SiS_PALMPhase */
119
0x21,0xF4,0x3E,0xBA, /* 0x03 SiS_PALNPhase */
121
0x1E,0x83,0x0A,0xE0, /* 0x05 SiS_SpecialPhaseM */
124
0x21,0xF0,0x7B,0xD6, /* 0x08 SiS_NTSCPhase2 */
125
0x2A,0x09,0x86,0xE9, /* 0x09 SiS_PALPhase2 */
126
0x21,0xE6,0xEF,0xA4, /* 0x0a SiS_PALMPhase2 */
127
0x21,0xF6,0x94,0x46, /* 0x0b SiS_PALNPhase2 */
129
0x1E,0x83,0x0A,0xE0, /* 0x0d SiS_SpecialPhaseM */
132
0x1e,0x8c,0x5c,0x7a, /* 0x10 SiS_SpecialPhase */
133
0x25,0xd4,0xfd,0x5e /* 0x11 SiS_SpecialPhaseJ */
136
static const unsigned char SiS_HiTVGroup3_1[] = {
137
0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x13,
138
0xb1, 0x41, 0x62, 0x62, 0xff, 0xf4, 0x45, 0xa6,
139
0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20,
140
0xac, 0xda, 0x60, 0xfe, 0x6a, 0x9a, 0x06, 0x10,
141
0xd1, 0x04, 0x18, 0x0a, 0xff, 0x80, 0x00, 0x80,
142
0x3b, 0x77, 0x00, 0xef, 0xe0, 0x10, 0xb0, 0xe0,
143
0x10, 0x4f, 0x0f, 0x0f, 0x05, 0x0f, 0x08, 0x6e,
144
0x1a, 0x1f, 0x25, 0x2a, 0x4c, 0xaa, 0x01
147
static const unsigned char SiS_HiTVGroup3_2[] = {
148
0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x7a,
149
0x54, 0x41, 0xe7, 0xe7, 0xff, 0xf4, 0x45, 0xa6,
150
0x25, 0x2f, 0x67, 0xf6, 0xbf, 0xff, 0x8e, 0x20,
151
0xac, 0x6a, 0x60, 0x2b, 0x52, 0xcd, 0x61, 0x10,
152
0x51, 0x04, 0x18, 0x0a, 0x1f, 0x80, 0x00, 0x80,
153
0xff, 0xa4, 0x04, 0x2b, 0x94, 0x21, 0x72, 0x94,
154
0x26, 0x05, 0x01, 0x0f, 0xed, 0x0f, 0x0a, 0x64,
155
0x18, 0x1d, 0x23, 0x28, 0x4c, 0xaa, 0x01
158
/* 301C / 302ELV extended Part2 TV registers (4 tap scaler) */
160
static const unsigned char SiS_Part2CLVX_1[] = {
162
0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F,0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E,
163
0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E,0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C,
164
0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C,0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C,
165
0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C,0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E
168
static const unsigned char SiS_Part2CLVX_2[] = {
170
0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F,0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E,
171
0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E,0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C,
172
0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C,0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C,
173
0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C,0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E
176
static const unsigned char SiS_Part2CLVX_3[] = { /* NTSC, 525i, 525p */
178
0x04,0x1A,0x04,0x7E,0x03,0x1A,0x06,0x7D,0x01,0x1A,0x08,0x7D,0x00,0x19,0x0A,0x7D,
179
0x7F,0x19,0x0C,0x7C,0x7E,0x18,0x0E,0x7C,0x7E,0x17,0x10,0x7B,0x7D,0x15,0x12,0x7C,
180
0x7D,0x13,0x13,0x7D,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0E,0x18,0x7E,
181
0x7D,0x0C,0x19,0x7E,0x7D,0x0A,0x19,0x00,0x7D,0x08,0x1A,0x01,0x7E,0x06,0x1A,0x02,
183
0x07,0x14,0x07,0x7E,0x06,0x14,0x09,0x7D,0x05,0x14,0x0A,0x7D,0x04,0x13,0x0B,0x7E,
184
0x03,0x13,0x0C,0x7E,0x02,0x12,0x0D,0x7F,0x01,0x12,0x0E,0x7F,0x01,0x11,0x0F,0x7F,
185
0x00,0x10,0x10,0x00,0x7F,0x0F,0x11,0x01,0x7F,0x0E,0x12,0x01,0x7E,0x0D,0x12,0x03,
186
0x7E,0x0C,0x13,0x03,0x7E,0x0B,0x13,0x04,0x7E,0x0A,0x14,0x04,0x7D,0x09,0x14,0x06,
188
0x09,0x0F,0x09,0x7F,0x08,0x0F,0x09,0x00,0x07,0x0F,0x0A,0x00,0x06,0x0F,0x0A,0x01,
189
0x06,0x0E,0x0B,0x01,0x05,0x0E,0x0B,0x02,0x04,0x0E,0x0C,0x02,0x04,0x0D,0x0C,0x03,
190
0x03,0x0D,0x0D,0x03,0x02,0x0C,0x0D,0x05,0x02,0x0C,0x0E,0x04,0x01,0x0B,0x0E,0x06,
191
0x01,0x0B,0x0E,0x06,0x00,0x0A,0x0F,0x07,0x00,0x0A,0x0F,0x07,0x00,0x09,0x0F,0x08,
195
static const unsigned char SiS_Part2CLVX_4[] = { /* PAL */
197
0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E,0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D,
198
0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C,0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D,
199
0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E,0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E,
200
0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01,0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04,
202
0x08,0x12,0x08,0x7E,0x07,0x12,0x09,0x7E,0x06,0x12,0x0A,0x7E,0x05,0x11,0x0B,0x7F,
203
0x04,0x11,0x0C,0x7F,0x03,0x11,0x0C,0x00,0x03,0x10,0x0D,0x00,0x02,0x0F,0x0E,0x01,
204
0x01,0x0F,0x0F,0x01,0x01,0x0E,0x0F,0x02,0x00,0x0D,0x10,0x03,0x7F,0x0C,0x11,0x04,
205
0x7F,0x0C,0x11,0x04,0x7F,0x0B,0x11,0x05,0x7E,0x0A,0x12,0x06,0x7E,0x09,0x12,0x07,
207
0x04,0x1A,0x04,0x7E,0x02,0x1B,0x05,0x7E,0x01,0x1A,0x07,0x7E,0x00,0x1A,0x09,0x7D,
208
0x7F,0x19,0x0B,0x7D,0x7E,0x18,0x0D,0x7D,0x7D,0x17,0x10,0x7C,0x7D,0x15,0x12,0x7C,
209
0x7C,0x14,0x14,0x7C,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0D,0x18,0x7F,
210
0x7D,0x0B,0x19,0x7F,0x7D,0x09,0x1A,0x00,0x7D,0x07,0x1A,0x02,0x7E,0x05,0x1B,0x02,
214
static const unsigned char SiS_Part2CLVX_5[] = { /* 750p */
216
0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E,0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D,
217
0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C,0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D,
218
0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E,0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E,
219
0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01,0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04,
223
static const unsigned char SiS_Part2CLVX_6[] = { /* 1080i */
225
0x04,0x1A,0x04,0x7E,0x02,0x1B,0x05,0x7E,0x01,0x1A,0x07,0x7E,0x00,0x1A,0x09,0x7D,
226
0x7F,0x19,0x0B,0x7D,0x7E,0x18,0x0D,0x7D,0x7D,0x17,0x10,0x7C,0x7D,0x15,0x12,0x7C,
227
0x7C,0x14,0x14,0x7C,0x7C,0x12,0x15,0x7D,0x7C,0x10,0x17,0x7D,0x7C,0x0D,0x18,0x7F,
228
0x7D,0x0B,0x19,0x7F,0x7D,0x09,0x1A,0x00,0x7D,0x07,0x1A,0x02,0x7E,0x05,0x1B,0x02,
232
#ifdef CONFIG_FB_SIS_315
233
/* 661 et al LCD data structure (2.03.00) */
234
static const unsigned char SiS_LCDStruct661[] = {
236
/* type|CR37| HDE | VDE | HT | VT | hss | hse */
237
0x02,0xC0,0x00,0x04,0x00,0x03,0x40,0x05,0x26,0x03,0x10,0x00,0x88,
238
0x00,0x02,0x00,0x06,0x00,0x41,0x5A,0x64,0x00,0x00,0x00,0x00,0x04,
239
/* | vss | vse |clck| clock |CRT2DataP|CRT2DataP|idx */
240
/* VESA non-VESA noscale */
242
0x03,0xC0,0x00,0x05,0x00,0x04,0x98,0x06,0x2A,0x04,0x30,0x00,0x70,
243
0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x08,
245
0x09,0x20,0x78,0x05,0x1A,0x04,0x98,0x06,0x2A,0x04,0x18,0x00,0x38,
246
0x00,0x01,0x00,0x03,0x00,0x6C,0xF8,0x2F,0x00,0x00,0x00,0x00,0x09,
248
0x0B,0xE0,0x40,0x06,0xB0,0x04,0x70,0x08,0xE2,0x04,0x40,0x00,0xC0,
249
0x00,0x01,0x00,0x03,0x00,0xA2,0x70,0x24,0x00,0x00,0x00,0x00,0x0A,
251
0x0A,0xE0,0x00,0x05,0x00,0x03,0x7C,0x06,0x26,0x03,0x30,0x00,0x70,
252
0x00,0x03,0x00,0x06,0x00,0x4D,0xC8,0x48,0x00,0x00,0x00,0x00,0x06,
254
0x0E,0xE0,0x00,0x05,0xD0,0x02,0x80,0x05,0x26,0x03,0x10,0x00,0x20,
255
0x00,0x01,0x00,0x06,0x00,0x45,0x9C,0x62,0x00,0x00,0x00,0x00,0x05,
257
0x0C,0xE0,0x00,0x05,0x20,0x03,0x10,0x06,0x2C,0x03,0x30,0x00,0x70,
258
0x00,0x04,0x00,0x03,0x00,0x49,0xCE,0x1E,0x00,0x00,0x00,0x00,0x09,
260
0x0D,0xE0,0x90,0x06,0x1A,0x04,0x6C,0x07,0x2A,0x04,0x1A,0x00,0x4C,
261
0x00,0x03,0x00,0x06,0x00,0x79,0xBE,0x44,0x00,0x00,0x00,0x00,0x06,
263
0x0C,0xE0,0x00,0x05,0x20,0x03,0xAA,0x05,0x2E,0x03,0x30,0x00,0x50,
264
0x00,0x04,0x00,0x03,0x00,0x47,0xA9,0x10,0x00,0x00,0x00,0x00,0x07,
266
0x01,0xC0,0x20,0x03,0x58,0x02,0x20,0x04,0x74,0x02,0x2A,0x00,0x80,
267
0x00,0x06,0x00,0x04,0x00,0x28,0x63,0x4B,0x00,0x00,0x00,0x00,0x00,
269
0x08,0xE0,0x00,0x05,0x56,0x03,0x80,0x06,0x5d,0x03,0x10,0x00,0x70,
270
0x00,0x01,0x00,0x03,0x00,0x54,0x75,0x13,0x00,0x00,0x00,0x00,0x08
274
#ifdef CONFIG_FB_SIS_300
275
static unsigned char SiS300_TrumpionData[14][80] = {
276
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
277
0x20,0x03,0x0B,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x10,0x00,0x00,0x04,0x23,
278
0x00,0x00,0x03,0x28,0x03,0x10,0x05,0x08,0x40,0x10,0x00,0x10,0x04,0x23,0x00,0x23,
279
0x03,0x11,0x60,0xBC,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x09,0x04,0x04,0x05,
280
0x04,0x0C,0x09,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5A,0x01,0xBE,0x01,0x00 },
281
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x27,0x00,0x80,0x02,
282
0x20,0x03,0x07,0x00,0x5E,0x01,0x0D,0x02,0x60,0x0C,0x30,0x11,0x00,0x00,0x04,0x23,
283
0x00,0x00,0x03,0x80,0x03,0x28,0x06,0x08,0x40,0x11,0x00,0x11,0x04,0x23,0x00,0x23,
284
0x03,0x11,0x60,0x90,0x01,0xFF,0x0F,0xF4,0x19,0x01,0x00,0x05,0x01,0x00,0x04,0x05,
285
0x04,0x0C,0x02,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEC,0x57,0x01,0xBE,0x01,0x00 },
286
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x8A,0x00,0xD8,0x02,
287
0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
288
0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
289
0x03,0x11,0x60,0xD9,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
290
0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x59,0x01,0xBE,0x01,0x00 },
291
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x72,0x00,0xD8,0x02,
292
0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
293
0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
294
0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
295
0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
296
{ 0x02,0x0A,0x02,0x00,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
297
0x20,0x03,0x16,0x00,0xE0,0x01,0x0D,0x02,0x60,0x0C,0x30,0x98,0x00,0x00,0x04,0x23,
298
0x00,0x01,0x03,0x45,0x03,0x48,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x23,0x00,0x23,
299
0x03,0x11,0x60,0xF4,0x01,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x05,0x01,0x00,0x05,0x05,
300
0x04,0x0C,0x08,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
301
{ 0x02,0x0A,0x02,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xBF,0x00,0x20,0x03,
302
0x20,0x04,0x0D,0x00,0x58,0x02,0x71,0x02,0x80,0x0C,0x30,0x9A,0x00,0xFA,0x03,0x1D,
303
0x00,0x01,0x03,0x22,0x03,0x28,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x1D,0x00,0x1D,
304
0x03,0x11,0x60,0x39,0x03,0x40,0x05,0xF4,0x18,0x07,0x02,0x06,0x04,0x01,0x06,0x0B,
305
0x02,0x0A,0x20,0x19,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
306
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0xEF,0x00,0x00,0x04,
307
0x40,0x05,0x13,0x00,0x00,0x03,0x26,0x03,0x88,0x0C,0x30,0x90,0x00,0x00,0x04,0x23,
308
0x00,0x01,0x03,0x24,0x03,0x28,0x06,0x08,0x40,0x90,0x00,0x90,0x04,0x23,0x00,0x23,
309
0x03,0x11,0x60,0x40,0x05,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x08,0x01,0x00,0x08,0x01,
310
0x00,0x08,0x01,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x5B,0x01,0xBE,0x01,0x00 },
312
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
313
0x20,0x03,0x15,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x18,0x00,0x00,0x04,0x23,
314
0x00,0x01,0x03,0x44,0x03,0x28,0x06,0x08,0x40,0x18,0x00,0x18,0x04,0x23,0x00,0x23,
315
0x03,0x11,0x60,0xA6,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x13,0x04,0x04,0x05,
316
0x04,0x0C,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
317
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
318
0x20,0x03,0x15,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x18,0x00,0x00,0x04,0x23,
319
0x00,0x01,0x03,0x44,0x03,0x28,0x06,0x08,0x40,0x18,0x00,0x18,0x04,0x23,0x00,0x23,
320
0x03,0x11,0x60,0xA6,0x01,0xFF,0x03,0xFF,0x19,0x01,0x00,0x05,0x13,0x04,0x04,0x05,
321
0x04,0x0C,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
322
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x8A,0x00,0xD8,0x02,
323
0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
324
0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
325
0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
326
0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
327
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x72,0x00,0xD8,0x02,
328
0x84,0x03,0x16,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x1C,0x00,0x20,0x04,0x23,
329
0x00,0x01,0x03,0x53,0x03,0x28,0x06,0x08,0x40,0x1C,0x00,0x16,0x04,0x23,0x00,0x23,
330
0x03,0x11,0x60,0xDA,0x01,0xFF,0x0F,0xF4,0x18,0x07,0x05,0x05,0x13,0x04,0x04,0x05,
331
0x01,0x0B,0x13,0x0A,0x02,0xB0,0x00,0x00,0x02,0xBA,0xF0,0x55,0x01,0xBE,0x01,0x00 },
332
{ 0x02,0x0A,0x02,0x00,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
333
0x20,0x03,0x16,0x00,0xE0,0x01,0x0D,0x02,0x60,0x0C,0x30,0x98,0x00,0x00,0x04,0x23,
334
0x00,0x01,0x03,0x45,0x03,0x48,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x23,0x00,0x23,
335
0x03,0x11,0x60,0xF4,0x01,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x05,0x01,0x00,0x05,0x05,
336
0x04,0x0C,0x08,0x05,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 },
337
{ 0x02,0x0A,0x02,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0xBF,0x00,0x20,0x03,
338
0x20,0x04,0x0D,0x00,0x58,0x02,0x71,0x02,0x80,0x0C,0x30,0x9A,0x00,0xFA,0x03,0x1D,
339
0x00,0x01,0x03,0x22,0x03,0x28,0x06,0x08,0x40,0x98,0x00,0x98,0x04,0x1D,0x00,0x1D,
340
0x03,0x11,0x60,0x39,0x03,0x40,0x05,0xF4,0x18,0x07,0x02,0x06,0x04,0x01,0x06,0x0B,
341
0x02,0x0A,0x20,0x19,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 },
342
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x11,0x00,0x0D,0x10,0xEF,0x00,0x00,0x04,
343
0x40,0x05,0x13,0x00,0x00,0x03,0x26,0x03,0x88,0x0C,0x30,0x90,0x00,0x00,0x04,0x23,
344
0x00,0x01,0x03,0x24,0x03,0x28,0x06,0x08,0x40,0x90,0x00,0x90,0x04,0x23,0x00,0x23,
345
0x03,0x11,0x60,0x40,0x05,0xFF,0x0F,0xF4,0x18,0x01,0x00,0x08,0x01,0x00,0x08,0x01,
346
0x00,0x08,0x01,0x01,0x02,0xB0,0x00,0x00,0x02,0xBA,0xEA,0x58,0x01,0xBE,0x01,0x00 }
350
void SiS_UnLockCRT2(struct SiS_Private *SiS_Pr);
351
void SiS_EnableCRT2(struct SiS_Private *SiS_Pr);
352
unsigned short SiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
353
void SiS_WaitRetrace1(struct SiS_Private *SiS_Pr);
354
bool SiS_IsDualEdge(struct SiS_Private *SiS_Pr);
355
bool SiS_IsVAMode(struct SiS_Private *SiS_Pr);
356
void SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
357
unsigned short ModeIdIndex, int checkcrt2mode);
358
void SiS_SetYPbPr(struct SiS_Private *SiS_Pr);
359
void SiS_SetTVMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
360
unsigned short ModeIdIndex);
361
void SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
362
unsigned short ModeIdIndex);
363
unsigned short SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex,
364
unsigned short RefreshRateTableIndex);
365
unsigned short SiS_GetResInfo(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned short ModeIdIndex);
366
void SiS_DisableBridge(struct SiS_Private *SiS_Pr);
367
bool SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo);
368
void SiS_SiS30xBLOn(struct SiS_Private *SiS_Pr);
369
void SiS_SiS30xBLOff(struct SiS_Private *SiS_Pr);
371
void SiS_SetCH700x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
372
unsigned short SiS_GetCH700x(struct SiS_Private *SiS_Pr, unsigned short tempax);
373
void SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
374
unsigned short SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempax);
375
void SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg,
376
unsigned char orval,unsigned short andval);
377
#ifdef CONFIG_FB_SIS_315
378
static void SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr);
379
static void SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr);
380
static void SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr);
381
static void SiS_ChrontelDoSomething1(struct SiS_Private *SiS_Pr);
382
void SiS_Chrontel701xBLOn(struct SiS_Private *SiS_Pr);
383
void SiS_Chrontel701xBLOff(struct SiS_Private *SiS_Pr);
386
#ifdef CONFIG_FB_SIS_300
387
static bool SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr);
388
void SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo);
391
void SiS_DDC2Delay(struct SiS_Private *SiS_Pr, unsigned int delaytime);
392
unsigned short SiS_ReadDDC1Bit(struct SiS_Private *SiS_Pr);
393
unsigned short SiS_HandleDDC(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine,
394
unsigned short adaptnum, unsigned short DDCdatatype,
395
unsigned char *buffer, unsigned int VBFlags2);
397
static unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags,
398
int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype,
399
bool checkcr32, unsigned int VBFlags2);
400
static unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr);
401
static unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype,
402
unsigned char *buffer);
403
static void SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr);
404
static unsigned short SiS_SetStart(struct SiS_Private *SiS_Pr);
405
static unsigned short SiS_SetStop(struct SiS_Private *SiS_Pr);
406
static unsigned short SiS_SetSCLKLow(struct SiS_Private *SiS_Pr);
407
static unsigned short SiS_SetSCLKHigh(struct SiS_Private *SiS_Pr);
408
static unsigned short SiS_ReadDDC2Data(struct SiS_Private *SiS_Pr);
409
static unsigned short SiS_WriteDDC2Data(struct SiS_Private *SiS_Pr, unsigned short tempax);
410
static unsigned short SiS_CheckACK(struct SiS_Private *SiS_Pr);
411
static unsigned short SiS_WriteDABDDC(struct SiS_Private *SiS_Pr);
412
static unsigned short SiS_PrepareReadDDC(struct SiS_Private *SiS_Pr);
413
static unsigned short SiS_PrepareDDC(struct SiS_Private *SiS_Pr);
414
static void SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno);
415
static unsigned short SiS_DoProbeDDC(struct SiS_Private *SiS_Pr);
417
#ifdef CONFIG_FB_SIS_300
418
static void SiS_OEM300Setting(struct SiS_Private *SiS_Pr,
419
unsigned short ModeNo, unsigned short ModeIdIndex, unsigned short RefTabindex);
420
static void SetOEMLCDData2(struct SiS_Private *SiS_Pr,
421
unsigned short ModeNo, unsigned short ModeIdIndex,unsigned short RefTableIndex);
423
#ifdef CONFIG_FB_SIS_315
424
static void SiS_OEM310Setting(struct SiS_Private *SiS_Pr,
425
unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI);
426
static void SiS_OEM661Setting(struct SiS_Private *SiS_Pr,
427
unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI);
428
static void SiS_FinalizeLCD(struct SiS_Private *, unsigned short, unsigned short);
431
extern void SiS_DisplayOff(struct SiS_Private *SiS_Pr);
432
extern void SiS_DisplayOn(struct SiS_Private *SiS_Pr);
433
extern bool SiS_SearchModeID(struct SiS_Private *, unsigned short *, unsigned short *);
434
extern unsigned short SiS_GetModeFlag(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
435
unsigned short ModeIdIndex);
436
extern unsigned short SiS_GetModePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
437
extern unsigned short SiS_GetColorDepth(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
438
extern unsigned short SiS_GetOffset(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex,
439
unsigned short RefreshRateTableIndex);
440
extern void SiS_LoadDAC(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
441
unsigned short ModeIdIndex);
442
extern void SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
443
unsigned short ModeIdIndex);
444
extern void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth);
445
extern unsigned short SiS_GetRefCRTVCLK(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
446
extern unsigned short SiS_GetRefCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
447
#ifdef CONFIG_FB_SIS_300
448
extern void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *tempbx,
449
unsigned short *tempcl);
450
extern unsigned short SiS_GetFIFOThresholdB300(unsigned short tempbx, unsigned short tempcl);
451
extern unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index);
452
extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg);
453
extern unsigned int sisfb_read_lpc_pci_dword(struct SiS_Private *SiS_Pr, int reg);