root/drivers/video/fbdev/sis/oem310.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* $XFree86$ */
   2 /* $XdotOrg$ */
   3 /*
   4  * OEM Data for 315/330/340 series
   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 static const unsigned char SiS310_LCDDelayCompensation_301[] =                  /* 301 */
  54 {
  55         0x00,0x00,0x00,    /*   800x600 */
  56         0x0b,0x0b,0x0b,    /*  1024x768 */
  57         0x08,0x08,0x08,    /* 1280x1024 */
  58         0x00,0x00,0x00,    /*   640x480 (unknown) */
  59         0x00,0x00,0x00,    /*  1024x600 (unknown) */
  60         0x00,0x00,0x00,    /*  1152x864 (unknown) */
  61         0x08,0x08,0x08,    /*  1280x960 (guessed) */
  62         0x00,0x00,0x00,    /*  1152x768 (unknown) */
  63         0x08,0x08,0x08,    /* 1400x1050 */
  64         0x08,0x08,0x08,    /*  1280x768  (guessed) */
  65         0x00,0x00,0x00,    /* 1600x1200 */
  66         0x00,0x00,0x00,    /*   320x480 (unknown) */
  67         0x00,0x00,0x00,
  68         0x00,0x00,0x00,
  69         0x00,0x00,0x00
  70 };
  71 
  72 /* This is contained in 650+301B BIOSes, but it is wrong - so we don't use it */
  73 static const unsigned char SiS310_LCDDelayCompensation_650301LV[] =             /* 650 + 30xLV */
  74 {
  75         0x01,0x01,0x01,    /*   800x600 */
  76         0x01,0x01,0x01,    /*  1024x768 */
  77         0x01,0x01,0x01,    /* 1280x1024 */
  78         0x01,0x01,0x01,    /*   640x480 (unknown) */
  79         0x01,0x01,0x01,    /*  1024x600 (unknown) */
  80         0x01,0x01,0x01,    /*  1152x864 (unknown) */
  81         0x01,0x01,0x01,    /*  1280x960 (guessed) */
  82         0x01,0x01,0x01,    /*  1152x768 (unknown) */
  83         0x01,0x01,0x01,    /* 1400x1050 */
  84         0x01,0x01,0x01,    /*  1280x768  (guessed) */
  85         0x01,0x01,0x01,    /* 1600x1200 */
  86         0x02,0x02,0x02,
  87         0x02,0x02,0x02,
  88         0x02,0x02,0x02,
  89         0x02,0x02,0x02
  90 };
  91 
  92 static const unsigned char SiS310_LCDDelayCompensation_651301LV[] =             /* M650/651 301LV */
  93 {
  94         0x33,0x33,0x33,    /*   800x600 (guessed) - new: PanelType, not PanelRes ! */
  95         0x33,0x33,0x33,    /*  1024x768 */
  96         0x33,0x33,0x33,    /* 1280x1024 */
  97         0x33,0x33,0x33,    /*   640x480 (unknown) */
  98         0x33,0x33,0x33,    /*  1024x600 (unknown) */
  99         0x33,0x33,0x33,    /*  1152x864 (unknown) */
 100         0x33,0x33,0x33,    /*  1280x960 (guessed) */
 101         0x33,0x33,0x33,    /*  1152x768 (unknown) */
 102         0x33,0x33,0x33,    /* 1400x1050 */
 103         0x33,0x33,0x33,    /*  1280x768  (guessed) */
 104         0x33,0x33,0x33,    /* 1600x1200 */
 105         0x33,0x33,0x33,
 106         0x33,0x33,0x33,
 107         0x33,0x33,0x33,
 108         0x33,0x33,0x33
 109 };
 110 
 111 static const unsigned char SiS310_LCDDelayCompensation_651302LV[] =             /* M650/651 302LV */
 112 {
 113         0x33,0x33,0x33,    /*   800x600 (guessed) */
 114         0x33,0x33,0x33,    /*  1024x768 */
 115         0x33,0x33,0x33,    /* 1280x1024 */
 116         0x33,0x33,0x33,    /*   640x480 (unknown) */
 117         0x33,0x33,0x33,    /*  1024x600 (unknown) */
 118         0x33,0x33,0x33,    /*  1152x864 (unknown) */
 119         0x33,0x33,0x33,    /*  1280x960 (guessed) */
 120         0x33,0x33,0x33,    /*  1152x768 (unknown) */
 121         0x33,0x33,0x33,    /* 1400x1050 */
 122         0x33,0x33,0x33,    /*  1280x768  (guessed) */
 123         0x33,0x33,0x33,    /* 1600x1200 */
 124         0x33,0x33,0x33,
 125         0x33,0x33,0x33,
 126         0x33,0x33,0x33,
 127         0x33,0x33,0x33
 128 };
 129 
 130 static const unsigned char SiS310_LCDDelayCompensation_3xx301B[] =              /* 30xB */
 131 {
 132         0x01,0x01,0x01,    /*   800x600 */
 133         0x0C,0x0C,0x0C,    /*  1024x768 */
 134         0x0C,0x0C,0x0C,    /* 1280x1024 */
 135         0x08,0x08,0x08,    /*   640x480 */
 136         0x0C,0x0C,0x0C,    /*  1024x600 (guessed) */
 137         0x0C,0x0C,0x0C,    /*  1152x864 (guessed) */
 138         0x0C,0x0C,0x0C,    /*  1280x960 (guessed) */
 139         0x0C,0x0C,0x0C,    /*  1152x768 (guessed) */
 140         0x0C,0x0C,0x0C,    /* 1400x1050 (guessed) */
 141         0x0C,0x0C,0x0C,    /*  1280x768 (guessed) */
 142         0x0C,0x0C,0x0C,    /* 1600x1200 (guessed) */
 143         0x02,0x02,0x02,
 144         0x02,0x02,0x02,
 145         0x02,0x02,0x02,
 146         0x02,0x02,0x02
 147 };
 148 
 149 static const unsigned char SiS310_LCDDelayCompensation_3xx301LV[] =             /* 315+30xLV */
 150 {
 151         0x01,0x01,0x01,    /*   800x600 */
 152         0x04,0x04,0x04,    /*  1024x768 (A531/BIOS 1.14.05f: 4 - works with 6 */
 153         0x0C,0x0C,0x0C,    /* 1280x1024 */
 154         0x08,0x08,0x08,    /*   640x480 */
 155         0x0C,0x0C,0x0C,    /*  1024x600 (guessed) */
 156         0x0C,0x0C,0x0C,    /*  1152x864 (guessed) */
 157         0x0C,0x0C,0x0C,    /*  1280x960 (guessed) */
 158         0x0C,0x0C,0x0C,    /*  1152x768 (guessed) */
 159         0x0C,0x0C,0x0C,    /* 1400x1050 (guessed) */
 160         0x0C,0x0C,0x0C,    /*  1280x768 (guessed) */
 161         0x0C,0x0C,0x0C,    /* 1600x1200 (guessed) */
 162         0x02,0x02,0x02,
 163         0x02,0x02,0x02,
 164         0x02,0x02,0x02,
 165         0x02,0x02,0x02
 166 };
 167 
 168 static const unsigned char SiS310_TVDelayCompensation_301[] =           /* 301 */
 169 {
 170         0x02,0x02,    /* NTSC Enhanced, Standard */
 171         0x02,0x02,    /* PAL */
 172         0x08,0x0b     /* HiVision */
 173 };
 174 
 175 static const unsigned char SiS310_TVDelayCompensation_301B[] =          /* 30xB, 30xLV */
 176 {
 177         0x03,0x03,
 178         0x03,0x03,
 179         0x03,0x03
 180 };
 181 
 182 static const unsigned char SiS310_TVDelayCompensation_740301B[] =       /* 740 + 30xB (30xLV?) */
 183 {
 184         0x05,0x05,
 185         0x05,0x05,
 186         0x05,0x05
 187 };
 188 
 189 static const unsigned char SiS310_TVDelayCompensation_651301LV[] =      /* M650, 651, 301LV */
 190 {
 191         0x33,0x33,
 192         0x33,0x33,
 193         0x33,0x33
 194 };
 195 
 196 static const unsigned char SiS310_TVDelayCompensation_651302LV[] =      /* M650, 651, 302LV */
 197 {
 198         0x33,0x33,
 199         0x33,0x33,
 200         0x33,0x33
 201 };
 202 
 203 static const unsigned char SiS_TVDelay661_301[] =                       /* 661, 301 */
 204 {
 205         0x44,0x44,
 206         0x44,0x44,
 207         0x00,0x00,
 208         0x44,0x44,
 209         0x44,0x44,
 210         0x44,0x44
 211 };
 212 
 213 static const unsigned char SiS_TVDelay661_301B[] =                      /* 661, 301B et al */
 214 {
 215         0x44,0x44,
 216         0x44,0x44,
 217         0x00,0x00,
 218         0x44,0x44,
 219         0x44,0x44,
 220         0x44,0x44
 221 };
 222 
 223 static const unsigned char SiS310_TVDelayCompensation_LVDS[] =          /* LVDS */
 224 {
 225         0x0a,0x0a,
 226         0x0a,0x0a,
 227         0x0a,0x0a
 228 };
 229 
 230 static const unsigned char SiS310_TVAntiFlick1[6][2] =
 231 {
 232         {0x4,0x0},
 233         {0x4,0x8},
 234         {0x0,0x0},
 235         {0x0,0x0},
 236         {0x0,0x0},
 237         {0x0,0x0}
 238 };
 239 
 240 static const unsigned char SiS310_TVEdge1[6][2] =
 241 {
 242         {0x0,0x4},
 243         {0x0,0x4},
 244         {0x0,0x0},
 245         {0x0,0x0},
 246         {0x0,0x0},
 247         {0x0,0x0}
 248 };
 249 
 250 static const unsigned char SiS310_TVYFilter1[5][8][4] =
 251 {
 252    {
 253         {0x00,0xf4,0x10,0x38},  /* NTSC */
 254         {0x00,0xf4,0x10,0x38},
 255         {0xeb,0x04,0x25,0x18},
 256         {0xf1,0x04,0x1f,0x18},
 257         {0x00,0xf4,0x10,0x38},
 258         {0xeb,0x04,0x25,0x18},
 259         {0xee,0x0c,0x22,0x08},
 260         {0xeb,0x15,0x25,0xf6}
 261    },
 262    {
 263         {0x00,0xf4,0x10,0x38},  /* PAL */
 264         {0x00,0xf4,0x10,0x38},
 265         {0xf1,0xf7,0x1f,0x32},
 266         {0xf3,0x00,0x1d,0x20},
 267         {0x00,0xf4,0x10,0x38},
 268         {0xf1,0xf7,0x1f,0x32},
 269         {0xf3,0x00,0x1d,0x20},
 270         {0xfc,0xfb,0x14,0x2a}
 271    },
 272    {
 273         {0x00,0x00,0x00,0x00},  /* HiVision */
 274         {0x00,0xf4,0x10,0x38},
 275         {0x00,0xf4,0x10,0x38},
 276         {0xeb,0x04,0x25,0x18},
 277         {0xf7,0x06,0x19,0x14},
 278         {0x00,0xf4,0x10,0x38},
 279         {0xeb,0x04,0x25,0x18},
 280         {0xee,0x0c,0x22,0x08}
 281    },
 282    {
 283         {0x00,0xf4,0x10,0x38},  /* PAL-M */
 284         {0x00,0xf4,0x10,0x38},
 285         {0xeb,0x04,0x10,0x18},
 286         {0xf7,0x06,0x19,0x14},
 287         {0x00,0xf4,0x10,0x38},
 288         {0xeb,0x04,0x25,0x18},
 289         {0xeb,0x04,0x25,0x18},
 290         {0xeb,0x15,0x25,0xf6}
 291    },
 292    {
 293         {0x00,0xf4,0x10,0x38},  /* PAL-N */
 294         {0x00,0xf4,0x10,0x38},
 295         {0xeb,0x04,0x10,0x18},
 296         {0xf7,0x06,0x19,0x14},
 297         {0x00,0xf4,0x10,0x38},
 298         {0xeb,0x04,0x25,0x18},
 299         {0xeb,0x04,0x25,0x18},
 300         {0xeb,0x15,0x25,0xf6}
 301    }
 302 };
 303 
 304 static const unsigned char SiS310_TVYFilter2[5][9][7] =
 305 {
 306    {
 307         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},   /* NTSC */
 308         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 309         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 310         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 311         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 312         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 313         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 314         {0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
 315         {0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
 316    },
 317    {
 318         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},   /* PAL */
 319         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 320         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 321         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 322         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 323         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 324         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 325         {0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
 326         {0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
 327    },
 328    {
 329         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},   /* HiVision */
 330         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
 331         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
 332         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
 333         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
 334         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
 335         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
 336         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22},
 337         {0x00,0x00,0x00,0xF4,0xFF,0x1C,0x22}
 338    },
 339    {
 340         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},   /* PAL-M */
 341         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 342         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 343         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 344         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 345         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 346         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 347         {0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
 348         {0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
 349    },
 350    {
 351         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},   /* PAL-N */
 352         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 353         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 354         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 355         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 356         {0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46},
 357         {0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C},
 358         {0x01,0x01,0xFC,0xF8,0x08,0x26,0x38},
 359         {0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28}
 360    }
 361 };
 362 
 363 static const unsigned char SiS310_TVPhaseIncr1[3][2][4] =
 364 {
 365    {
 366         {0x21,0xed,0xba,0x08},
 367         {0x21,0xed,0xba,0x08}
 368    },
 369    {
 370         {0x2a,0x05,0xe3,0x00},
 371         {0x2a,0x05,0xe3,0x00}
 372    },
 373    {
 374         {0x2a,0x05,0xd3,0x00},
 375         {0x2a,0x05,0xd3,0x00}
 376    }
 377 };
 378 
 379 static const unsigned char SiS310_TVPhaseIncr2[3][2][4] =
 380 {
 381    {
 382         {0x21,0xf0,0x7b,0xd6},
 383         {0x21,0xf0,0x7b,0xd6}
 384    },
 385    {
 386         {0x2a,0x0a,0x41,0xe9},
 387         {0x2a,0x0a,0x41,0xe9}
 388    },
 389    {
 390         {0x2a,0x05,0xd3,0x00},
 391         {0x2a,0x05,0xd3,0x00}
 392    }
 393 };
 394 
 395 /**************************************************************/
 396 /* CUSTOM TIMING DATA --------------------------------------- */
 397 /**************************************************************/
 398 
 399 /* Inventec / Compaq Presario 3045US, 3017 */
 400 
 401 static const struct SiS_LCDData SiS310_ExtCompaq1280x1024Data[] =
 402 {
 403         {  211,  60,1024, 501,1688,1066},
 404         {  211,  60,1024, 508,1688,1066},
 405         {  211,  60,1024, 501,1688,1066},
 406         {  211,  60,1024, 508,1688,1066},
 407         {   32,  15,1696, 501,1696,1066},
 408         {  212,  75,1024, 621,1696,1066},
 409         {    4,   3,1696, 810,1696,1066},
 410         {    1,   1,1696,1066,1696,1066}
 411 };
 412 
 413 /* Asus A2xxxH _2 */
 414 
 415 static const struct SiS_Part2PortTbl SiS310_CRT2Part2_Asus1024x768_3[] =
 416 {
 417         {{0x25,0x13,0xc9,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
 418         {{0x2c,0x13,0x9a,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
 419         {{0x25,0x13,0xc9,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
 420         {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
 421         {{0x38,0x13,0x13,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
 422         {{0x38,0x13,0x16,0x25,0xff,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}},
 423         {{0x36,0x13,0x13,0x25,0xff,0x5a,0x45,0x0a,0x07,0xfa,0x0a,0x24}},
 424         {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
 425         {{0x25,0x13,0xc9,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}}
 426 };
 427 
 428 
 429 
 430 

/* [<][>][^][v][top][bottom][index][help] */