vserver 1.9.5.x5
[linux-2.6.git] / drivers / video / sis / 310vtbl.h
index ffa3945..2c71d04 100644 (file)
@@ -35,7 +35,7 @@
  * * 3) The name of the author may not be used to endorse or promote products
  * *    derived from this software without specific prior written permission.
  * *
- * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESSED OR
+ * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
@@ -145,33 +145,36 @@ static const SiS_ExtStruct  SiS310_EModeIDTable[]=
        {0x29,0x4e1b,0x0000,SIS_RI_1152x864, 0x00,0x00,0x00,0x00,0x43,-1}, /* 1152x864 */
        {0x2a,0x4e3d,0x0000,SIS_RI_1152x864, 0x00,0x00,0x00,0x00,0x43,-1},
        {0x2b,0x4e7f,0x0000,SIS_RI_1152x864, 0x00,0x00,0x00,0x00,0x43,-1},
-       {0x39,0x6a1b,0x0000,SIS_RI_848x480,  0x00,0x00,0x00,0x00,0x45,-1}, /* 848x480 */
-       {0x3b,0x6a3d,0x0000,SIS_RI_848x480,  0x00,0x00,0x00,0x00,0x45,-1},
-       {0x3e,0x6a7f,0x0000,SIS_RI_848x480,  0x00,0x00,0x00,0x00,0x45,-1},
-       {0x3f,0x6a1b,0x0000,SIS_RI_856x480,  0x00,0x00,0x00,0x00,0x47,-1}, /* 856x480 */
-       {0x42,0x6a3d,0x0000,SIS_RI_856x480,  0x00,0x00,0x00,0x00,0x47,-1},
-       {0x45,0x6a7f,0x0000,SIS_RI_856x480,  0x00,0x00,0x00,0x00,0x47,-1},
-       {0x48,0x6a3b,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x49,-1}, /* 1360x768 */
-       {0x4b,0x6a7d,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x49,-1},
-       {0x4e,0x6aff,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x49,-1},
+       {0x39,0x6a1b,0x0000,SIS_RI_848x480,  0x00,0x00,0x00,0x00,0x46,-1}, /* 848x480 */
+       {0x3b,0x6a3d,0x0000,SIS_RI_848x480,  0x00,0x00,0x00,0x00,0x46,-1},
+       {0x3e,0x6a7f,0x0000,SIS_RI_848x480,  0x00,0x00,0x00,0x00,0x46,-1},
+       {0x3f,0x6a1b,0x0000,SIS_RI_856x480,  0x00,0x00,0x00,0x00,0x48,-1}, /* 856x480 */
+       {0x42,0x6a3d,0x0000,SIS_RI_856x480,  0x00,0x00,0x00,0x00,0x48,-1},
+       {0x45,0x6a7f,0x0000,SIS_RI_856x480,  0x00,0x00,0x00,0x00,0x48,-1},
+       {0x48,0x6a3b,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x4a,-1}, /* 1360x768 */
+       {0x4b,0x6a7d,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x4a,-1},
+       {0x4e,0x6aff,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x4a,-1},
        {0x4f,0x9a1f,0x0000,SIS_RI_320x200,  0x00,0x00,0x04,0x04,0x25, 0}, /* 320x200x32 */
        {0x53,0x9a1f,0x0000,SIS_RI_320x240,  0x00,0x00,0x04,0x04,0x26, 2}, /* 320x240x32 */
        {0x54,0xba1f,0x0000,SIS_RI_400x300,  0x00,0x00,0x07,0x07,0x27, 3}, /* 400x300x32 */
-       {0x5f,0x6a1b,0x0000,SIS_RI_768x576,  0x00,0x00,0x06,0x06,0x4a,-1}, /* 768x576 */
-       {0x60,0x6a1d,0x0000,SIS_RI_768x576,  0x00,0x00,0x06,0x06,0x4a,-1},
-       {0x61,0x6a3f,0x0000,SIS_RI_768x576,  0x00,0x00,0x06,0x06,0x4a,-1},
-       {0x14,0x0e3b,0x0000,SIS_RI_1280x800, 0x00,0x00,0x00,0x00,0x4b, 7}, /* 1280x800 */
-       {0x15,0x0e7d,0x0000,SIS_RI_1280x800, 0x00,0x00,0x00,0x00,0x4b, 7},
-       {0x16,0x0eff,0x0000,SIS_RI_1280x800, 0x00,0x00,0x00,0x00,0x4b, 7},
-       {0x17,0x0e3b,0x0000,SIS_RI_1680x1050,0x00,0x00,0x00,0x00,0x4c, 9}, /* 1680x1050 */
-       {0x18,0x0e7d,0x0000,SIS_RI_1680x1050,0x00,0x00,0x00,0x00,0x4c, 9},
-       {0x19,0x0eff,0x0000,SIS_RI_1680x1050,0x00,0x00,0x00,0x00,0x4c, 9},
-       {0x2c,0x267b,0x0000,SIS_RI_1920x1080,0x00,0x00,0x00,0x00,0x4d,-1}, /* 1920x1080(i) */
-       {0x2d,0x26fd,0x0000,SIS_RI_1920x1080,0x00,0x00,0x00,0x00,0x4d,-1},
-       {0x73,0x27ff,0x0000,SIS_RI_1920x1080,0x00,0x00,0x00,0x00,0x4d,-1},
-       {0x1d,0x6a1b,0x0000,SIS_RI_960x540,  0x00,0x00,0x00,0x00,0x4e,-1}, /* 960x540 */
-       {0x1e,0x6a3d,0x0000,SIS_RI_960x540,  0x00,0x00,0x00,0x00,0x4e,-1},
-       {0x1f,0x6a7f,0x0000,SIS_RI_960x540,  0x00,0x00,0x00,0x00,0x4e,-1},
+       {0x5f,0x6a1b,0x0000,SIS_RI_768x576,  0x00,0x00,0x06,0x06,0x4b,-1}, /* 768x576 */
+       {0x60,0x6a1d,0x0000,SIS_RI_768x576,  0x00,0x00,0x06,0x06,0x4b,-1},
+       {0x61,0x6a3f,0x0000,SIS_RI_768x576,  0x00,0x00,0x06,0x06,0x4b,-1},
+       {0x14,0x0e3b,0x0000,SIS_RI_1280x800, 0x00,0x00,0x00,0x00,0x4c, 7}, /* 1280x800 */
+       {0x15,0x0e7d,0x0000,SIS_RI_1280x800, 0x00,0x00,0x00,0x00,0x4c, 7},
+       {0x16,0x0eff,0x0000,SIS_RI_1280x800, 0x00,0x00,0x00,0x00,0x4c, 7},
+       {0x17,0x0e3b,0x0000,SIS_RI_1680x1050,0x00,0x00,0x00,0x00,0x4d, 9}, /* 1680x1050 */
+       {0x18,0x0e7d,0x0000,SIS_RI_1680x1050,0x00,0x00,0x00,0x00,0x4d, 9},
+       {0x19,0x0eff,0x0000,SIS_RI_1680x1050,0x00,0x00,0x00,0x00,0x4d, 9},
+       {0x2c,0x267b,0x0000,SIS_RI_1920x1080,0x00,0x00,0x00,0x00,0x4e,-1}, /* 1920x1080(i) */
+       {0x2d,0x26fd,0x0000,SIS_RI_1920x1080,0x00,0x00,0x00,0x00,0x4e,-1},
+       {0x73,0x27ff,0x0000,SIS_RI_1920x1080,0x00,0x00,0x00,0x00,0x4e,-1},
+       {0x1d,0x6a1b,0x0000,SIS_RI_960x540,  0x00,0x00,0x00,0x00,0x4f,-1}, /* 960x540 */
+       {0x1e,0x6a3d,0x0000,SIS_RI_960x540,  0x00,0x00,0x00,0x00,0x4f,-1},
+       {0x1f,0x6a7f,0x0000,SIS_RI_960x540,  0x00,0x00,0x00,0x00,0x4f,-1},
+       {0x20,0x6a1b,0x0000,SIS_RI_960x600,  0x00,0x00,0x00,0x00,0x50,-1}, /* 960x600 */
+       {0x21,0x6a3d,0x0000,SIS_RI_960x600,  0x00,0x00,0x00,0x00,0x50,-1},
+       {0x22,0x6a7f,0x0000,SIS_RI_960x600,  0x00,0x00,0x00,0x00,0x50,-1},
        {0xff,0x0000,0x0000,0,               0x00,0x00,0x00,0x00,0x00,-1}
 };
 
@@ -244,21 +247,89 @@ static const SiS_Ext2Struct SiS310_RefIndex[]=
         {0x0077,0x42,0x5b,0x08,0x11,0x23,1280, 768, 0x30}, /* 0x40 */    /* 0x5b was 0x12 */
        {0x0127,0x43,0x4d,0x08,0x0b,0x26,1400,1050, 0x30}, /* 0x41 */
        {0x0207,0x4b,0x5a,0x08,0x0b,0x26,1400,1050, 0x30}, /* 0x42 1400x1050-75Hz */
-       {0x0127,0x44,0x19,0x00,0x1a,0x29,1152, 864, 0x30}, /* 0x43 1152x864-75Hz  */
-       {0x0127,0x4a,0x1e,0x00,0x1a,0x29,1152, 864, 0x30}, /* 0x44 1152x864-85Hz  */
-       {0x0087,0x45,0x57,0x00,0x16,0x39, 848, 480, 0x30}, /* 0x45 848x480-38Hzi  */
-       {0xc067,0x46,0x55,0x0b,0x16,0x39, 848, 480, 0x30}, /* 0x46 848x480-60Hz   */
-       {0x0087,0x47,0x57,0x00,0x17,0x3f, 856, 480, 0x30}, /* 0x47 856x480-38Hzi  */
-       {0xc067,0x48,0x57,0x00,0x17,0x3f, 856, 480, 0x30}, /* 0x48 856x480-60Hz   */
-       {0x0067,0x49,0x58,0x0c,0x1b,0x48,1360, 768, 0x30}, /* 0x49 1360x768-60Hz  */
-       {0x006f,0x4d,0x03,0x06,0x15,0x5f, 768, 576, 0x30}, /* 0x4a 768x576-56Hz   */
-       {0x0067,0x4f,0x5c,0x08,0x0d,0x14,1280, 800, 0x30}, /* 0x4b 1280x800-60Hz  */
-       {0x0067,0x50,0x5d,0x0c,0x0e,0x17,1680,1050, 0x30}, /* 0x4c 1680x1050-60Hz */
-       {0x0087,0x51,0x69,0x00,0x00,0x2c,1920,1080, 0x30}, /* 0x4d 1920x1080 60Hzi */
-       {0x0067,0x52,0x6a,0x00,0x1c,0x1d, 960, 540, 0x30}, /* 0x4e 960x540 60Hz */
+       {0x0127,0x54,0x6d,0x00,0x1a,0x29,1152, 864, 0x30}, /* 0x43 1152x864-60Hz  */
+       {0x0127,0x44,0x19,0x00,0x1a,0x29,1152, 864, 0x30}, /* 0x44 1152x864-75Hz  */
+       {0x0127,0x4a,0x1e,0x00,0x1a,0x29,1152, 864, 0x30}, /* 0x45 1152x864-85Hz  */
+       {0x0087,0x45,0x57,0x00,0x16,0x39, 848, 480, 0x30}, /* 0x46 848x480-38Hzi  */
+       {0xc067,0x46,0x55,0x0b,0x16,0x39, 848, 480, 0x30}, /* 0x47 848x480-60Hz   */
+       {0x0087,0x47,0x57,0x00,0x17,0x3f, 856, 480, 0x30}, /* 0x48 856x480-38Hzi  */
+       {0xc067,0x48,0x57,0x00,0x17,0x3f, 856, 480, 0x30}, /* 0x49 856x480-60Hz   */
+       {0x0067,0x49,0x58,0x0c,0x1b,0x48,1360, 768, 0x30}, /* 0x4a 1360x768-60Hz  */
+       {0x006f,0x4d,0x03,0x06,0x15,0x5f, 768, 576, 0x30}, /* 0x4b 768x576-56Hz   */
+       {0x0067,0x4f,0x5c,0x08,0x0d,0x14,1280, 800, 0x30}, /* 0x4c 1280x800-60Hz  */
+       {0x0067,0x50,0x5d,0x0c,0x0e,0x17,1680,1050, 0x30}, /* 0x4d 1680x1050-60Hz */
+       {0x0087,0x51,0x69,0x00,0x00,0x2c,1920,1080, 0x30}, /* 0x4e 1920x1080 60Hzi */
+       {0x0067,0x52,0x6a,0x00,0x1c,0x1d, 960, 540, 0x30}, /* 0x4f 960x540 60Hz */
+       {0x0077,0x53,0x6b,0x0b,0x1d,0x20, 960, 600, 0x30}, /* 0x50 960x600 60Hz */
        {0xffff,0x00,0x00,0x00,0x00,0x00,   0,   0,    0}
 };
 
+#ifdef LINUX_XF86
+static const struct {
+       UCHAR  Ext_ModeID;     /* ModeID in new ROM */
+       UCHAR  Ext_MyModeID;   /* corresponding ModeID in my tables (0 = identical) */
+       USHORT Ext_VESAID;     /* corresponding VESA ID in new ROM */
+} SiS_EModeIDTable661[] = {
+        { 0x6a, 0x00, 0x0102 },
+       { 0x1d, 0x20, 0x0000 },
+       { 0x1e, 0x21, 0x0000 },
+       { 0x1f, 0x22, 0x0000 },
+       { 0x20, 0x29, 0x0000 },
+       { 0x21, 0x2a, 0x0000 },
+       { 0x22, 0x2b, 0x0000 },
+       { 0x23, 0x00, 0x011c },
+       { 0x24, 0x00, 0x011d },
+       { 0x25, 0x00, 0x011e },
+       { 0x26, 0x00, 0x011f },
+       { 0x27, 0x00, 0x0120 },
+       { 0x28, 0x00, 0x0121 },
+       { 0x2a, 0x14, 0x013d },
+       { 0x2b, 0x15, 0x013e },
+       { 0x2c, 0x16, 0x013f },
+       { 0x2e, 0x00, 0x0101 },
+       { 0x2f, 0x00, 0x0100 },
+       { 0x30, 0x00, 0x0103 },
+       { 0x37, 0x00, 0x0104 },
+       { 0x38, 0x00, 0x0105 },
+       { 0x3a, 0x00, 0x0107 },
+       { 0x3c, 0x00, 0x0125 },
+       { 0x3d, 0x00, 0x0126 },
+       { 0x40, 0x00, 0x010d },
+       { 0x41, 0x00, 0x010e },
+       { 0x43, 0x00, 0x0110 },
+       { 0x44, 0x00, 0x0111 },
+       { 0x46, 0x00, 0x0113 },
+       { 0x47, 0x00, 0x0114 },
+       { 0x49, 0x00, 0x0116 },
+       { 0x4a, 0x00, 0x0117 },
+       { 0x4c, 0x00, 0x0119 },
+       { 0x4d, 0x00, 0x011a },
+       { 0x50, 0x00, 0x0127 },
+       { 0x51, 0x00, 0x0128 },
+       { 0x52, 0x00, 0x0129 },
+       { 0x56, 0x00, 0x012a },
+       { 0x57, 0x00, 0x012b },
+       { 0x58, 0x00, 0x012c },
+       { 0x59, 0x00, 0x012d },
+       { 0x5a, 0x17, 0x012e },
+       { 0x5b, 0x18, 0x012f },
+       { 0x5c, 0x19, 0x0130 },
+       { 0x5d, 0x00, 0x0131 },
+       { 0x62, 0x00, 0x0112 },
+       { 0x63, 0x00, 0x0115 },
+       { 0x64, 0x00, 0x0118 },
+       { 0x65, 0x00, 0x011b },
+       { 0x66, 0x00, 0x0132 },
+       { 0x75, 0x00, 0x013a },
+       { 0x78, 0x00, 0x013b },
+       { 0x79, 0x00, 0x013c },
+       { 0x7b, 0x7c, 0x0136 },
+       { 0x7c, 0x7d, 0x0137 },
+       { 0x7d, 0x7e, 0x0138 },
+       { 0xff, 0xff, 0xffff }
+};
+#endif
+
 static const SiS_CRT1TableStruct SiS310_CRT1Table[]=
 {
  {{0x2d,0x27,0x28,0x90,0x2c,0x80,0xbf,0x1f,
@@ -524,7 +595,13 @@ static const SiS_CRT1TableStruct SiS310_CRT1Table[]=
    0x61}},  /* 0x51 */
  {{0x85,0x77,0x77,0x89,0x7d,0x01,0x31,0xf0, /* 960x540-60 */
    0x1e,0x84,0x1b,0x1c,0x32,0x00,0x00,0x02,
-   0x41}}   /* 0x52 */
+   0x41}},  /* 0x52 */
+ {{0x87,0x77,0x77,0x8b,0x81,0x0b,0x68,0xf0, /* 960x600-60 */
+   0x5a,0x80,0x57,0x57,0x69,0x00,0x00,0x02,
+   0x01}},  /* 0x53 */
+ {{0xcd,0x8f,0x8f,0x91,0x9b,0x1b,0x7a,0xff, /* 1152x864-60 */
+   0x64,0x8c,0x5f,0x62,0x7b,0x10,0x00,0x07,
+   0x41}}   /* 0x54 */
 };
 
 static const SiS_MCLKDataStruct SiS310_MCLKData_0_315[] =
@@ -587,6 +664,30 @@ static const SiS_MCLKDataStruct SiS310_MCLKData_0_760[] =
        { 0x37,0x21,0x82,200}
 };
 
+static const SiS_MCLKDataStruct SiS310_MCLKData_0_761[] =
+{
+       { 0x37,0x22,0x82,133},  /* Preliminary */
+       { 0x5c,0x23,0x82,166},
+       { 0x65,0x23,0x82,183},
+       { 0x7c,0x08,0x82,200},
+       { 0x29,0x21,0x82,150},
+       { 0x5c,0x23,0x82,166},
+       { 0x65,0x23,0x82,183},
+       { 0x37,0x21,0x82,200}
+};
+
+static const SiS_MCLKDataStruct SiS310_MCLKData_0_340[] =
+{
+       { 0x79,0x06,0x01,250},
+       { 0x7c,0x08,0x01,200},
+       { 0x7c,0x08,0x80,200},
+       { 0x79,0x06,0x80,250},
+       { 0x29,0x01,0x81,300},
+       { 0x29,0x01,0x81,300},
+       { 0x29,0x01,0x81,300},
+       { 0x29,0x01,0x81,300}
+};
+
 static const SiS_MCLKDataStruct SiS310_MCLKData_1[] = /* ECLK */
 {
         { 0x29,0x21,0x82,150},
@@ -599,6 +700,18 @@ static const SiS_MCLKDataStruct SiS310_MCLKData_1[] = /* ECLK */
        { 0x37,0x22,0x82,133}
 };
 
+static const SiS_MCLKDataStruct SiS310_MCLKData_1_340[] =
+{
+       { 0x7c,0x08,0x01,200},
+       { 0x7c,0x08,0x01,200},
+       { 0x7c,0x08,0x80,200},
+       { 0x79,0x06,0x80,250},
+       { 0x29,0x01,0x81,300},
+       { 0x29,0x01,0x81,300},
+       { 0x29,0x01,0x81,300},
+       { 0x29,0x01,0x81,300}
+};
+
 static SiS_VCLKDataStruct SiS310_VCLKData[]=
 {
        { 0x1b,0xe1, 25}, /* 0x00 */
@@ -707,7 +820,10 @@ static SiS_VCLKDataStruct SiS310_VCLKData[]=
        { 0x76,0xe7, 27}, /* 0x67 720x480@60 */
        { 0x5f,0xc6, 33}, /* 0x68 720/768x576@60 */
        { 0x52,0x27, 75}, /* 0x69 1920x1080i 60Hz interlaced */
-       { 0x7c,0x6b, 38}  /* 0x6a 960x540@60 */
+       { 0x7c,0x6b, 38}, /* 0x6a 960x540@60 */
+       { 0xe3,0x56, 41}, /* 0x6b 960x600@60 */
+       { 0x45,0x25, 83}, /* 0x6c 1280x800 */
+       { 0x70,0x28, 90}  /* 0x6d 1152x864@60 */
 };
 
 static SiS_VBVCLKDataStruct SiS310_VBVCLKData[]=
@@ -809,22 +925,25 @@ static SiS_VBVCLKDataStruct SiS310_VBVCLKData[]=
        { 0x30,0x23, 88}, /* 0x58 1360x768-62 (is 60Hz!) TEMP, UNUSED */
        { 0x52,0x07,149}, /* 0x59 1280x960-85  */
        { 0x56,0x07,156}, /* 0x5a 1400x1050-75 */
-       { 0x70,0x29, 81}, /* 0x5b 1280x768 LCD */
-       { 0x45,0x25, 83}, /* 0x5c 1280x800 LCD - (was 0x9c,0x62, 69 - wrong?) */
+       { 0x70,0x29, 81}, /* 0x5b 1280x768 LCD (TMDS) */
+       { 0xce,0x1e, 73}, /* 0x5c 1280x800_2 LCD (SiS LVDS) - (CRT1: 45 25 83) */
        { 0xbe,0x44,121}, /* 0x5d 1680x1050 LCD */
        { 0x70,0x24,162}, /* 0x5e 1600x1200 LCD */
-       { 0x52,0x27, 75}, /* 0x5f 1280x720 LCD TMDS + HDTV (correct) */
-       { 0x63,0x46, 68}, /* 0x60 1280x768_2 */
-       { 0x31,0x42, 79}, /* 0x61 1280x768_3 - temp */
+       { 0x52,0x27, 75}, /* 0x5f 1280x720 (TMDS + HDTV) (correct) */
+       { 0xc8,0x48, 77}, /* 0x60 1280x768_2 (SiS LVDS) */
+       { 0x31,0x42, 79}, /* 0x61 1280x768_3 (SiS LVDS) - temp */
        {    0,   0,  0}, /* 0x62 - custom (will be filled out at run-time) */
-       { 0x5a,0x64, 65}, /* 0x63 1280x720 (LCD LVDS) */
+       { 0x9c,0x62, 69}, /* 0x63 1280x720 (SiS LVDS) */
        { 0x70,0x28, 90}, /* 0x64 1152x864@60 */
        { 0x41,0xc4, 32}, /* 0x65 848x480@60 */
        { 0x5c,0xc6, 32}, /* 0x66 856x480@60 */
        { 0x76,0xe7, 27}, /* 0x67 720x480@60 */
        { 0x5f,0xc6, 33}, /* 0x68 720/768x576@60 */
        { 0x52,0x27, 75}, /* 0x69 1920x1080i 60Hz interlaced (UNUSED) */
-       { 0x7c,0x6b, 38}  /* 0x6a 960x540@60 */
+       { 0x7c,0x6b, 38}, /* 0x6a 960x540@60 */
+       { 0xe3,0x56, 41}, /* 0x6b 960x600@60 */
+       { 0x9c,0x62, 69}, /* 0x6c 1280x800 (SiS TMDS) (special) */
+       { 0x70,0x28, 90}  /* 0x6d 1152x864@60 */
 };
 
 static const DRAM4Type SiS310_SR15[8] = {
@@ -838,7 +957,7 @@ static const DRAM4Type SiS310_SR15[8] = {
        {0x00,0xa5,0xfb,0xf6}
 };
 
-#ifndef LINUX_XF86
+#ifdef LINUX_KERNEL
 
 static UCHAR SiS310_SR07 = 0x18;