~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to drivers/video/sis/init301.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 "initdef.h"
 
57
 
 
58
#include "vgatypes.h"
 
59
#include "vstruct.h"
 
60
#ifdef SIS_CP
 
61
#undef SIS_CP
 
62
#endif
 
63
#include <linux/types.h>
 
64
#include <asm/io.h>
 
65
#include <linux/fb.h>
 
66
#include "sis.h"
 
67
#include <video/sisfb.h>
 
68
 
 
69
static const unsigned char SiS_YPbPrTable[3][64] = {
 
70
  {
 
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
 
79
  },
 
80
  {
 
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
 
89
  },
 
90
  {
 
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
 
100
#endif
 
101
#if 1 /* Perfect */
 
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
 
110
#endif
 
111
  }
 
112
};
 
113
 
 
114
static const unsigned char SiS_TVPhase[] =
 
115
{
 
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 */
 
120
        0x1E,0x8B,0xA2,0xA7,
 
121
        0x1E,0x83,0x0A,0xE0,    /* 0x05 SiS_SpecialPhaseM */
 
122
        0x00,0x00,0x00,0x00,
 
123
        0x00,0x00,0x00,0x00,
 
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 */
 
128
        0x1E,0x8B,0xA2,0xA7,
 
129
        0x1E,0x83,0x0A,0xE0,    /* 0x0d SiS_SpecialPhaseM */
 
130
        0x00,0x00,0x00,0x00,
 
131
        0x00,0x00,0x00,0x00,
 
132
        0x1e,0x8c,0x5c,0x7a,    /* 0x10 SiS_SpecialPhase */
 
133
        0x25,0xd4,0xfd,0x5e     /* 0x11 SiS_SpecialPhaseJ */
 
134
};
 
135
 
 
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
 
145
};
 
146
 
 
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
 
156
};
 
157
 
 
158
/* 301C / 302ELV extended Part2 TV registers (4 tap scaler) */
 
159
 
 
160
static const unsigned char SiS_Part2CLVX_1[] = {
 
161
    0x00,0x00,
 
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
 
166
};
 
167
 
 
168
static const unsigned char SiS_Part2CLVX_2[] = {
 
169
    0x00,0x00,
 
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
 
174
};
 
175
 
 
176
static const unsigned char SiS_Part2CLVX_3[] = {  /* NTSC, 525i, 525p */
 
177
    0xE0,0x01,
 
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,
 
182
    0x58,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,
 
187
    0x00,0x03,
 
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,
 
192
    0xFF,0xFF
 
193
};
 
194
 
 
195
static const unsigned char SiS_Part2CLVX_4[] = {   /* PAL */
 
196
    0x58,0x02,
 
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,
 
201
    0x00,0x03,
 
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,
 
206
    0x40,0x02,
 
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,
 
211
    0xFF,0xFF
 
212
};
 
213
 
 
214
static const unsigned char SiS_Part2CLVX_5[] = {   /* 750p */
 
215
    0x00,0x03,
 
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,
 
220
    0xFF,0xFF
 
221
};
 
222
 
 
223
static const unsigned char SiS_Part2CLVX_6[] = {   /* 1080i */
 
224
    0x00,0x04,
 
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,
 
229
    0xFF,0xFF,
 
230
};
 
231
 
 
232
#ifdef CONFIG_FB_SIS_315
 
233
/* 661 et al LCD data structure (2.03.00) */
 
234
static const unsigned char SiS_LCDStruct661[] = {
 
235
    /* 1024x768 */
 
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 */
 
241
    /* 1280x1024 */
 
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,
 
244
    /* 1400x1050 */
 
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,
 
247
    /* 1600x1200 */
 
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,
 
250
    /* 1280x768 (_2) */
 
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,
 
253
    /* 1280x720 */
 
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,
 
256
    /* 1280x800 (_2) */
 
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,
 
259
    /* 1680x1050 */
 
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,
 
262
    /* 1280x800_3 */
 
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,
 
265
    /* 800x600 */
 
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,
 
268
    /* 1280x854 */
 
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
 
271
};
 
272
#endif
 
273
 
 
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 },
 
311
  /* variant 2 */
 
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 }
 
347
};
 
348
#endif
 
349
 
 
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);
 
370
 
 
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);
 
384
#endif /* 315 */
 
385
 
 
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);
 
389
#endif
 
390
 
 
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);
 
396
 
 
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);
 
416
 
 
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);
 
422
#endif
 
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);
 
429
#endif
 
430
 
 
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);
 
454
#endif
 
455
 
 
456
#endif