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