linux/drivers/staging/xgifb/vb_table.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _VB_TABLE_
   3#define _VB_TABLE_
   4static const struct SiS_MCLKData XGI340New_MCLKData[] = {
   5        {0x16, 0x01, 0x01, 166},
   6        {0x19, 0x02, 0x01, 124},
   7        {0x7C, 0x08, 0x01, 200},
   8};
   9
  10static const struct SiS_MCLKData XGI27New_MCLKData[] = {
  11        {0x5c, 0x23, 0x01, 166},
  12        {0x19, 0x02, 0x01, 124},
  13        {0x7C, 0x08, 0x80, 200},
  14};
  15
  16const struct XGI_ECLKDataStruct XGI340_ECLKData[] = {
  17        {0x5c, 0x23, 0x01, 166},
  18        {0x55, 0x84, 0x01, 123},
  19        {0x7C, 0x08, 0x01, 200},
  20};
  21
  22static const unsigned char XG27_SR18[3] = {
  23        0x32, 0x32, 0x42 /* SR18 */
  24};
  25
  26static const unsigned char XGI340_SR18[3] = {
  27        0x31, 0x42, 0x42 /* SR18 */
  28};
  29
  30static const unsigned char XGI340_cr41[24][3] = {
  31        {0x20, 0x50, 0x60}, /* 0 CR41 */
  32        {0xc4, 0x40, 0x84}, /* 1 CR8A */
  33        {0xc4, 0x40, 0x84}, /* 2 CR8B */
  34        {0xb5, 0xa4, 0xa4},
  35        {0xf0, 0xf0, 0xf0},
  36        {0x90, 0x90, 0x24}, /* 5 CR68 */
  37        {0x77, 0x77, 0x44}, /* 6 CR69 */
  38        {0x77, 0x77, 0x44}, /* 7 CR6A */
  39        {0xff, 0xff, 0xff}, /* 8 CR6D */
  40        {0x55, 0x55, 0x55}, /* 9 CR80 */
  41        {0x00, 0x00, 0x00}, /* 10 CR81 */
  42        {0x88, 0xa8, 0x48}, /* 11 CR82 */
  43        {0x44, 0x44, 0x77}, /* 12 CR85 */
  44        {0x48, 0x48, 0x88}, /* 13 CR86 */
  45        {0x54, 0x54, 0x44}, /* 14 CR90 */
  46        {0x54, 0x54, 0x44}, /* 15 CR91 */
  47        {0x0a, 0x0a, 0x07}, /* 16 CR92 */
  48        {0x44, 0x44, 0x44}, /* 17 CR93 */
  49        {0x10, 0x10, 0x0A}, /* 18 CR94 */
  50        {0x11, 0x11, 0x0a}, /* 19 CR95 */
  51        {0x05, 0x05, 0x05}, /* 20 CR96 */
  52        {0xf0, 0xf0, 0xf0}, /* 21 CRC3 */
  53        {0x05, 0x00, 0x02}, /* 22 CRC4 */
  54        {0x00, 0x00, 0x00}  /* 23 CRC5 */
  55};
  56
  57static const unsigned char XGI27_cr41[24][3] = {
  58        {0x20, 0x40, 0x60}, /* 0 CR41 */
  59        {0xC4, 0x40, 0x84}, /* 1 CR8A */
  60        {0xC4, 0x40, 0x84}, /* 2 CR8B */
  61        {0xB3, 0x13, 0xa4}, /* 3 CR40[7],
  62                             *   CR99[2:0],
  63                             *   CR45[3:0]
  64                             */
  65        {0xf0, 0xf5, 0xf0}, /* 4 CR59 */
  66        {0x90, 0x90, 0x24}, /* 5 CR68 */
  67        {0x77, 0x67, 0x44}, /* 6 CR69 */
  68        {0x77, 0x77, 0x44}, /* 7 CR6A */
  69        {0xff, 0xff, 0xff}, /* 8 CR6D */
  70        {0x55, 0x55, 0x55}, /* 9 CR80 */
  71        {0x00, 0x00, 0x00}, /* 10 CR81 */
  72        {0x88, 0xcc, 0x48}, /* 11 CR82 */
  73        {0x44, 0x88, 0x77}, /* 12 CR85 */
  74        {0x48, 0x88, 0x88}, /* 13 CR86 */
  75        {0x54, 0x32, 0x44}, /* 14 CR90 */
  76        {0x54, 0x33, 0x44}, /* 15 CR91 */
  77        {0x0a, 0x07, 0x07}, /* 16 CR92 */
  78        {0x44, 0x63, 0x44}, /* 17 CR93 */
  79        {0x10, 0x14, 0x0A}, /* 18 CR94 */
  80        {0x11, 0x0B, 0x0C}, /* 19 CR95 */
  81        {0x05, 0x22, 0x05}, /* 20 CR96 */
  82        {0xf0, 0xf0, 0x00}, /* 21 CRC3 */
  83        {0x05, 0x00, 0x02}, /* 22 CRC4 */
  84        {0x00, 0x00, 0x00}  /* 23 CRC5 */
  85};
  86
  87/* CR47,CR48,CR49,CR4A,CR4B,CR4C,CR70,CR71,CR74,CR75,CR76,CR77 */
  88const unsigned char XGI340_AGPReg[12] = {
  89        0x28, 0x23, 0x00, 0x20, 0x00, 0x20,
  90        0x00, 0x05, 0xd0, 0x10, 0x10, 0x00
  91};
  92
  93const struct XGI_ExtStruct XGI330_EModeIDTable[] = {
  94        {0x2e, 0x0a1b, 0x0306, 0x06, 0x05, 0x06},
  95        {0x2f, 0x0a1b, 0x0305, 0x05, 0x05, 0x05},
  96        {0x30, 0x2a1b, 0x0407, 0x07, 0x07, 0x0e},
  97        {0x31, 0x0a1b, 0x030d, 0x0d, 0x06, 0x3d},
  98        {0x32, 0x0a1b, 0x0a0e, 0x0e, 0x06, 0x3e},
  99        {0x33, 0x0a1d, 0x0a0d, 0x0d, 0x06, 0x3d},
 100        {0x34, 0x2a1d, 0x0a0e, 0x0e, 0x06, 0x3e},
 101        {0x35, 0x0a1f, 0x0a0d, 0x0d, 0x06, 0x3d},
 102        {0x36, 0x2a1f, 0x0a0e, 0x0e, 0x06, 0x3e},
 103        {0x38, 0x0a1b, 0x0508, 0x08, 0x00, 0x16},
 104        {0x3a, 0x0e3b, 0x0609, 0x09, 0x00, 0x1e},
 105        {0x3c, 0x0e3b, 0x070a, 0x0a, 0x00, 0x22}, /* mode 1600x1200
 106                                                   * add CRT2MODE [2003/10/07]
 107                                                   */
 108        {0x3d, 0x0e7d, 0x070a, 0x0a, 0x00, 0x22}, /* mode 1600x1200
 109                                                   * add CRT2MODE
 110                                                   */
 111        {0x40, 0x9a1c, 0x0000, 0x00, 0x04, 0x00},
 112        {0x41, 0x9a1d, 0x0000, 0x00, 0x04, 0x00},
 113        {0x43, 0x0a1c, 0x0306, 0x06, 0x05, 0x06},
 114        {0x44, 0x0a1d, 0x0306, 0x06, 0x05, 0x06},
 115        {0x46, 0x2a1c, 0x0407, 0x07, 0x07, 0x0e},
 116        {0x47, 0x2a1d, 0x0407, 0x07, 0x07, 0x0e},
 117        {0x49, 0x0a3c, 0x0508, 0x08, 0x00, 0x16},
 118        {0x4a, 0x0a3d, 0x0508, 0x08, 0x00, 0x16},
 119        {0x4c, 0x0e7c, 0x0609, 0x09, 0x00, 0x1e},
 120        {0x4d, 0x0e7d, 0x0609, 0x09, 0x00, 0x1e},
 121        {0x50, 0x9a1b, 0x0001, 0x01, 0x04, 0x02},
 122        {0x51, 0xba1b, 0x0103, 0x03, 0x07, 0x03},
 123        {0x52, 0x9a1b, 0x0204, 0x04, 0x00, 0x04},
 124        {0x56, 0x9a1d, 0x0001, 0x01, 0x04, 0x02},
 125        {0x57, 0xba1d, 0x0103, 0x03, 0x07, 0x03},
 126        {0x58, 0x9a1d, 0x0204, 0x04, 0x00, 0x04},
 127        {0x59, 0x9a1b, 0x0000, 0x00, 0x04, 0x00},
 128        {0x5A, 0x021b, 0x0014, 0x01, 0x04, 0x3f},
 129        {0x5B, 0x0a1d, 0x0014, 0x01, 0x04, 0x3f},
 130        {0x5d, 0x0a1d, 0x0305, 0x05, 0x07, 0x05},
 131        {0x62, 0x0a3f, 0x0306, 0x06, 0x05, 0x06},
 132        {0x63, 0x2a3f, 0x0407, 0x07, 0x07, 0x0e},
 133        {0x64, 0x0a7f, 0x0508, 0x08, 0x00, 0x16},
 134        {0x65, 0x0eff, 0x0609, 0x09, 0x00, 0x1e},
 135        {0x66, 0x0eff, 0x070a, 0x0a, 0x00, 0x22}, /* mode 1600x1200
 136                                                   * add CRT2MODE
 137                                                   */
 138        {0x68, 0x067b, 0x080b, 0x0b, 0x00, 0x29},
 139        {0x69, 0x06fd, 0x080b, 0x0b, 0x00, 0x29},
 140        {0x6b, 0x07ff, 0x080b, 0x0b, 0x00, 0x29},
 141        {0x6c, 0x067b, 0x090c, 0x0c, 0x00, 0x2f},
 142        {0x6d, 0x06fd, 0x090c, 0x0c, 0x00, 0x2f},
 143        {0x6e, 0x07ff, 0x090c, 0x0c, 0x00, 0x2f},
 144        {0x70, 0x2a1b, 0x0410, 0x10, 0x07, 0x34},
 145        {0x71, 0x0a1b, 0x0511, 0x11, 0x00, 0x37},
 146        {0x74, 0x0a1d, 0x0511, 0x11, 0x00, 0x37},
 147        {0x75, 0x0a3d, 0x0612, 0x12, 0x00, 0x3a},
 148        {0x76, 0x2a1f, 0x0410, 0x10, 0x07, 0x34},
 149        {0x77, 0x0a1f, 0x0511, 0x11, 0x00, 0x37},
 150        {0x78, 0x0a3f, 0x0612, 0x12, 0x00, 0x3a},
 151        {0x79, 0x0a3b, 0x0612, 0x12, 0x00, 0x3a},
 152        {0x7a, 0x2a1d, 0x0410, 0x10, 0x07, 0x34},
 153        {0x7b, 0x0e3b, 0x060f, 0x0f, 0x00, 0x1d},
 154        {0x7c, 0x0e7d, 0x060f, 0x0f, 0x00, 0x1d},
 155        {0x7d, 0x0eff, 0x060f, 0x0f, 0x00, 0x1d},
 156        {0x20, 0x0e3b, 0x0D16, 0x16, 0x00, 0x43},
 157        {0x21, 0x0e7d, 0x0D16, 0x16, 0x00, 0x43},
 158        {0x22, 0x0eff, 0x0D16, 0x16, 0x00, 0x43},
 159        {0x23, 0x0e3b, 0x0614, 0x14, 0x00, 0x41},
 160        {0x24, 0x0e7d, 0x0614, 0x14, 0x00, 0x41},
 161        {0x25, 0x0eff, 0x0614, 0x14, 0x00, 0x41},
 162        {0x26, 0x063b, 0x0c15, 0x15, 0x00, 0x42},
 163        {0x27, 0x067d, 0x0c15, 0x15, 0x00, 0x42},
 164        {0x28, 0x06ff, 0x0c15, 0x15, 0x00, 0x42},
 165        {0xff, 0x0000, 0x0000, 0x00, 0x00, 0x00}
 166};
 167
 168static const struct SiS_StandTable_S XGI330_StandTable = {
 169/* ExtVGATable */
 170        0x00, 0x00, 0x00, 0x0000,
 171        {0x21, 0x0f, 0x00, 0x0e}, /* 0x21 = 0x01 | (0x20 = screen off) */
 172         0x23,
 173        {0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
 174         0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 175         0xea, 0x8c, 0xdf, 0x28, 0x40, 0xe7, 0x04, 0xa3,
 176         0xff},
 177        {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
 178         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
 179         0x01, 0x00, 0x00, 0x00},
 180        {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f,
 181         0xff}
 182};
 183
 184static const struct XGI_XG21CRT1Struct XGI_UpdateCRT1Table[] = {
 185        {0x01, 0x27, 0x91, 0x8f, 0xc0}, /* 00 */
 186        {0x03, 0x4f, 0x83, 0x8f, 0xc0}, /* 01 */
 187        {0x05, 0x27, 0x91, 0x8f, 0xc0}, /* 02 */
 188        {0x06, 0x4f, 0x83, 0x8f, 0xc0}, /* 03 */
 189        {0x07, 0x4f, 0x83, 0x8f, 0xc0}, /* 04 */
 190        {0x0d, 0x27, 0x91, 0x8f, 0xc0}, /* 05 */
 191        {0x0e, 0x4f, 0x83, 0x8f, 0xc0}, /* 06 */
 192        {0x0f, 0x4f, 0x83, 0x5d, 0xc0}, /* 07 */
 193        {0x10, 0x4f, 0x83, 0x5d, 0xc0}, /* 08 */
 194        {0x11, 0x4f, 0x83, 0xdf, 0x0c}, /* 09 */
 195        {0x12, 0x4f, 0x83, 0xdf, 0x0c}, /* 10 */
 196        {0x13, 0x4f, 0x83, 0x8f, 0xc0}, /* 11 */
 197        {0x2e, 0x4f, 0x83, 0xdf, 0x0c}, /* 12 */
 198        {0x2e, 0x4f, 0x87, 0xdf, 0xc0}, /* 13 */
 199        {0x2f, 0x4f, 0x83, 0x8f, 0xc0}, /* 14 */
 200        {0x50, 0x27, 0x91, 0xdf, 0x0c}, /* 15 */
 201        {0x59, 0x27, 0x91, 0x8f, 0xc0}  /* 16 */
 202};
 203
 204const struct XGI_CRT1TableStruct XGI_CRT1Table[] = {
 205        { {0x2d, 0x28, 0x90, 0x2c, 0x90, 0x00, 0x04, 0x00,
 206          0xbf, 0x1f, 0x9c, 0x8e, 0x96, 0xb9, 0x30} }, /* 0x0 */
 207        { {0x2d, 0x28, 0x90, 0x2c, 0x90, 0x00, 0x04, 0x00,
 208          0x0b, 0x3e, 0xe9, 0x8b, 0xe7, 0x04, 0x00} }, /* 0x1 */
 209        { {0x3D, 0x31, 0x81, 0x37, 0x1F, 0x00, 0x05, 0x00,
 210          0x72, 0xF0, 0x58, 0x8C, 0x57, 0x73, 0xA0} }, /* 0x2 */
 211        { {0x4F, 0x3F, 0x93, 0x45, 0x0D, 0x00, 0x01, 0x00,
 212          0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x3 */
 213        { {0x5F, 0x50, 0x82, 0x55, 0x81, 0x00, 0x05, 0x00,
 214          0xBF, 0x1F, 0x9C, 0x8E, 0x96, 0xB9, 0x30} }, /* 0x4 */
 215        { {0x5F, 0x50, 0x82, 0x55, 0x81, 0x00, 0x05, 0x00,
 216          0x0B, 0x3E, 0xE9, 0x8B, 0xE7, 0x04, 0x00} }, /* 0x5 */
 217        { {0x63, 0x50, 0x86, 0x56, 0x9B, 0x00, 0x01, 0x00,
 218          0x06, 0x3E, 0xE8, 0x8B, 0xE7, 0xFF, 0x10} }, /* 0x6 */
 219        { {0x64, 0x4F, 0x88, 0x55, 0x9D, 0x00, 0x01, 0x00,
 220          0xF2, 0x1F, 0xE0, 0x83, 0xDF, 0xF3, 0x10} }, /* 0x7 */
 221        { {0x63, 0x4F, 0x87, 0x5A, 0x81, 0x00, 0x05, 0x00,
 222          0xFB, 0x1F, 0xE0, 0x83, 0xDF, 0xFC, 0x10} }, /* 0x8 */
 223        { {0x65, 0x4F, 0x89, 0x58, 0x80, 0x00, 0x05, 0x60,
 224          0xFB, 0x1F, 0xE0, 0x83, 0xDF, 0xFC, 0x80} }, /* 0x9 */
 225        { {0x65, 0x4F, 0x89, 0x58, 0x80, 0x00, 0x05, 0x60,
 226          0x01, 0x3E, 0xE0, 0x83, 0xDF, 0x02, 0x80} }, /* 0xa */
 227        { {0x67, 0x4F, 0x8B, 0x58, 0x81, 0x00, 0x05, 0x60,
 228          0x0D, 0x3E, 0xE0, 0x83, 0xDF, 0x0E, 0x90} }, /* 0xb */
 229        { {0x65, 0x4F, 0x89, 0x57, 0x9F, 0x00, 0x01, 0x00,
 230          0xFB, 0x1F, 0xE6, 0x8A, 0xDF, 0xFC, 0x10} }, /* 0xc */
 231        /* 0D (800x600,56Hz) */
 232        { {0x7B, 0x63, 0x9F, 0x6A, 0x93, 0x00, 0x05, 0x00,
 233        /* (VCLK 36.0MHz) */
 234          0x6F, 0xF0, 0x58, 0x8A, 0x57, 0x70, 0xA0} },
 235        /* 0E (800x600,60Hz) */
 236        { {0x7F, 0x63, 0x83, 0x6C, 0x1C, 0x00, 0x06, 0x00,
 237        /* (VCLK 40.0MHz) */
 238          0x72, 0xF0, 0x58, 0x8C, 0x57, 0x73, 0xA0} },
 239        /* 0F (800x600,72Hz) */
 240        { {0x7D, 0x63, 0x81, 0x6E, 0x1D, 0x00, 0x06, 0x00,
 241        /* (VCLK 50.0MHz) */
 242          0x98, 0xF0, 0x7C, 0x82, 0x57, 0x99, 0x80} },
 243        /* 10 (800x600,75Hz) */
 244        { {0x7F, 0x63, 0x83, 0x69, 0x13, 0x00, 0x06, 0x00,
 245        /* (VCLK 49.5MHz) */
 246          0x6F, 0xF0, 0x58, 0x8B, 0x57, 0x70, 0xA0} },
 247        /* 11 (800x600,85Hz) */
 248        { {0x7E, 0x63, 0x82, 0x6B, 0x13, 0x00, 0x06, 0x00,
 249        /* (VCLK 56.25MHz) */
 250          0x75, 0xF0, 0x58, 0x8B, 0x57, 0x76, 0xA0} },
 251        /* 12 (800x600,100Hz) */
 252        { {0x81, 0x63, 0x85, 0x6D, 0x18, 0x00, 0x06, 0x60,
 253        /* (VCLK 75.8MHz) */
 254          0x7A, 0xF0, 0x58, 0x8B, 0x57, 0x7B, 0xA0} },
 255        /* 13 (800x600,120Hz) */
 256        { {0x83, 0x63, 0x87, 0x6E, 0x19, 0x00, 0x06, 0x60,
 257        /* (VCLK 79.411MHz) */
 258          0x81, 0xF0, 0x58, 0x8B, 0x57, 0x82, 0xA0} },
 259        /* 14 (800x600,160Hz) */
 260        { {0x85, 0x63, 0x89, 0x6F, 0x1A, 0x00, 0x06, 0x60,
 261        /* (VCLK 105.822MHz) */
 262          0x91, 0xF0, 0x58, 0x8B, 0x57, 0x92, 0xA0} },
 263        { {0x99, 0x7F, 0x9D, 0x84, 0x1A, 0x00, 0x02, 0x00,
 264          0x96, 0x1F, 0x7F, 0x83, 0x7F, 0x97, 0x10} }, /* 0x15 */
 265        { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00,
 266          0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x16 */
 267        { {0xA1, 0x7F, 0x85, 0x86, 0x97, 0x00, 0x02, 0x00,
 268          0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x17 */
 269        { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00,
 270          0x1E, 0xF5, 0x00, 0x83, 0xFF, 0x1F, 0x90} }, /* 0x18 */
 271        { {0xA7, 0x7F, 0x8B, 0x89, 0x95, 0x00, 0x02, 0x00,
 272          0x26, 0xF5, 0x00, 0x83, 0xFF, 0x27, 0x90} }, /* 0x19 */
 273        { {0xA9, 0x7F, 0x8D, 0x8C, 0x9A, 0x00, 0x02, 0x62,
 274          0x2C, 0xF5, 0x00, 0x83, 0xFF, 0x2D, 0x14} }, /* 0x1a */
 275        { {0xAB, 0x7F, 0x8F, 0x8D, 0x9B, 0x00, 0x02, 0x62,
 276          0x35, 0xF5, 0x00, 0x83, 0xFF, 0x36, 0x14} }, /* 0x1b */
 277        { {0xCF, 0x9F, 0x93, 0xB2, 0x01, 0x00, 0x03, 0x00,
 278          0x14, 0xBA, 0x00, 0x83, 0xFF, 0x15, 0x00} }, /* 0x1c */
 279        { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
 280          0x28, 0x5A, 0x00, 0x83, 0xFF, 0x29, 0x89} }, /* 0x1d */
 281        { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00,
 282          0x28, 0x5A, 0x00, 0x83, 0xFF, 0x29, 0x89} }, /* 0x1e */
 283        { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x00,
 284          0x2E, 0x5A, 0x00, 0x83, 0xFF, 0x2F, 0x89} }, /* 0x1f */
 285        { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
 286          0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x20 */
 287        { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
 288          0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x21 */
 289        { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
 290          0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x22 */
 291        { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
 292          0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x23 */
 293        { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
 294          0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x24 */
 295        { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
 296          0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x25 */
 297        { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
 298          0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x26 */
 299        { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
 300          0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x27 */
 301        { {0x43, 0xEF, 0x87, 0x06, 0x00, 0x41, 0x05, 0x62,
 302          0xD4, 0x1F, 0xA0, 0x83, 0x9F, 0xD5, 0x9F} }, /* 0x28 */
 303        { {0x45, 0xEF, 0x89, 0x07, 0x01, 0x41, 0x05, 0x62,
 304          0xD9, 0x1F, 0xA0, 0x83, 0x9F, 0xDA, 0x9F} }, /* 0x29 */
 305        { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
 306          0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2a */
 307        { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
 308          0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2b */
 309        { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
 310          0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2c */
 311        { {0x59, 0xFF, 0x9D, 0x17, 0x13, 0x41, 0x05, 0x44,
 312          0x33, 0xBA, 0x00, 0x83, 0xFF, 0x34, 0x0F} }, /* 0x2d */
 313        { {0x5B, 0xFF, 0x9F, 0x18, 0x14, 0x41, 0x05, 0x44,
 314          0x38, 0xBA, 0x00, 0x83, 0xFF, 0x39, 0x0F} }, /* 0x2e */
 315        { {0x5B, 0xFF, 0x9F, 0x18, 0x14, 0x41, 0x05, 0x44,
 316          0x3D, 0xBA, 0x00, 0x83, 0xFF, 0x3E, 0x0F} }, /* 0x2f */
 317        { {0x5D, 0xFF, 0x81, 0x19, 0x95, 0x41, 0x05, 0x44,
 318          0x41, 0xBA, 0x00, 0x84, 0xFF, 0x42, 0x0F} }, /* 0x30 */
 319        { {0x55, 0xFF, 0x99, 0x0D, 0x0C, 0x41, 0x05, 0x00,
 320          0x3E, 0xBA, 0x00, 0x84, 0xFF, 0x3F, 0x0F} }, /* 0x31 */
 321        { {0x7F, 0x63, 0x83, 0x6C, 0x1C, 0x00, 0x06, 0x00,
 322          0x72, 0xBA, 0x27, 0x8B, 0xDF, 0x73, 0x80} }, /* 0x32 */
 323        { {0x7F, 0x63, 0x83, 0x69, 0x13, 0x00, 0x06, 0x00,
 324          0x6F, 0xBA, 0x26, 0x89, 0xDF, 0x6F, 0x80} }, /* 0x33 */
 325        { {0x7F, 0x63, 0x82, 0x6B, 0x13, 0x00, 0x06, 0x00,
 326          0x75, 0xBA, 0x29, 0x8C, 0xDF, 0x75, 0x80} }, /* 0x34 */
 327        { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00,
 328          0x24, 0xF1, 0xAF, 0x85, 0x3F, 0x25, 0xB0} }, /* 0x35 */
 329        { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00,
 330          0x1E, 0xF1, 0xAD, 0x81, 0x3F, 0x1F, 0xB0} }, /* 0x36 */
 331        { {0xA7, 0x7F, 0x88, 0x89, 0x15, 0x00, 0x02, 0x00,
 332          0x26, 0xF1, 0xB1, 0x85, 0x3F, 0x27, 0xB0} }, /* 0x37 */
 333        { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
 334          0x28, 0xC4, 0x7A, 0x8E, 0xCF, 0x29, 0xA1} }, /* 0x38 */
 335        { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00,
 336          0x28, 0xD4, 0x7A, 0x8E, 0xCF, 0x29, 0xA1} }, /* 0x39 */
 337        { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x00,
 338          0x2E, 0xD4, 0x7D, 0x81, 0xCF, 0x2F, 0xA1} }, /* 0x3a */
 339        { {0xDC, 0x9F, 0x00, 0xAB, 0x19, 0x00, 0x07, 0x00,
 340          0xE6, 0xEF, 0xC0, 0xC3, 0xBF, 0xE7, 0x90} }, /* 0x3b */
 341        { {0x6B, 0x59, 0x8F, 0x5E, 0x8C, 0x00, 0x05, 0x00,
 342          0x0B, 0x3E, 0xE9, 0x8B, 0xE7, 0x04, 0x00} }, /* 0x3c */
 343        { {0x7B, 0x63, 0x9F, 0x6A, 0x93, 0x00, 0x05, 0x00,
 344          0x6F, 0xF0, 0x58, 0x8A, 0x57, 0x70, 0xA0} }, /* 0x3d */
 345        { {0x86, 0x6A, 0x8a, 0x74, 0x06, 0x00, 0x02, 0x00,
 346          0x8c, 0x15, 0x4f, 0x83, 0xef, 0x8d, 0x30} }, /* 0x3e */
 347        { {0x81, 0x6A, 0x85, 0x70, 0x00, 0x00, 0x02, 0x00,
 348          0x0f, 0x3e, 0xeb, 0x8e, 0xdf, 0x10, 0x00} }, /* 0x3f */
 349        { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
 350          0x20, 0xF5, 0x03, 0x88, 0xFF, 0x21, 0x90} }, /* 0x40 */
 351        { {0xE6, 0xAE, 0x8A, 0xBD, 0x90, 0x00, 0x03, 0x00,
 352          0x3D, 0x10, 0x1A, 0x8D, 0x19, 0x3E, 0x2F} }, /* 0x41 */
 353        { {0xB9, 0x8F, 0x9D, 0x9B, 0x8A, 0x00, 0x06, 0x00,
 354          0x7D, 0xFF, 0x60, 0x83, 0x5F, 0x7E, 0x90} }, /* 0x42 */
 355        { {0xC3, 0x8F, 0x87, 0x9B, 0x0B, 0x00, 0x07, 0x00,
 356          0x82, 0xFF, 0x60, 0x83, 0x5F, 0x83, 0x90} },  /* 0x43 */
 357        { {0xAD, 0x7F, 0x91, 0x8E, 0x9C, 0x00, 0x02, 0x82,
 358          0x49, 0xF5, 0x00, 0x83, 0xFF, 0x4A, 0x90} },  /* 0x44 */
 359        { {0xCD, 0x9F, 0x91, 0xA7, 0x19, 0x00, 0x07, 0x60,
 360          0xE6, 0xFF, 0xC0, 0x83, 0xBF, 0xE7, 0x90} },  /* 0x45 */
 361        { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x60,
 362          0xF1, 0xFF, 0xC0, 0x83, 0xBF, 0xF2, 0x90} },  /* 0x46 */
 363        { {0xD7, 0x9F, 0x9B, 0xAC, 0x1E, 0x00, 0x07, 0x00,
 364          0x03, 0xDE, 0xC0, 0x84, 0xBF, 0x04, 0x90} }  /* 0x47 */
 365};
 366
 367/*add for new UNIVGABIOS*/
 368static const struct SiS_LCDData XGI_StLCD1024x768Data[] = {
 369        {62,  25, 800,  546, 1344, 806},
 370        {32,  15, 930,  546, 1344, 806},
 371        {62,  25, 800,  546, 1344, 806}, /*chiawenfordot9->dot8*/
 372        {104, 45, 945,  496, 1344, 806},
 373        {62,  25, 800,  546, 1344, 806},
 374        {31,  18, 1008, 624, 1344, 806},
 375        {1,   1,  1344, 806, 1344, 806}
 376};
 377
 378static const struct SiS_LCDData XGI_ExtLCD1024x768Data[] = {
 379        {42, 25, 1536, 419, 1344, 806},
 380        {48, 25, 1536, 369, 1344, 806},
 381        {42, 25, 1536, 419, 1344, 806},
 382        {48, 25, 1536, 369, 1344, 806},
 383        {12, 5,  896,  500, 1344, 806},
 384        {42, 25, 1024, 625, 1344, 806},
 385        {1,  1,  1344, 806, 1344, 806},
 386        {12, 5,  896,  500, 1344, 806},
 387        {42, 25, 1024, 625, 1344, 806},
 388        {1,  1,  1344, 806, 1344, 806},
 389        {12, 5,  896,  500, 1344, 806},
 390        {42, 25, 1024, 625, 1344, 806},
 391        {1,  1,  1344, 806, 1344, 806}
 392};
 393
 394static const struct SiS_LCDData XGI_CetLCD1024x768Data[] = {
 395        {1, 1, 1344, 806, 1344, 806}, /* ; 00 (320x200,320x400,
 396                                       *       640x200,640x400)
 397                                       */
 398        {1, 1, 1344, 806, 1344, 806}, /* 01 (320x350,640x350) */
 399        {1, 1, 1344, 806, 1344, 806}, /* 02 (360x400,720x400) */
 400        {1, 1, 1344, 806, 1344, 806}, /* 03 (720x350) */
 401        {1, 1, 1344, 806, 1344, 806}, /* 04 (640x480x60Hz) */
 402        {1, 1, 1344, 806, 1344, 806}, /* 05 (800x600x60Hz) */
 403        {1, 1, 1344, 806, 1344, 806}  /* 06 (1024x768x60Hz) */
 404};
 405
 406static const struct SiS_LCDData XGI_StLCD1280x1024Data[] = {
 407        {22,  5,  800,  510,  1650, 1088},
 408        {22,  5,  800,  510,  1650, 1088},
 409        {176, 45, 900,  510,  1650, 1088},
 410        {176, 45, 900,  510,  1650, 1088},
 411        {22,  5,  800,  510,  1650, 1088},
 412        {13,  5,  1024, 675,  1560, 1152},
 413        {16,  9,  1266, 804,  1688, 1072},
 414        {1,   1,  1688, 1066, 1688, 1066}
 415};
 416
 417static const struct SiS_LCDData XGI_ExtLCD1280x1024Data[] = {
 418        {211, 60,  1024, 501,  1688, 1066},
 419        {211, 60,  1024, 508,  1688, 1066},
 420        {211, 60,  1024, 501,  1688, 1066},
 421        {211, 60,  1024, 508,  1688, 1066},
 422        {211, 60,  1024, 500,  1688, 1066},
 423        {211, 75,  1024, 625,  1688, 1066},
 424        {211, 120, 1280, 798,  1688, 1066},
 425        {1,   1,   1688, 1066, 1688, 1066}
 426};
 427
 428static const struct SiS_LCDData XGI_CetLCD1280x1024Data[] = {
 429        {1, 1, 1688, 1066, 1688, 1066}, /* 00 (320x200,320x400,
 430                                         *     640x200,640x400)
 431                                         */
 432        {1, 1, 1688, 1066, 1688, 1066}, /* 01 (320x350,640x350) */
 433        {1, 1, 1688, 1066, 1688, 1066}, /* 02 (360x400,720x400) */
 434        {1, 1, 1688, 1066, 1688, 1066}, /* 03 (720x350) */
 435        {1, 1, 1688, 1066, 1688, 1066}, /* 04 (640x480x60Hz) */
 436        {1, 1, 1688, 1066, 1688, 1066}, /* 05 (800x600x60Hz) */
 437        {1, 1, 1688, 1066, 1688, 1066}, /* 06 (1024x768x60Hz) */
 438        {1, 1, 1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */
 439        {1, 1, 1688, 1066, 1688, 1066}  /* 08 (1400x1050x60Hz) */
 440};
 441
 442static const struct SiS_LCDData xgifb_lcd_1400x1050[] = {
 443        {211, 100, 2100, 408,  1688, 1066}, /* 00 (320x200,320x400,
 444                                             *     640x200,640x400)
 445                                             */
 446        {211, 64,  1536, 358,  1688, 1066}, /* 01 (320x350,640x350) */
 447        {211, 100, 2100, 408,  1688, 1066}, /* 02 (360x400,720x400) */
 448        {211, 64,  1536, 358,  1688, 1066}, /* 03 (720x350) */
 449        {211, 48,  840,  488,  1688, 1066}, /* 04 (640x480x60Hz) */
 450        {211, 72,  1008, 609,  1688, 1066}, /* 05 (800x600x60Hz) */
 451        {211, 128, 1400, 776,  1688, 1066}, /* 06 (1024x768x60Hz) */
 452        {1,   1,   1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz
 453                                             *    w/o Scaling)
 454                                             */
 455        {1,   1,   1688, 1066, 1688, 1066}  /* 08 (1400x1050x60Hz) */
 456};
 457
 458static const struct SiS_LCDData XGI_ExtLCD1600x1200Data[] = {
 459        {4,  1,  1620, 420,  2160, 1250}, /* 00 (320x200,320x400,
 460                                           *     640x200,640x400)
 461                                           */
 462        {27, 7,  1920, 375,  2160, 1250}, /* 01 (320x350,640x350) */
 463        {4,  1,  1620, 420,  2160, 1250}, /* 02 (360x400,720x400)*/
 464        {27, 7,  1920, 375,  2160, 1250}, /* 03 (720x350) */
 465        {27, 4,  800,  500,  2160, 1250}, /* 04 (640x480x60Hz) */
 466        {4,  1,  1080, 625,  2160, 1250}, /* 05 (800x600x60Hz) */
 467        {5,  2,  1350, 800,  2160, 1250}, /* 06 (1024x768x60Hz) */
 468        {27, 16, 1500, 1064, 2160, 1250}, /* 07 (1280x1024x60Hz) */
 469        {9,  7,  1920, 1106, 2160, 1250}, /* 08 (1400x1050x60Hz) */
 470        {1,  1,  2160, 1250, 2160, 1250}  /* 09 (1600x1200x60Hz) ;302lv */
 471};
 472
 473static const struct SiS_LCDData XGI_StLCD1600x1200Data[] = {
 474        {27,  4,  800,  500,  2160, 1250}, /* 00 (320x200,320x400,
 475                                            *     640x200,640x400)
 476                                            */
 477        {27,  4,  800,  500,  2160, 1250}, /* 01 (320x350,640x350) */
 478        {27,  4,  800,  500,  2160, 1250}, /* 02 (360x400,720x400) */
 479        {27,  4,  800,  500,  2160, 1250}, /* 03 (720x350) */
 480        {27,  4,  800,  500,  2160, 1250}, /* 04 (320x240,640x480) */
 481        {4,   1,  1080, 625,  2160, 1250}, /* 05 (400x300,800x600) */
 482        {5,   2,  1350, 800,  2160, 1250}, /* 06 (512x384,1024x768) */
 483        {135, 88, 1600, 1100, 2160, 1250}, /* 07 (1280x1024) */
 484        {1,   1,  1800, 1500, 2160, 1250}, /* 08 (1400x1050) */
 485        {1,   1,  2160, 1250, 2160, 1250}  /* 09 (1600x1200) */
 486};
 487
 488#define XGI_CetLCD1400x1050Data XGI_CetLCD1280x1024Data
 489
 490static const struct SiS_LCDData XGI_NoScalingData[] = {
 491        {1, 1, 800,  449,  800,  449},
 492        {1, 1, 800,  449,  800,  449},
 493        {1, 1, 900,  449,  900,  449},
 494        {1, 1, 900,  449,  900,  449},
 495        {1, 1, 800,  525,  800,  525},
 496        {1, 1, 1056, 628,  1056, 628},
 497        {1, 1, 1344, 806,  1344, 806},
 498        {1, 1, 1688, 1066, 1688, 1066}
 499};
 500
 501static const struct SiS_LCDData XGI_ExtLCD1024x768x75Data[] = {
 502        {42, 25, 1536, 419, 1344, 806}, /* ; 00 (320x200,320x400,
 503                                         *       640x200,640x400)
 504                                         */
 505        {48, 25, 1536, 369, 1344, 806}, /* ; 01 (320x350,640x350) */
 506        {42, 25, 1536, 419, 1344, 806}, /* ; 02 (360x400,720x400) */
 507        {48, 25, 1536, 369, 1344, 806}, /* ; 03 (720x350) */
 508        {8,  5,  1312, 500, 1312, 800}, /* ; 04 (640x480x75Hz) */
 509        {41, 25, 1024, 625, 1312, 800}, /* ; 05 (800x600x75Hz) */
 510        {1,  1,  1312, 800, 1312, 800}  /* ; 06 (1024x768x75Hz) */
 511};
 512
 513static const struct SiS_LCDData XGI_CetLCD1024x768x75Data[] = {
 514        {1, 1, 1312, 800, 1312, 800}, /* ; 00 (320x200,320x400,
 515                                       *       640x200,640x400)
 516                                       */
 517        {1, 1, 1312, 800, 1312, 800}, /* ; 01 (320x350,640x350) */
 518        {1, 1, 1312, 800, 1312, 800}, /* ; 02 (360x400,720x400) */
 519        {1, 1, 1312, 800, 1312, 800}, /* ; 03 (720x350) */
 520        {1, 1, 1312, 800, 1312, 800}, /* ; 04 (640x480x75Hz) */
 521        {1, 1, 1312, 800, 1312, 800}, /* ; 05 (800x600x75Hz) */
 522        {1, 1, 1312, 800, 1312, 800}  /* ; 06 (1024x768x75Hz) */
 523};
 524
 525static const struct SiS_LCDData xgifb_lcd_1280x1024x75[] = {
 526        {211, 60,  1024, 501,  1688, 1066}, /* ; 00 (320x200,320x400,
 527                                             *       640x200,640x400)
 528                                             */
 529        {211, 60,  1024, 508,  1688, 1066}, /* ; 01 (320x350,640x350) */
 530        {211, 60,  1024, 501,  1688, 1066}, /* ; 02 (360x400,720x400) */
 531        {211, 60,  1024, 508,  1688, 1066}, /* ; 03 (720x350) */
 532        {211, 45,  768,  498,  1688, 1066}, /* ; 04 (640x480x75Hz) */
 533        {211, 75,  1024, 625,  1688, 1066}, /* ; 05 (800x600x75Hz) */
 534        {211, 120, 1280, 798,  1688, 1066}, /* ; 06 (1024x768x75Hz) */
 535        {1,   1,   1688, 1066, 1688, 1066}  /* ; 07 (1280x1024x75Hz) */
 536};
 537
 538#define XGI_CetLCD1280x1024x75Data XGI_CetLCD1280x1024Data
 539
 540static const struct SiS_LCDData XGI_NoScalingDatax75[] = {
 541        {1, 1, 800,  449,  800,  449},  /* ; 00 (320x200, 320x400,
 542                                         *       640x200, 640x400)
 543                                         */
 544        {1, 1, 800,  449,  800,  449},  /* ; 01 (320x350, 640x350) */
 545        {1, 1, 900,  449,  900,  449},  /* ; 02 (360x400, 720x400) */
 546        {1, 1, 900,  449,  900,  449},  /* ; 03 (720x350) */
 547        {1, 1, 840,  500,  840,  500},  /* ; 04 (640x480x75Hz) */
 548        {1, 1, 1056, 625,  1056, 625},  /* ; 05 (800x600x75Hz) */
 549        {1, 1, 1312, 800,  1312, 800},  /* ; 06 (1024x768x75Hz) */
 550        {1, 1, 1688, 1066, 1688, 1066}, /* ; 07 (1280x1024x75Hz) */
 551        {1, 1, 1688, 1066, 1688, 1066}, /* ; 08 (1400x1050x75Hz)*/
 552        {1, 1, 2160, 1250, 2160, 1250}, /* ; 09 (1600x1200x75Hz) */
 553        {1, 1, 1688, 806,  1688, 806}   /* ; 0A (1280x768x75Hz) */
 554};
 555
 556static const struct XGI_LCDDesStruct XGI_ExtLCDDes1024x768Data[] = {
 557        {9, 1057, 0,   771}, /* ; 00 (320x200,320x400,640x200,640x400) */
 558        {9, 1057, 0,   771}, /* ; 01 (320x350,640x350) */
 559        {9, 1057, 0,   771}, /* ; 02 (360x400,720x400) */
 560        {9, 1057, 0,   771}, /* ; 03 (720x350) */
 561        {9, 1057, 0,   771}, /* ; 04 (640x480x60Hz) */
 562        {9, 1057, 0,   771}, /* ; 05 (800x600x60Hz) */
 563        {9, 1057, 805, 770}  /* ; 06 (1024x768x60Hz) */
 564};
 565
 566static const struct XGI_LCDDesStruct XGI_StLCDDes1024x768Data[] = {
 567        {9, 1057, 737, 703}, /* ; 00 (320x200,320x400,640x200,640x400) */
 568        {9, 1057, 686, 651}, /* ; 01 (320x350,640x350) */
 569        {9, 1057, 737, 703}, /* ; 02 (360x400,720x400) */
 570        {9, 1057, 686, 651}, /* ; 03 (720x350) */
 571        {9, 1057, 776, 741}, /* ; 04 (640x480x60Hz) */
 572        {9, 1057, 0,   771}, /* ; 05 (800x600x60Hz) */
 573        {9, 1057, 805, 770}  /* ; 06 (1024x768x60Hz) */
 574};
 575
 576static const struct XGI_LCDDesStruct XGI_CetLCDDes1024x768Data[] = {
 577        {1152, 856,  622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
 578        {1152, 856,  597, 562}, /* ; 01 (320x350,640x350) */
 579        {1152, 856,  622, 587}, /* ; 02 (360x400,720x400) */
 580        {1152, 856,  597, 562}, /* ; 03 (720x350) */
 581        {1152, 856,  662, 627}, /* ; 04 (640x480x60Hz) */
 582        {1232, 936,  722, 687}, /* ; 05 (800x600x60Hz) */
 583        {0,    1048, 805, 770}  /* ; 06 (1024x768x60Hz) */
 584};
 585
 586static const struct XGI_LCDDesStruct XGI_ExtLCDDLDes1280x1024Data[] = {
 587        {18, 1346, 981,  940},  /* 00 (320x200,320x400,640x200,640x400) */
 588        {18, 1346, 926,  865},  /* 01 (320x350,640x350) */
 589        {18, 1346, 981,  940},  /* 02 (360x400,720x400) */
 590        {18, 1346, 926,  865},  /* 03 (720x350) */
 591        {18, 1346, 0,    1025}, /* 04 (640x480x60Hz) */
 592        {18, 1346, 0,    1025}, /* 05 (800x600x60Hz) */
 593        {18, 1346, 1065, 1024}, /* 06 (1024x768x60Hz) */
 594        {18, 1346, 1065, 1024}  /* 07 (1280x1024x60Hz) */
 595};
 596
 597static const struct XGI_LCDDesStruct XGI_StLCDDLDes1280x1024Data[] = {
 598        {18, 1346, 970,  907},  /* 00 (320x200,320x400,640x200,640x400) */
 599        {18, 1346, 917,  854},  /* 01 (320x350,640x350) */
 600        {18, 1346, 970,  907},  /* 02 (360x400,720x400) */
 601        {18, 1346, 917,  854},  /* 03 (720x350) */
 602        {18, 1346, 0,    1025}, /* 04 (640x480x60Hz) */
 603        {18, 1346, 0,    1025}, /* 05 (800x600x60Hz) */
 604        {18, 1346, 1065, 1024}, /* 06 (1024x768x60Hz) */
 605        {18, 1346, 1065, 1024}  /* 07 (1280x1024x60Hz) */
 606};
 607
 608static const struct XGI_LCDDesStruct XGI_CetLCDDLDes1280x1024Data[] = {
 609        {1368, 1008, 752,  711}, /* 00 (320x200,320x400,640x200,640x400) */
 610        {1368, 1008, 729,  688}, /* 01 (320x350,640x350) */
 611        {1368, 1008, 752,  711}, /* 02 (360x400,720x400) */
 612        {1368, 1008, 729,  688}, /* 03 (720x350) */
 613        {1368, 1008, 794,  753}, /* 04 (640x480x60Hz) */
 614        {1448, 1068, 854,  813}, /* 05 (800x600x60Hz) */
 615        {1560, 1200, 938,  897}, /* 06 (1024x768x60Hz) */
 616        {18,   1346, 1065, 1024} /* 07 (1280x1024x60Hz) */
 617};
 618
 619static const struct XGI_LCDDesStruct XGI_ExtLCDDes1280x1024Data[] = {
 620        {9, 1337, 981,  940},  /* ; 00 (320x200,320x400,640x200,640x400) */
 621        {9, 1337, 926,  884},  /* ; 01 (320x350,640x350) alan, 2003/09/30 */
 622        {9, 1337, 981,  940},  /* ; 02 (360x400,720x400) */
 623        {9, 1337, 926,  884},  /* ; 03 (720x350) alan, 2003/09/30 */
 624        {9, 1337, 0,    1025}, /* ; 04 (640x480x60Hz) */
 625        {9, 1337, 0,    1025}, /* ; 05 (800x600x60Hz) */
 626        {9, 1337, 1065, 1024}, /* ; 06 (1024x768x60Hz) */
 627        {9, 1337, 1065, 1024}  /* ; 07 (1280x1024x60Hz) */
 628};
 629
 630static const struct XGI_LCDDesStruct XGI_StLCDDes1280x1024Data[] = {
 631        {9, 1337, 970,  907},  /* ; 00 (320x200,320x400,640x200,640x400) */
 632        {9, 1337, 917,  854},  /* ; 01 (320x350,640x350) */
 633        {9, 1337, 970,  907},  /* ; 02 (360x400,720x400) */
 634        {9, 1337, 917,  854},  /* ; 03 (720x350) */
 635        {9, 1337, 0,    1025}, /* ; 04 (640x480x60Hz) */
 636        {9, 1337, 0,    1025}, /* ; 05 (800x600x60Hz) */
 637        {9, 1337, 1065, 1024}, /* ; 06 (1024x768x60Hz) */
 638        {9, 1337, 1065, 1024}  /* ; 07 (1280x1024x60Hz) */
 639};
 640
 641static const struct XGI_LCDDesStruct XGI_CetLCDDes1280x1024Data[] = {
 642        {1368, 1008, 752,  711}, /* 00 (320x200,320x400,640x200,640x400) */
 643        {1368, 1008, 729,  688}, /* 01 (320x350,640x350) */
 644        {1368, 1008, 752,  711}, /* 02 (360x400,720x400) */
 645        {1368, 1008, 729,  688}, /* 03 (720x350) */
 646        {1368, 1008, 794,  753}, /* 04 (640x480x60Hz) */
 647        {1448, 1068, 854,  813}, /* 05 (800x600x60Hz) */
 648        {1560, 1200, 938,  897}, /* 06 (1024x768x60Hz) */
 649        {9,    1337, 1065, 1024} /* 07 (1280x1024x60Hz) */
 650};
 651
 652static const struct XGI_LCDDesStruct xgifb_lcddldes_1400x1050[] = {
 653        {18,   1464, 0,    1051}, /* 00 (320x200,320x400,640x200,640x400) */
 654        {18,   1464, 0,    1051}, /* 01 (320x350,640x350) */
 655        {18,   1464, 0,    1051}, /* 02 (360x400,720x400) */
 656        {18,   1464, 0,    1051}, /* 03 (720x350) */
 657        {18,   1464, 0,    1051}, /* 04 (640x480x60Hz) */
 658        {18,   1464, 0,    1051}, /* 05 (800x600x60Hz) */
 659        {18,   1464, 0,    1051}, /* 06 (1024x768x60Hz) */
 660        {1646, 1406, 1053, 1038}, /* 07 (1280x1024x60Hz) */
 661        {18,   1464, 0,    1051}  /* 08 (1400x1050x60Hz) */
 662};
 663
 664static const struct XGI_LCDDesStruct xgifb_lcddes_1400x1050[] = {
 665        {9,    1455, 0,    1051}, /* 00 (320x200,320x400,640x200,640x400) */
 666        {9,    1455, 0,    1051}, /* 01 (320x350,640x350) */
 667        {9,    1455, 0,    1051}, /* 02 (360x400,720x400) */
 668        {9,    1455, 0,    1051}, /* 03 (720x350) */
 669        {9,    1455, 0,    1051}, /* 04 (640x480x60Hz) */
 670        {9,    1455, 0,    1051}, /* 05 (800x600x60Hz) */
 671        {9,    1455, 0,    1051}, /* 06 (1024x768x60Hz) */
 672        {1637, 1397, 1053, 1038}, /* 07 (1280x1024x60Hz) */
 673        {9,    1455, 0,    1051}  /* 08 (1400x1050x60Hz) */
 674};
 675
 676static const struct XGI_LCDDesStruct XGI_CetLCDDes1400x1050Data[] = {
 677        {1308, 1068, 781,  766},  /* 00 (320x200,320x400,640x200,640x400) */
 678        {1308, 1068, 781,  766},  /* 01 (320x350,640x350) */
 679        {1308, 1068, 781,  766},  /* 02 (360x400,720x400) */
 680        {1308, 1068, 781,  766},  /* 03 (720x350) */
 681        {1308, 1068, 781,  766},  /* 04 (640x480x60Hz) */
 682        {1388, 1148, 841,  826},  /* 05 (800x600x60Hz) */
 683        {1490, 1250, 925,  910},  /* 06 (1024x768x60Hz) */
 684        {1646, 1406, 1053, 1038}, /* 07 (1280x1024x60Hz) */
 685        {18,   1464, 0,    1051}  /* 08 (1400x1050x60Hz) */
 686};
 687
 688static const struct XGI_LCDDesStruct XGI_CetLCDDes1400x1050Data2[] = {
 689        {0, 1448, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */
 690        {0, 1448, 0, 1051}, /* 01 (320x350,640x350) */
 691        {0, 1448, 0, 1051}, /* 02 (360x400,720x400) */
 692        {0, 1448, 0, 1051}, /* 03 (720x350) */
 693        {0, 1448, 0, 1051}  /* 04 (640x480x60Hz) */
 694};
 695
 696static const struct XGI_LCDDesStruct XGI_ExtLCDDLDes1600x1200Data[] = {
 697        {18, 1682, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
 698        {18, 1682, 0, 1201}, /* 01 (320x350,640x350) */
 699        {18, 1682, 0, 1201}, /* 02 (360x400,720x400) */
 700        {18, 1682, 0, 1201}, /* 03 (720x350) */
 701        {18, 1682, 0, 1201}, /* 04 (640x480x60Hz) */
 702        {18, 1682, 0, 1201}, /* 05 (800x600x60Hz) */
 703        {18, 1682, 0, 1201}, /* 06 (1024x768x60Hz) */
 704        {18, 1682, 0, 1201}, /* 07 (1280x1024x60Hz) */
 705        {18, 1682, 0, 1201}, /* 08 (1400x1050x60Hz) */
 706        {18, 1682, 0, 1201}  /* 09 (1600x1200x60Hz) */
 707};
 708
 709static const struct XGI_LCDDesStruct XGI_StLCDDLDes1600x1200Data[] = {
 710        {18, 1682, 1150, 1101}, /* 00 (320x200,320x400,640x200,640x400) */
 711        {18, 1682, 1083, 1034}, /* 01 (320x350,640x350) */
 712        {18, 1682, 1150, 1101}, /* 02 (360x400,720x400) */
 713        {18, 1682, 1083, 1034}, /* 03 (720x350) */
 714        {18, 1682, 0,    1201}, /* 04 (640x480x60Hz) */
 715        {18, 1682, 0,    1201}, /* 05 (800x600x60Hz) */
 716        {18, 1682, 0,    1201}, /* 06 (1024x768x60Hz) */
 717        {18, 1682, 1232, 1183}, /* 07 (1280x1024x60Hz) */
 718        {18, 1682, 0,    1201}, /* 08 (1400x1050x60Hz) */
 719        {18, 1682, 0,    1201} /* 09 (1600x1200x60Hz) */
 720};
 721
 722static const struct XGI_LCDDesStruct XGI_ExtLCDDes1600x1200Data[] = {
 723        {9, 1673, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
 724        {9, 1673, 0, 1201}, /* 01 (320x350,640x350) */
 725        {9, 1673, 0, 1201}, /* 02 (360x400,720x400) */
 726        {9, 1673, 0, 1201}, /* 03 (720x350) */
 727        {9, 1673, 0, 1201}, /* 04 (640x480x60Hz) */
 728        {9, 1673, 0, 1201}, /* 05 (800x600x60Hz) */
 729        {9, 1673, 0, 1201}, /* 06 (1024x768x60Hz) */
 730        {9, 1673, 0, 1201}, /* 07 (1280x1024x60Hz) */
 731        {9, 1673, 0, 1201}, /* 08 (1400x1050x60Hz) */
 732        {9, 1673, 0, 1201}  /* 09 (1600x1200x60Hz) */
 733};
 734
 735static const struct XGI_LCDDesStruct XGI_StLCDDes1600x1200Data[] = {
 736        {9, 1673, 1150, 1101}, /* 00 (320x200,320x400,640x200,640x400) */
 737        {9, 1673, 1083, 1034}, /* 01 (320x350,640x350) */
 738        {9, 1673, 1150, 1101}, /* 02 (360x400,720x400) */
 739        {9, 1673, 1083, 1034}, /* 03 (720x350) */
 740        {9, 1673, 0,    1201}, /* 04 (640x480x60Hz) */
 741        {9, 1673, 0,    1201}, /* 05 (800x600x60Hz) */
 742        {9, 1673, 0,    1201}, /* 06 (1024x768x60Hz) */
 743        {9, 1673, 1232, 1183}, /* 07 (1280x1024x60Hz) */
 744        {9, 1673, 0,    1201}, /* 08 (1400x1050x60Hz) */
 745        {9, 1673, 0,    1201}  /* 09 (1600x1200x60Hz) */
 746};
 747
 748static const struct XGI330_LCDDataDesStruct2  XGI_NoScalingDesData[] = {
 749        {9, 657,  448, 405,  96,   2}, /* 00 (320x200,320x400,
 750                                        *     640x200,640x400)
 751                                        */
 752        {9, 657,  448, 355,  96,   2}, /* 01 (320x350,640x350) */
 753        {9, 657,  448, 405,  96,   2}, /* 02 (360x400,720x400) */
 754        {9, 657,  448, 355,  96,   2}, /* 03 (720x350) */
 755        {9, 657,  1,   483,  96,   2}, /* 04 (640x480x60Hz) */
 756        {9, 849,  627, 600,  128,  4}, /* 05 (800x600x60Hz) */
 757        {9, 1057, 805, 770,  0136, 6}, /* 06 (1024x768x60Hz) */
 758        {9, 1337, 0,   1025, 112,  3}, /* 07 (1280x1024x60Hz) */
 759        {9, 1457, 0,   1051, 112,  3}, /* 08 (1400x1050x60Hz)*/
 760        {9, 1673, 0,   1201, 192,  3}, /* 09 (1600x1200x60Hz) */
 761        {9, 1337, 0,   771,  112,  6}  /* 0A (1280x768x60Hz) */
 762};
 763
 764/* ;;1024x768x75Hz */
 765static const struct XGI_LCDDesStruct xgifb_lcddes_1024x768x75[] = {
 766        {9, 1049, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */
 767        {9, 1049, 0, 769}, /* ; 01 (320x350,640x350) */
 768        {9, 1049, 0, 769}, /* ; 02 (360x400,720x400) */
 769        {9, 1049, 0, 769}, /* ; 03 (720x350) */
 770        {9, 1049, 0, 769}, /* ; 04 (640x480x75Hz) */
 771        {9, 1049, 0, 769}, /* ; 05 (800x600x75Hz) */
 772        {9, 1049, 0, 769}  /* ; 06 (1024x768x75Hz) */
 773};
 774
 775/* ;;1024x768x75Hz */
 776static const struct XGI_LCDDesStruct XGI_CetLCDDes1024x768x75Data[] = {
 777        {1152, 856,  622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
 778        {1152, 856,  597, 562}, /* ; 01 (320x350,640x350) */
 779        {1192, 896,  622, 587}, /* ; 02 (360x400,720x400) */
 780        {1192, 896,  597, 562}, /* ; 03 (720x350) */
 781        {1129, 857,  656, 625}, /* ; 04 (640x480x75Hz) */
 782        {1209, 937,  716, 685}, /* ; 05 (800x600x75Hz) */
 783        {9,    1049, 0,   769}  /* ; 06 (1024x768x75Hz) */
 784};
 785
 786/* ;;1280x1024x75Hz */
 787static const struct XGI_LCDDesStruct xgifb_lcddldes_1280x1024x75[] = {
 788        {18, 1314, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
 789        {18, 1314, 0, 1025}, /* ; 01 (320x350,640x350) */
 790        {18, 1314, 0, 1025}, /* ; 02 (360x400,720x400) */
 791        {18, 1314, 0, 1025}, /* ; 03 (720x350) */
 792        {18, 1314, 0, 1025}, /* ; 04 (640x480x60Hz) */
 793        {18, 1314, 0, 1025}, /* ; 05 (800x600x60Hz) */
 794        {18, 1314, 0, 1025}, /* ; 06 (1024x768x60Hz) */
 795        {18, 1314, 0, 1025}  /* ; 07 (1280x1024x60Hz) */
 796};
 797
 798/* 1280x1024x75Hz */
 799static const struct XGI_LCDDesStruct XGI_CetLCDDLDes1280x1024x75Data[] = {
 800        {1368, 1008, 752, 711}, /* ; 00 (320x200,320x400,640x200,640x400) */
 801        {1368, 1008, 729, 688}, /* ; 01 (320x350,640x350) */
 802        {1408, 1048, 752, 711}, /* ; 02 (360x400,720x400) */
 803        {1408, 1048, 729, 688}, /* ; 03 (720x350) */
 804        {1377, 985,  794, 753}, /* ; 04 (640x480x75Hz) */
 805        {1457, 1065, 854, 813}, /* ; 05 (800x600x75Hz) */
 806        {1569, 1177, 938, 897}, /* ; 06 (1024x768x75Hz) */
 807        {18,   1314, 0,   1025} /* ; 07 (1280x1024x75Hz) */
 808};
 809
 810/* ;;1280x1024x75Hz */
 811static const struct XGI_LCDDesStruct xgifb_lcddes_1280x1024x75[] = {
 812        {9, 1305, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
 813        {9, 1305, 0, 1025}, /* ; 01 (320x350,640x350) */
 814        {9, 1305, 0, 1025}, /* ; 02 (360x400,720x400) */
 815        {9, 1305, 0, 1025}, /* ; 03 (720x350) */
 816        {9, 1305, 0, 1025}, /* ; 04 (640x480x60Hz) */
 817        {9, 1305, 0, 1025}, /* ; 05 (800x600x60Hz) */
 818        {9, 1305, 0, 1025}, /* ; 06 (1024x768x60Hz) */
 819        {9, 1305, 0, 1025}  /* ; 07 (1280x1024x60Hz) */
 820};
 821
 822/* 1280x1024x75Hz */
 823static const struct XGI_LCDDesStruct XGI_CetLCDDes1280x1024x75Data[] = {
 824        {1368, 1008, 752, 711}, /* ; 00 (320x200,320x400,640x200,640x400) */
 825        {1368, 1008, 729, 688}, /* ; 01 (320x350,640x350) */
 826        {1408, 1048, 752, 711}, /* ; 02 (360x400,720x400) */
 827        {1408, 1048, 729, 688}, /* ; 03 (720x350) */
 828        {1377, 985,  794, 753}, /* ; 04 (640x480x75Hz) */
 829        {1457, 1065, 854, 813}, /* ; 05 (800x600x75Hz) */
 830        {1569, 1177, 938, 897}, /* ; 06 (1024x768x75Hz) */
 831        {9,    1305, 0,   1025} /* ; 07 (1280x1024x75Hz) */
 832};
 833
 834/* Scaling LCD 75Hz */
 835static const struct XGI330_LCDDataDesStruct2 XGI_NoScalingDesDatax75[] =  {
 836        {9, 657,  448, 405,  96,  2}, /* ; 00 (320x200,320x400,
 837                                       *       640x200,640x400)
 838                                       */
 839        {9, 657,  448, 355,  96,  2}, /* ; 01 (320x350,640x350) */
 840        {9, 738,  448, 405,  108, 2}, /* ; 02 (360x400,720x400) */
 841        {9, 738,  448, 355,  108, 2}, /* ; 03 (720x350) */
 842        {9, 665,  0,   481,  64,  3}, /* ; 04 (640x480x75Hz) */
 843        {9, 825,  0,   601,  80,  3}, /* ; 05 (800x600x75Hz) */
 844        {9, 1049, 0,   769,  96,  3}, /* ; 06 (1024x768x75Hz) */
 845        {9, 1305, 0,   1025, 144, 3}, /* ; 07 (1280x1024x75Hz) */
 846        {9, 1457, 0,   1051, 112, 3}, /* ; 08 (1400x1050x60Hz)*/
 847        {9, 1673, 0,   1201, 192, 3}, /* ; 09 (1600x1200x75Hz) */
 848        {9, 1337, 0,   771,  112, 6}  /* ; 0A (1280x768x60Hz) */
 849};
 850
 851static const struct SiS_TVData XGI_StPALData[] = {
 852        {1, 1, 864, 525, 1270, 400, 100, 0, 760},
 853        {1, 1, 864, 525, 1270, 350, 100, 0, 760},
 854        {1, 1, 864, 525, 1270, 400,   0, 0, 720},
 855        {1, 1, 864, 525, 1270, 350,   0, 0, 720},
 856        {1, 1, 864, 525, 1270, 480,  50, 0, 760},
 857        {1, 1, 864, 525, 1270, 600,  50, 0,   0}
 858};
 859
 860static const struct SiS_TVData XGI_ExtPALData[] = {
 861        {2,  1, 1080, 463, 1270, 500,  50, 0,  50},
 862        {15, 7, 1152, 413, 1270, 500,  50, 0,  50},
 863        {2,  1, 1080, 463, 1270, 500,  50, 0,  50},
 864        {15, 7, 1152, 413, 1270, 500,  50, 0,  50},
 865        {2,  1,  900, 543, 1270, 500,   0, 0,  50},
 866        {4,  3, 1080, 663, 1270, 500, 438, 0, 438},
 867        {1,  1, 1125, 831, 1270, 500, 686, 0, 686}, /*301b*/
 868        {3,  2, 1080, 619, 1270, 540, 438, 0, 438}
 869};
 870
 871static const struct SiS_TVData XGI_StNTSCData[] = {
 872        {1, 1, 858, 525, 1270, 400, 50, 0, 760},
 873        {1, 1, 858, 525, 1270, 350, 50, 0, 640},
 874        {1, 1, 858, 525, 1270, 400,  0, 0, 720},
 875        {1, 1, 858, 525, 1270, 350,  0, 0, 720},
 876        {1, 1, 858, 525, 1270, 480,  0, 0, 760}
 877};
 878
 879static const struct SiS_TVData XGI_ExtNTSCData[] = {
 880        {9,     5, 1001, 453, 1270, 420, 171, 0, 171},
 881        {12,    5,  858, 403, 1270, 420, 171, 0, 171},
 882        {9,     5, 1001, 453, 1270, 420, 171, 0, 171},
 883        {12,    5,  858, 403, 1270, 420, 171, 0, 171},
 884        {143,  80,  836, 523, 1270, 420, 224, 0,   0},
 885        {143, 120, 1008, 643, 1270, 420,   0, 1,   0},
 886        {1,     1, 1120, 821, 1516, 420,   0, 1,   0}, /*301b*/
 887        {2,     1,  858, 503, 1584, 480,   0, 1,   0},
 888        {3,     2, 1001, 533, 1270, 420,   0, 0,   0}
 889};
 890
 891static const struct SiS_TVData XGI_St1HiTVData[] = {
 892        {1, 1, 892,  563, 690,  800, 0,     0, 0}, /* 00 (320x200,320x400,
 893                                                    *     640x200,640x400)
 894                                                    */
 895        {1, 1, 892,  563, 690,  700, 0,     0, 0}, /* 01 (320x350,640x350) */
 896        {1, 1, 1000, 563, 785,  800, 0,     0, 0}, /* 02 (360x400,720x400) */
 897        {1, 1, 1000, 563, 785,  700, 0,     0, 0}, /* 03 (720x350) */
 898        {1, 1, 892,  563, 690,  960, 0,     0, 0}, /* 04 (320x240,640x480) */
 899        {8, 5, 1050, 683, 1648, 960, 0x150, 1, 0}  /* 05 (400x300,800x600) */
 900};
 901
 902static const struct SiS_TVData XGI_St2HiTVData[] = {
 903        {3, 1, 840,  483, 1648, 960, 0x032, 0, 0}, /* 00 (320x200,320x400,
 904                                                    *     640x200,640x400)
 905                                                    */
 906        {1, 1, 892,  563, 690,  700, 0,     0, 0}, /* 01 (320x350,640x350) */
 907        {3, 1, 840,  483, 1648, 960, 0x032, 0, 0}, /* 02 (360x400,720x400) */
 908        {1, 1, 1000, 563, 785,  700, 0,     0, 0}, /* 03 (720x350) */
 909        {5, 2, 840,  563, 1648, 960, 0x08D, 1, 0}, /* 04 (320x240,640x480) */
 910        {8, 5, 1050, 683, 1648, 960, 0x17C, 1, 0}  /* 05 (400x300,800x600) */
 911};
 912
 913static const struct SiS_TVData XGI_ExtHiTVData[] = {
 914        {6,  1,  840,  563,  1632, 960, 0,     0, 0}, /* 00 (320x200,320x400,
 915                                                       *     640x200,640x400)
 916                                                       */
 917        {3,  1,  960,  563,  1632, 960, 0,     0, 0}, /* 01 (320x350,640x350) */
 918        {3,  1,  840,  483,  1632, 960, 0,     0, 0}, /* 02 (360x400,720x400) */
 919        {3,  1,  960,  563,  1632, 960, 0,     0, 0}, /* 03 (720x350) */
 920        {5,  1,  840,  563,  1648, 960, 0x166, 1, 0}, /* 04 (320x240,640x480) */
 921        {16, 5,  1050, 683,  1648, 960, 0x143, 1, 0}, /* 05 (400x300,800x600) */
 922        {25, 12, 1260, 851,  1648, 960, 0x032, 0, 0}, /* 06 (512x384,1024x768)*/
 923        {5,  4,  1575, 1124, 1648, 960, 0x128, 0, 0}, /* 07 (1280x1024) */
 924        {4,  1,  1050, 563,  1548, 960, 0x143, 1, 0}, /* 08 (800x480) */
 925        {5,  2,  1400, 659,  1648, 960, 0x032, 0, 0}, /* 09 (1024x576) */
 926        {8,  5,  1750, 803,  1648, 960, 0x128, 0, 0}  /* 0A (1280x720) */
 927};
 928
 929static const struct SiS_TVData XGI_ExtYPbPr525iData[] = {
 930        {  9,  5,  1001, 453, 1270, 420, 171,   0, 171},
 931        { 12,  5,   858, 403, 1270, 420, 171,   0, 171},
 932        {  9,  5,  1001, 453, 1270, 420, 171,   0, 171},
 933        { 12,  5,   858, 403, 1270, 420, 171,   0, 171},
 934        {143,  80,  836, 523, 1250, 420, 224,   0,   0},
 935        {143, 120, 1008, 643, 1250, 420,   0,   1,   0},
 936        { 1,    1, 1120, 821, 1516, 420,   0,   1,   0}, /*301b*/
 937        {  2,   1,  858, 503, 1584, 480,   0,   1,   0},
 938        {  3,   2, 1001, 533, 1250, 420,   0,   0,   0}
 939};
 940
 941static const struct SiS_TVData XGI_StYPbPr525iData[] = {
 942        {1, 1, 858, 525, 1270, 400, 50, 0, 760},
 943        {1, 1, 858, 525, 1270, 350, 50, 0, 640},
 944        {1, 1, 858, 525, 1270, 400,  0, 0, 720},
 945        {1, 1, 858, 525, 1270, 350,  0, 0, 720},
 946        {1, 1, 858, 525, 1270, 480,  0, 0, 760},
 947};
 948
 949static const struct SiS_TVData XGI_ExtYPbPr525pData[] = {
 950        {  9,   5,  1001, 453, 1270, 420, 171, 0, 171},
 951        { 12,   5,   858, 403, 1270, 420, 171, 0, 171},
 952        {  9,   5,  1001, 453, 1270, 420, 171, 0, 171},
 953        { 12,   5,   858, 403, 1270, 420, 171, 0, 171},
 954        {143,  80,   836, 523, 1270, 420, 224, 0,   0},
 955        {143, 120,  1008, 643, 1270, 420,   0, 1,   0},
 956        { 1,    1,  1120, 821, 1516, 420,   0, 1,   0}, /*301b*/
 957        {  2,   1,   858, 503, 1584, 480,   0, 1,   0},
 958        {  3,   2,  1001, 533, 1270, 420,   0, 0,   0}
 959};
 960
 961static const struct SiS_TVData XGI_StYPbPr525pData[] = {
 962        {1, 1, 1716, 525, 1270, 400, 50, 0, 760},
 963        {1, 1, 1716, 525, 1270, 350, 50, 0, 640},
 964        {1, 1, 1716, 525, 1270, 400,  0, 0, 720},
 965        {1, 1, 1716, 525, 1270, 350,  0, 0, 720},
 966        {1, 1, 1716, 525, 1270, 480,  0, 0, 760},
 967};
 968
 969static const struct SiS_TVData XGI_ExtYPbPr750pData[] = {
 970        { 3, 1,  935, 470, 1130, 680,  50, 0, 0}, /* 00 (320x200,320x400,
 971                                                   *     640x200,640x400)
 972                                                   */
 973        {24, 7,  935, 420, 1130, 680,  50, 0, 0}, /* 01 (320x350,640x350) */
 974        { 3, 1,  935, 470, 1130, 680,  50, 0, 0}, /* 02 (360x400,720x400) */
 975        {24, 7,  935, 420, 1130, 680,  50, 0, 0}, /* 03 (720x350) */
 976        { 2, 1, 1100, 590, 1130, 640,  50, 0, 0}, /* 04 (320x240,640x480) */
 977        { 3, 2, 1210, 690, 1130, 660,  50, 0, 0}, /* 05 (400x300,800x600) */
 978        { 1, 1, 1375, 878, 1130, 640, 638, 0, 0}, /* 06 (1024x768) */
 979        { 2, 1,  858, 503, 1130, 480,   0, 1, 0}, /* 07 (720x480) */
 980        { 5, 4, 1815, 570, 1130, 660,  50, 0, 0},
 981        { 5, 3, 1100, 686, 1130, 640,  50, 1, 0},
 982        {10, 9, 1320, 830, 1130, 640,  50, 0, 0}
 983};
 984
 985static const struct SiS_TVData XGI_StYPbPr750pData[] = {
 986        {1, 1, 1650, 750, 1280, 400, 50, 0, 760},
 987        {1, 1, 1650, 750, 1280, 350, 50, 0, 640},
 988        {1, 1, 1650, 750, 1280, 400,  0, 0, 720},
 989        {1, 1, 1650, 750, 1280, 350,  0, 0, 720},
 990        {1, 1, 1650, 750, 1280, 480,  0, 0, 760},
 991};
 992
 993static const unsigned char XGI330_NTSCTiming[] = {
 994        0x17, 0x1d, 0x03, 0x09, 0x05, 0x06, 0x0c, 0x0c,
 995        0x94, 0x49, 0x01, 0x0a, 0x06, 0x0d, 0x04, 0x0a,
 996        0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x1b,
 997        0x0c, 0x50, 0x00, 0x97, 0x00, 0xda, 0x4a, 0x17,
 998        0x7d, 0x05, 0x4b, 0x00, 0x00, 0xe2, 0x00, 0x02,
 999        0x03, 0x0a, 0x65, 0x9d, 0x08, 0x92, 0x8f, 0x40,
1000        0x60, 0x80, 0x14, 0x90, 0x8c, 0x60, 0x14, 0x50,
1001        0x00, 0x40, 0x44, 0x00, 0xdb, 0x02, 0x3b, 0x00
1002};
1003
1004static const unsigned char XGI330_PALTiming[] = {
1005        0x21, 0x5A, 0x35, 0x6e, 0x04, 0x38, 0x3d, 0x70,
1006        0x94, 0x49, 0x01, 0x12, 0x06, 0x3e, 0x35, 0x6d,
1007        0x06, 0x14, 0x3e, 0x35, 0x6d, 0x00, 0x45, 0x2b,
1008        0x70, 0x50, 0x00, 0x9b, 0x00, 0xd9, 0x5d, 0x17,
1009        0x7d, 0x05, 0x45, 0x00, 0x00, 0xe8, 0x00, 0x02,
1010        0x0d, 0x00, 0x68, 0xb0, 0x0b, 0x92, 0x8f, 0x40,
1011        0x60, 0x80, 0x14, 0x90, 0x8c, 0x60, 0x14, 0x63,
1012        0x00, 0x40, 0x3e, 0x00, 0xe1, 0x02, 0x28, 0x00
1013};
1014
1015static const unsigned char XGI330_HiTVExtTiming[] = {
1016        0x2D, 0x60, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x64,
1017        0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1018        0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1019        0x64, 0x90, 0x33, 0x8C, 0x18, 0x36, 0x3E, 0x13,
1020        0x2A, 0xDE, 0x2A, 0x44, 0x40, 0x2A, 0x44, 0x40,
1021        0x8E, 0x8E, 0x82, 0x07, 0x0B,
1022        0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1023        0x60, 0x14, 0x3D, 0x63, 0x4F,
1024        0x27, 0x00, 0xfc, 0xff, 0x6a, 0x00
1025};
1026
1027static const unsigned char XGI330_HiTVSt1Timing[] = {
1028        0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x65,
1029        0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1030        0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1031        0x65, 0x90, 0x7B, 0xA8, 0x03, 0xF0, 0x87, 0x03,
1032        0x11, 0x15, 0x11, 0xCF, 0x10, 0x11, 0xCF, 0x10,
1033        0x35, 0x35, 0x3B, 0x69, 0x1D,
1034        0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1035        0x60, 0x04, 0x86, 0xAF, 0x5D,
1036        0x0E, 0x00, 0xfc, 0xff, 0x2d, 0x00
1037};
1038
1039static const unsigned char XGI330_HiTVSt2Timing[] = {
1040        0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x64,
1041        0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1042        0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1043        0x64, 0x90, 0x33, 0x8C, 0x18, 0x36, 0x3E, 0x13,
1044        0x2A, 0xDE, 0x2A, 0x44, 0x40, 0x2A, 0x44, 0x40,
1045        0x8E, 0x8E, 0x82, 0x07, 0x0B,
1046        0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1047        0x60, 0x14, 0x3D, 0x63, 0x4F,
1048        0x27, 0x00, 0xFC, 0xff, 0x6a, 0x00
1049};
1050
1051static const unsigned char XGI330_HiTVTextTiming[] = {
1052        0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x65,
1053        0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1054        0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1055        0x65, 0x90, 0xE7, 0xBC, 0x03, 0x0C, 0x97, 0x03,
1056        0x14, 0x78, 0x14, 0x08, 0x20, 0x14, 0x08, 0x20,
1057        0xC8, 0xC8, 0x3B, 0xD2, 0x26,
1058        0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1059        0x60, 0x04, 0x96, 0x72, 0x5C,
1060        0x11, 0x00, 0xFC, 0xFF, 0x32, 0x00
1061};
1062
1063static const unsigned char XGI330_YPbPr750pTiming[] = {
1064        0x30, 0x1d, 0xe8, 0x09, 0x09, 0xed, 0x0c, 0x0c,
1065        0x98, 0x0a, 0x01, 0x0c, 0x06, 0x0d, 0x04, 0x0a,
1066        0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x3f,
1067        0xed, 0x50, 0x70, 0x9f, 0x16, 0x59, 0x60, 0x13,
1068        0x27, 0x0b, 0x27, 0xfc, 0x30, 0x27, 0x1c, 0xb0,
1069        0x4b, 0x4b, 0x6f, 0x2f, 0x63,
1070        0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1071        0x60, 0x14, 0x73, 0x00, 0x40,
1072        0x11, 0x00, 0xfc, 0xff, 0x32, 0x00
1073};
1074
1075static const unsigned char XGI330_YPbPr525pTiming[] = {
1076        0x3E, 0x11, 0x06, 0x09, 0x0b, 0x0c, 0x0c, 0x0c,
1077        0x98, 0x0a, 0x01, 0x0d, 0x06, 0x0d, 0x04, 0x0a,
1078        0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x3f,
1079        0x0c, 0x50, 0xb2, 0x9f, 0x16, 0x59, 0x4f, 0x13,
1080        0xad, 0x11, 0xad, 0x1d, 0x40, 0x8a, 0x3d, 0xb8,
1081        0x51, 0x5e, 0x60, 0x49, 0x7d,
1082        0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1083        0x60, 0x14, 0x4B, 0x43, 0x41,
1084        0x11, 0x00, 0xFC, 0xFF, 0x32, 0x00
1085};
1086
1087static const unsigned char XGI330_YPbPr525iTiming[] = {
1088        0x1B, 0x21, 0x03, 0x09, 0x05, 0x06, 0x0C, 0x0C,
1089        0x94, 0x49, 0x01, 0x0A, 0x06, 0x0D, 0x04, 0x0A,
1090        0x06, 0x14, 0x0D, 0x04, 0x0A, 0x00, 0x85, 0x1B,
1091        0x0C, 0x50, 0x00, 0x97, 0x00, 0xDA, 0x4A, 0x17,
1092        0x7D, 0x05, 0x4B, 0x00, 0x00, 0xE2, 0x00, 0x02,
1093        0x03, 0x0A, 0x65, 0x9D, 0x08,
1094        0x92, 0x8F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1095        0x60, 0x14, 0x4B, 0x00, 0x40,
1096        0x44, 0x00, 0xDB, 0x02, 0x3B, 0x00
1097};
1098
1099static const unsigned char XGI330_HiTVGroup3Data[] = {
1100        0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0x5F,
1101        0x05, 0x21, 0xB2, 0xB2, 0x55, 0x77, 0x2A, 0xA6,
1102        0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
1103        0x8C, 0x6E, 0x60, 0x2E, 0x58, 0x48, 0x72, 0x44,
1104        0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
1105        0x4F, 0x7F, 0x03, 0xA8, 0x7D, 0x20, 0x1A, 0xA9,
1106        0x14, 0x05, 0x03, 0x7E, 0x64, 0x31, 0x14, 0x75,
1107        0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
1108};
1109
1110static const unsigned char XGI330_HiTVGroup3Simu[] = {
1111        0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0x95,
1112        0xDB, 0x20, 0xB8, 0xB8, 0x55, 0x47, 0x2A, 0xA6,
1113        0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
1114        0x8C, 0x6E, 0x60, 0x15, 0x26, 0xD3, 0xE4, 0x11,
1115        0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
1116        0x67, 0x36, 0x01, 0x47, 0x0E, 0x10, 0xBE, 0xB4,
1117        0x01, 0x05, 0x03, 0x7E, 0x65, 0x31, 0x14, 0x75,
1118        0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
1119};
1120
1121static const unsigned char XGI330_HiTVGroup3Text[] = {
1122        0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0xA7,
1123        0xF5, 0x20, 0xCE, 0xCE, 0x55, 0x47, 0x2A, 0xA6,
1124        0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
1125        0x8C, 0x6E, 0x60, 0x18, 0x2C, 0x0C, 0x20, 0x22,
1126        0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
1127        0x93, 0x3C, 0x01, 0x50, 0x2F, 0x10, 0xF4, 0xCA,
1128        0x01, 0x05, 0x03, 0x7E, 0x65, 0x31, 0x14, 0x75,
1129        0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
1130};
1131
1132static const unsigned char XGI330_Ren525pGroup3[] = {
1133        0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x13,
1134        0xB1, 0x41, 0x62, 0x62, 0xFF, 0xF4, 0x45, 0xa6,
1135        0x25, 0x2F, 0x67, 0xF6, 0xbf, 0xFF, 0x8E, 0x20,
1136        0xAC, 0xDA, 0x60, 0xFe, 0x6A, 0x9A, 0x06, 0x10,
1137        0xd1, 0x04, 0x18, 0x0a, 0xFF, 0x80, 0x00, 0x80,
1138        0x3c, 0x77, 0x00, 0xEF, 0xE0, 0x10, 0xB0, 0xE0,
1139        0x10, 0x4F, 0x0F, 0x0F, 0x05, 0x0F, 0x08, 0x6E,
1140        0x1a, 0x1F, 0x25, 0x2a, 0x4C, 0xAA, 0x01
1141};
1142
1143static const unsigned char XGI330_Ren750pGroup3[] = {
1144        0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x7a,
1145        0x54, 0x41, 0xE7, 0xE7, 0xFF, 0xF4, 0x45, 0xa6,
1146        0x25, 0x2F, 0x67, 0xF6, 0xbf, 0xFF, 0x8E, 0x20,
1147        0xAC, 0x6A, 0x60, 0x2b, 0x52, 0xCD, 0x61, 0x10,
1148        0x51, 0x04, 0x18, 0x0a, 0x1F, 0x80, 0x00, 0x80,
1149        0xFF, 0xA4, 0x04, 0x2B, 0x94, 0x21, 0x72, 0x94,
1150        0x26, 0x05, 0x01, 0x0F, 0xed, 0x0F, 0x0A, 0x64,
1151        0x18, 0x1D, 0x23, 0x28, 0x4C, 0xAA, 0x01
1152};
1153
1154static const struct SiS_LVDSData XGI_LVDS1024x768Data_1[] = {
1155        { 960, 438, 1344, 806}, /* 00 (320x200,320x400,640x200,640x400) */
1156        { 960, 388, 1344, 806}, /* 01 (320x350,640x350) */
1157        {1040, 438, 1344, 806}, /* 02 (360x400,720x400) */
1158        {1040, 388, 1344, 806}, /* 03 (720x350) */
1159        { 960, 518, 1344, 806}, /* 04 (320x240,640x480) */
1160        {1120, 638, 1344, 806}, /* 05 (400x300,800x600) */
1161        {1344, 806, 1344, 806}  /* 06 (512x384,1024x768) */
1162};
1163
1164static const struct SiS_LVDSData XGI_LVDS1024x768Data_2[] = {
1165        {1344, 806, 1344, 806},
1166        {1344, 806, 1344, 806},
1167        {1344, 806, 1344, 806},
1168        {1344, 806, 1344, 806},
1169        {1344, 806, 1344, 806},
1170        {1344, 806, 1344, 806},
1171        {1344, 806, 1344, 806},
1172        {800,  449, 1280, 801},
1173        {800,  525, 1280, 813}
1174};
1175
1176static const struct SiS_LVDSData XGI_LVDS1280x1024Data_1[] = {
1177        {1048, 442,  1688, 1066},
1178        {1048, 392,  1688, 1066},
1179        {1048, 442,  1688, 1066},
1180        {1048, 392,  1688, 1066},
1181        {1048, 522,  1688, 1066},
1182        {1208, 642,  1688, 1066},
1183        {1432, 810,  1688, 1066},
1184        {1688, 1066, 1688, 1066}
1185};
1186
1187#define XGI_LVDS1280x1024Data_2 XGI_LVDS1024x768Data_2
1188
1189static const struct SiS_LVDSData XGI_LVDS1400x1050Data_1[] = {
1190        {928,   416, 1688, 1066},
1191        {928,   366, 1688, 1066},
1192        {928,   416, 1688, 1066},
1193        {928,   366, 1688, 1066},
1194        {928,   496, 1688, 1066},
1195        {1088,  616, 1688, 1066},
1196        {1312,  784, 1688, 1066},
1197        {1568, 1040, 1688, 1066},
1198        {1688, 1066, 1688, 1066}
1199};
1200
1201static const struct SiS_LVDSData XGI_LVDS1400x1050Data_2[] = {
1202        {1688, 1066, 1688, 1066},
1203        {1688, 1066, 1688, 1066},
1204        {1688, 1066, 1688, 1066},
1205        {1688, 1066, 1688, 1066},
1206        {1688, 1066, 1688, 1066},
1207        {1688, 1066, 1688, 1066},
1208        {1688, 1066, 1688, 1066},
1209        {1688, 1066, 1688, 1066},
1210        {1688, 1066, 1688, 1066}
1211};
1212
1213/* ;;[ycchen] 12/05/02 LCDHTxLCDVT=2048x1320 */
1214static const struct SiS_LVDSData XGI_LVDS1600x1200Data_1[] = {
1215        {1088, 520,  2048, 1320}, /* 00 (320x200,320x400,640x200,640x400) */
1216        {1088, 470,  2048, 1320}, /* 01 (320x350,640x350) */
1217        {1088, 520,  2048, 1320}, /* 02 (360x400,720x400) */
1218        {1088, 470,  2048, 1320}, /* 03 (720x350) */
1219        {1088, 600,  2048, 1320}, /* 04 (320x240,640x480) */
1220        {1248, 720,  2048, 1320}, /* 05 (400x300,800x600) */
1221        {1472, 888,  2048, 1320}, /* 06 (512x384,1024x768) */
1222        {1728, 1144, 2048, 1320}, /* 07 (640x512,1280x1024) */
1223        {1848, 1170, 2048, 1320}, /* 08 (1400x1050) */
1224        {2048, 1320, 2048, 1320}  /* 09 (1600x1200) */
1225};
1226
1227static const struct SiS_LVDSData XGI_LVDSNoScalingData[] = {
1228        { 800,  449,  800,  449}, /* 00 (320x200,320x400,640x200,640x400) */
1229        { 800,  449,  800,  449}, /* 01 (320x350,640x350) */
1230        { 800,  449,  800,  449}, /* 02 (360x400,720x400) */
1231        { 800,  449,  800,  449}, /* 03 (720x350) */
1232        { 800,  525,  800,  525}, /* 04 (640x480x60Hz) */
1233        {1056,  628, 1056,  628}, /* 05 (800x600x60Hz) */
1234        {1344,  806, 1344,  806}, /* 06 (1024x768x60Hz) */
1235        {1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */
1236        {1688, 1066, 1688, 1066}, /* 08 (1400x1050x60Hz) */
1237        {2160, 1250, 2160, 1250}, /* 09 (1600x1200x60Hz) */
1238        {1688,  806, 1688,  806}  /* 0A (1280x768x60Hz) */
1239};
1240
1241static const struct SiS_LVDSData XGI_LVDS1024x768Data_1x75[] = {
1242        { 960, 438, 1312, 800}, /* 00 (320x200,320x400,640x200,640x400) */
1243        { 960, 388, 1312, 800}, /* 01 (320x350,640x350) */
1244        {1040, 438, 1312, 800}, /* 02 (360x400,720x400) */
1245        {1040, 388, 1312, 800}, /* 03 (720x350) */
1246        { 928, 512, 1312, 800}, /* 04 (320x240,640x480) */
1247        {1088, 632, 1312, 800}, /* 05 (400x300,800x600) */
1248        {1312, 800, 1312, 800}, /* 06 (512x384,1024x768) */
1249};
1250
1251static const struct SiS_LVDSData XGI_LVDS1024x768Data_2x75[] = {
1252        {1312, 800, 1312, 800}, /* ; 00 (320x200,320x400,640x200,640x400) */
1253        {1312, 800, 1312, 800}, /* ; 01 (320x350,640x350) */
1254        {1312, 800, 1312, 800}, /* ; 02 (360x400,720x400) */
1255        {1312, 800, 1312, 800}, /* ; 03 (720x350) */
1256        {1312, 800, 1312, 800}, /* ; 04 (320x240,640x480) */
1257        {1312, 800, 1312, 800}, /* ; 05 (400x300,800x600) */
1258        {1312, 800, 1312, 800}, /* ; 06 (512x384,1024x768) */
1259};
1260
1261static const struct SiS_LVDSData XGI_LVDS1280x1024Data_1x75[] = {
1262        {1048,  442, 1688, 1066  }, /* ; 00 (320x200,320x400,640x200,640x400) */
1263        {1048,  392, 1688, 1066  }, /* ; 01 (320x350,640x350) */
1264        {1128,  442, 1688, 1066  }, /* ; 02 (360x400,720x400) */
1265        {1128,  392, 1688, 1066  }, /* ; 03 (720x350) */
1266        {1048,  522, 1688, 1066  }, /* ; 04 (320x240,640x480) */
1267        {1208,  642, 1688, 1066  }, /* ; 05 (400x300,800x600) */
1268        {1432,  810, 1688, 1066  }, /* ; 06 (512x384,1024x768) */
1269        {1688, 1066, 1688, 1066 },  /* ; 06; 07 (640x512,1280x1024) */
1270};
1271
1272static const struct SiS_LVDSData XGI_LVDS1280x1024Data_2x75[] = {
1273        {1688, 1066, 1688, 1066 }, /* ; 00 (320x200,320x400,640x200,640x400) */
1274        {1688, 1066, 1688, 1066 }, /* ; 01 (320x350,640x350) */
1275        {1688, 1066, 1688, 1066 }, /* ; 02 (360x400,720x400) */
1276        {1688, 1066, 1688, 1066 }, /* ; 03 (720x350) */
1277        {1688, 1066, 1688, 1066 }, /* ; 04 (320x240,640x480) */
1278        {1688, 1066, 1688, 1066 }, /* ; 05 (400x300,800x600) */
1279        {1688, 1066, 1688, 1066 }, /* ; 06 (512x384,1024x768) */
1280        {1688, 1066, 1688, 1066 }, /* ; 06; 07 (640x512,1280x1024) */
1281};
1282
1283static const struct SiS_LVDSData XGI_LVDSNoScalingDatax75[] = {
1284        { 800,  449,  800, 449},  /* ; 00 (320x200,320x400,640x200,640x400) */
1285        { 800,  449,  800, 449},  /* ; 01 (320x350,640x350) */
1286        { 900,  449,  900, 449},  /* ; 02 (360x400,720x400) */
1287        { 900,  449,  900, 449},  /* ; 03 (720x350) */
1288        { 800,  500,  800, 500},  /* ; 04 (640x480x75Hz) */
1289        {1056,  625, 1056, 625},  /* ; 05 (800x600x75Hz) */
1290        {1312,  800, 1312, 800},  /* ; 06 (1024x768x75Hz) */
1291        {1688, 1066, 1688, 1066}, /* ; 07 (1280x1024x75Hz) */
1292        {1688, 1066, 1688, 1066}, /* ; 08 (1400x1050x75Hz)
1293                                   * ;;[ycchen] 12/19/02
1294                                   */
1295        {2160, 1250, 2160, 1250}, /* ; 09 (1600x1200x75Hz) */
1296        {1688,  806, 1688, 806},  /* ; 0A (1280x768x75Hz) */
1297};
1298
1299static const struct SiS_LVDSData XGI_LVDS1024x768Des_1[] = {
1300        {0, 1048,   0, 771}, /* 00 (320x200,320x400,640x200,640x400) */
1301        {0, 1048,   0, 771}, /* 01 (320x350,640x350) */
1302        {0, 1048,   0, 771}, /* 02 (360x400,720x400) */
1303        {0, 1048,   0, 771}, /* 03 (720x350) */
1304        {0, 1048,   0, 771}, /* 04 (640x480x60Hz) */
1305        {0, 1048,   0, 771}, /* 05 (800x600x60Hz) */
1306        {0, 1048, 805, 770}  /* 06 (1024x768x60Hz) */
1307};
1308
1309static const struct SiS_LVDSData XGI_LVDS1024x768Des_2[] = {
1310        {1142,  856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
1311        {1142,  856, 597, 562}, /* 01 (320x350,640x350) */
1312        {1142,  856, 622, 587}, /* 02 (360x400,720x400) */
1313        {1142,  856, 597, 562}, /* 03 (720x350) */
1314        {1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */
1315        {1232,  936, 722, 687}, /* 05 (800x600x60Hz) */
1316        {   0, 1048, 805, 771}  /* 06 (1024x768x60Hz) */
1317};
1318
1319static const struct SiS_LVDSData XGI_LVDS1024x768Des_3[] = {
1320        {320, 24, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
1321        {320, 24, 597, 562}, /* 01 (320x350,640x350) */
1322        {320, 24, 622, 587}, /* 02 (360x400,720x400) */
1323        {320, 24, 597, 562}, /* 03 (720x350) */
1324        {320, 24, 722, 687}  /* 04 (640x480x60Hz) */
1325};
1326
1327static const struct SiS_LVDSData XGI_LVDS1280x1024Des_1[] = {
1328        {0, 1328,    0, 1025}, /* 00 (320x200,320x400,640x200,640x400) */
1329        {0, 1328,    0, 1025}, /* 01 (320x350,640x350) */
1330        {0, 1328,    0, 1025}, /* 02 (360x400,720x400) */
1331        {0, 1328,    0, 1025}, /* 03 (720x350) */
1332        {0, 1328,    0, 1025}, /* 04 (640x480x60Hz) */
1333        {0, 1328,    0, 1025}, /* 05 (800x600x60Hz) */
1334        {0, 1328,    0, 1025}, /* 06 (1024x768x60Hz) */
1335        {0, 1328, 1065, 1024}  /* 07 (1280x1024x60Hz) */
1336};
1337
1338 /* The Display setting for DE Mode Panel */
1339static const struct SiS_LVDSData XGI_LVDS1280x1024Des_2[] = {
1340        {1368, 1008, 752, 711}, /* 00 (320x200,320x400,640x200,640x400) */
1341        {1368, 1008, 729, 688}, /* 01 (320x350,640x350) */
1342        {1408, 1048, 752, 711}, /* 02 (360x400,720x400) */
1343        {1408, 1048, 729, 688}, /* 03 (720x350) */
1344        {1368, 1008, 794, 753}, /* 04 (640x480x60Hz) */
1345        {1448, 1068, 854, 813}, /* 05 (800x600x60Hz) */
1346        {1560, 1200, 938, 897}, /* 06 (1024x768x60Hz) */
1347        {0000, 1328,   0, 1025} /* 07 (1280x1024x60Hz) */
1348};
1349
1350static const struct SiS_LVDSData XGI_LVDS1400x1050Des_1[] = {
1351        {0, 1448, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */
1352        {0, 1448, 0, 1051}, /* 01 (320x350,640x350) */
1353        {0, 1448, 0, 1051}, /* 02 (360x400,720x400) */
1354        {0, 1448, 0, 1051}, /* 03 (720x350) */
1355        {0, 1448, 0, 1051}, /* 04 (640x480x60Hz) */
1356        {0, 1448, 0, 1051}, /* 05 (800x600x60Hz) */
1357        {0, 1448, 0, 1051}, /* 06 (1024x768x60Hz) */
1358        {0, 1448, 0, 1051}, /* 07 (1280x1024x60Hz) */
1359        {0, 1448, 0, 1051}  /* 08 (1400x1050x60Hz) */
1360};
1361
1362static const struct SiS_LVDSData XGI_LVDS1400x1050Des_2[] = {
1363        {1308, 1068,  781,  766}, /* 00 (320x200,320x400,640x200,640x400) */
1364        {1308, 1068,  781,  766}, /* 01 (320x350,640x350) */
1365        {1308, 1068,  781,  766}, /* 02 (360x400,720x400) */
1366        {1308, 1068,  781,  766}, /* 03 (720x350) */
1367        {1308, 1068,  781,  766}, /* 04 (640x480x60Hz) */
1368        {1388, 1148,  841,  826}, /* 05 (800x600x60Hz) */
1369        {1490, 1250,  925,  910}, /* 06 (1024x768x60Hz) */
1370        {1608, 1368, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1371        {   0, 1448,    0, 1051}  /* 08 (1400x1050x60Hz) */
1372};
1373
1374static const struct SiS_LVDSData XGI_LVDS1600x1200Des_1[] = {
1375        {0, 1664, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
1376        {0, 1664, 0, 1201}, /* 01 (320x350,640x350) */
1377        {0, 1664, 0, 1201}, /* 02 (360x400,720x400) */
1378        {0, 1664, 0, 1201}, /* 03 (720x350) */
1379        {0, 1664, 0, 1201}, /* 04 (640x480x60Hz) */
1380        {0, 1664, 0, 1201}, /* 05 (800x600x60Hz) */
1381        {0, 1664, 0, 1201}, /* 06 (1024x768x60Hz) */
1382        {0, 1664, 0, 1201}, /* 07 (1280x1024x60Hz) */
1383        {0, 1664, 0, 1201}, /* 08 (1400x1050x60Hz) */
1384        {0, 1664, 0, 1201}  /* 09 (1600x1200x60Hz) */
1385};
1386
1387static const struct XGI330_LCDDataDesStruct2  XGI_LVDSNoScalingDesData[] = {
1388        {0,  648,  448,  405,  96, 2}, /* 00 (320x200,320x400,
1389                                        *     640x200,640x400)
1390                                        */
1391        {0,  648,  448,  355,  96, 2}, /* 01 (320x350,640x350) */
1392        {0,  648,  448,  405,  96, 2}, /* 02 (360x400,720x400) */
1393        {0,  648,  448,  355,  96, 2}, /* 03 (720x350) */
1394        {0,  648,    1,  483,  96, 2}, /* 04 (640x480x60Hz) */
1395        {0,  840,  627,  600, 128, 4}, /* 05 (800x600x60Hz) */
1396        {0, 1048,  805,  770, 136, 6}, /* 06 (1024x768x60Hz) */
1397        {0, 1328,    0, 1025, 112, 3}, /* 07 (1280x1024x60Hz) */
1398        {0, 1438,    0, 1051, 112, 3}, /* 08 (1400x1050x60Hz)*/
1399        {0, 1664,    0, 1201, 192, 3}, /* 09 (1600x1200x60Hz) */
1400        {0, 1328,    0, 0771, 112, 6}  /* 0A (1280x768x60Hz) */
1401};
1402
1403/* ; 1024x768 Full-screen */
1404static const struct SiS_LVDSData XGI_LVDS1024x768Des_1x75[] = {
1405        {0, 1040, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */
1406        {0, 1040, 0, 769}, /* ; 01 (320x350,640x350) */
1407        {0, 1040, 0, 769}, /* ; 02 (360x400,720x400) */
1408        {0, 1040, 0, 769}, /* ; 03 (720x350) */
1409        {0, 1040, 0, 769}, /* ; 04 (640x480x75Hz) */
1410        {0, 1040, 0, 769}, /* ; 05 (800x600x75Hz) */
1411        {0, 1040, 0, 769}  /* ; 06 (1024x768x75Hz) */
1412};
1413
1414/* ; 1024x768 center-screen (Enh. Mode) */
1415static const struct SiS_LVDSData XGI_LVDS1024x768Des_2x75[] = {
1416        {1142,  856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
1417        {1142,  856, 597, 562}, /* 01 (320x350,640x350) */
1418        {1142,  856, 622, 587}, /* 02 (360x400,720x400) */
1419        {1142,  856, 597, 562}, /* 03 (720x350) */
1420        {1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */
1421        {1232,  936, 722, 687}, /* 05 (800x600x60Hz) */
1422        {   0, 1048, 805, 771}  /* 06 (1024x768x60Hz) */
1423};
1424
1425/* ; 1024x768 center-screen (St.Mode) */
1426static const struct SiS_LVDSData XGI_LVDS1024x768Des_3x75[] =  {
1427        {320, 24, 622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
1428        {320, 24, 597, 562}, /* ; 01 (320x350,640x350) */
1429        {320, 24, 622, 587}, /* ; 02 (360x400,720x400) */
1430        {320, 24, 597, 562}, /* ; 03 (720x350) */
1431        {320, 24, 722, 687}  /* ; 04 (640x480x60Hz) */
1432};
1433
1434static const struct SiS_LVDSData XGI_LVDS1280x1024Des_1x75[] = {
1435        {0, 1296, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
1436        {0, 1296, 0, 1025}, /* ; 01 (320x350,640x350) */
1437        {0, 1296, 0, 1025}, /* ; 02 (360x400,720x400) */
1438        {0, 1296, 0, 1025}, /* ; 03 (720x350) */
1439        {0, 1296, 0, 1025}, /* ; 04 (640x480x75Hz) */
1440        {0, 1296, 0, 1025}, /* ; 05 (800x600x75Hz) */
1441        {0, 1296, 0, 1025}, /* ; 06 (1024x768x75Hz) */
1442        {0, 1296, 0, 1025}  /* ; 07 (1280x1024x75Hz) */
1443};
1444
1445/* The Display setting for DE Mode Panel */
1446/* Set DE as default */
1447static const struct SiS_LVDSData XGI_LVDS1280x1024Des_2x75[] = {
1448        {1368,  976, 752,  711}, /* ; 00 (320x200,320x400,640x200,640x400) */
1449        {1368,  976, 729,  688}, /* ; 01 (320x350,640x350) */
1450        {1408,  976, 752,  711}, /* ; 02 (360x400,720x400) */
1451        {1408,  976, 729,  688}, /* ; 03 (720x350) */
1452        {1368,  976, 794,  753}, /* ; 04 (640x480x75Hz) */
1453        {1448, 1036, 854,  813}, /* ; 05 (800x600x75Hz) */
1454        {1560, 1168, 938,  897}, /* ; 06 (1024x768x75Hz) */
1455        {   0, 1296,   0, 1025}  /* ; 07 (1280x1024x75Hz) */
1456};
1457
1458/* Scaling LCD 75Hz */
1459static const struct XGI330_LCDDataDesStruct2 XGI_LVDSNoScalingDesDatax75[] = {
1460        {0,  648, 448,  405,  96, 2}, /* ; 00 (320x200,320x400,
1461                                       *       640x200,640x400)
1462                                       */
1463        {0,  648, 448,  355,  96, 2}, /* ; 01 (320x350,640x350) */
1464        {0,  729, 448,  405, 108, 2}, /* ; 02 (360x400,720x400) */
1465        {0,  729, 448,  355, 108, 2}, /* ; 03 (720x350) */
1466        {0,  656,   0,  481,  64, 3}, /* ; 04 (640x480x75Hz) */
1467        {0,  816,   0,  601,  80, 3}, /* ; 05 (800x600x75Hz) */
1468        {0, 1040,   0,  769,  96, 3}, /* ; 06 (1024x768x75Hz) */
1469        {0, 1296,   0, 1025, 144, 3}, /* ; 07 (1280x1024x75Hz) */
1470        {0, 1448,   0, 1051, 112, 3}, /* ; 08 (1400x1050x75Hz) */
1471        {0, 1664,   0, 1201, 192, 3}, /* ; 09 (1600x1200x75Hz) */
1472        {0, 1328,   0,  771, 112, 6}  /* ; 0A (1280x768x75Hz) */
1473};
1474
1475/* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1476static const struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_1_H[] = {
1477        { {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} }, /* 00 (320x) */
1478        { {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} }, /* 01 (360x) */
1479        { {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} }, /* 02 (400x) */
1480        { {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1481        { {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 04 (640x) */
1482        { {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 05 (720x) */
1483        { {0x87, 0x63, 0x8B, 0x69, 0x1A, 0x00, 0x26, 0x00} }, /* 06 (800x) */
1484        { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} }  /* 07 (1024x) */
1485};
1486
1487/* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1488static const struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_1_H[] = {
1489        { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 00 (320x) */
1490        { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 01 (360x) */
1491        { {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00 } }, /* 02 (400x) */
1492        { {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00 } }, /* 03 (512x) */
1493        { {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 04 (640x) */
1494        { {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 05 (720x) */
1495        { {0x92, 0x63, 0x96, 0x6C, 0x1A, 0x00, 0x06, 0x00 } }, /* 06 (800x) */
1496        { {0xAE, 0x7F, 0x92, 0x88, 0x96, 0x00, 0x02, 0x00 } }, /* 07 (1024x) */
1497        { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00 } }  /* 08 (1280x) */
1498};
1499
1500/* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1501static const struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_2_H[] = {
1502        { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 00 (320x) */
1503        { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 01 (360x) */
1504        { {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1505        { {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1506        { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 04 (640x) */
1507        { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 05 (720x) */
1508        { {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} }, /* 06 (800x) */
1509        { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} }  /* 07 (1024x) */
1510};
1511
1512/* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1513static const struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_2_H[] = {
1514        { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 00 (320x) */
1515        { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 01 (360x) */
1516        { {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1517        { {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1518        { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 04 (640x) */
1519        { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 05 (720x) */
1520        { {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} }, /* 06 (800x) */
1521        { {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} }, /* 07 (1024x) */
1522        { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} }  /* 08 (1280x) */
1523};
1524
1525/* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1526static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_1_H[] = {
1527        { {0x47, 0x27, 0x8B, 0x2C, 0x1A, 0x00, 0x05, 0x00} }, /* 00 (320x) */
1528        { {0x47, 0x27, 0x8B, 0x30, 0x1E, 0x00, 0x05, 0x00} }, /* 01 (360x) */
1529        { {0x51, 0x31, 0x95, 0x36, 0x04, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1530        { {0x5F, 0x3F, 0x83, 0x44, 0x92, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1531        { {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 04 (640x) */
1532        { {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 05 (720x) */
1533        { {0x83, 0x63, 0x87, 0x68, 0x16, 0x00, 0x06, 0x00} }, /* 06 (800x) */
1534        { {0x9F, 0x7F, 0x83, 0x84, 0x92, 0x00, 0x02, 0x00} }, /* 07 (1024x) */
1535        { {0xBF, 0x9F, 0x83, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 08 (1280x) */
1536        { {0xCE, 0xAE, 0x92, 0xB3, 0x01, 0x00, 0x03, 0x00} }  /* 09 (1400x) */
1537};
1538
1539/* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1540static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_2_H[] = {
1541        { {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 00 (320x) */
1542        { {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 01 (360x) */
1543        { {0x76, 0x31, 0x9A, 0x48, 0x9F, 0x00, 0x41, 0x00} }, /* 02 (400x) */
1544        { {0x76, 0x3F, 0x9A, 0x4F, 0x96, 0x00, 0x41, 0x00} }, /* 03 (512x) */
1545        { {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 04 (640x) */
1546        { {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 05 (720x) */
1547        { {0xCE, 0x63, 0x92, 0x96, 0x04, 0x00, 0x07, 0x00} }, /* 06 (800x) */
1548        { {0xCE, 0x7F, 0x92, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 07 (1024x) */
1549        { {0xCE, 0x9F, 0x92, 0xB4, 0x02, 0x00, 0x03, 0x00} }, /* 08 (1280x) */
1550        { {0xCE, 0xAE, 0x92, 0xBC, 0x0A, 0x00, 0x03, 0x00} }  /* 09 (1400x) */
1551};
1552
1553/* ;302lv channelA [ycchen] 12/05/02 LCDHT=2048 */
1554/* ; CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1555static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11600x1200_1_H[] = {
1556        { {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 00 (320x) */
1557        { {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 01 (360x) */
1558        { {0x65, 0x31, 0x89, 0x3C, 0x94, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1559        { {0x73, 0x3F, 0x97, 0x4A, 0x82, 0x00, 0x05, 0x00} }, /* 03 (512x) */
1560        { {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 04 (640x) */
1561        { {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 05 (720x) */
1562        { {0x97, 0x63, 0x9B, 0x65, 0x1D, 0x00, 0x06, 0xF0} }, /* 06 (800x) */
1563        { {0xB3, 0x7F, 0x97, 0x81, 0x99, 0x00, 0x02, 0x00} }, /* 07 (1024x) */
1564        { {0xD3, 0x9F, 0x97, 0xA1, 0x19, 0x00, 0x07, 0x00} }, /* 08 (1280x) */
1565        { {0xE2, 0xAE, 0x86, 0xB9, 0x91, 0x00, 0x03, 0x00} }, /* 09 (1400x) */
1566        { {0xFB, 0xC7, 0x9F, 0xC9, 0x81, 0x00, 0x07, 0x00} }  /* 0A (1600x) */
1567};
1568
1569/* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
1570static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_V[] = {
1571        { {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} }, /* 00 (x350) */
1572        { {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} }, /* 01 (x400) */
1573        { {0x04, 0x3E, 0xE2, 0x89, 0xDF, 0x05, 0x00} }, /* 02 (x480) */
1574        { {0x7C, 0xF0, 0x5A, 0x8F, 0x57, 0x7D, 0xA0} }, /* 03 (x600) */
1575        { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }  /* 04 (x768) */
1576};
1577
1578/* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1579static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_V[] = {
1580        { {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} }, /* 00 (x350) */
1581        { {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} }, /* 01 (x400) */
1582        { {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} }, /* 02 (x480) */
1583        { {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} }, /* 03 (x600) */
1584        { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }  /* 04 (x768) */
1585};
1586
1587/* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1588static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_V[] = {
1589        { {0x86, 0x1F, 0x5E, 0x82, 0x5D, 0x87, 0x00} }, /* 00 (x350) */
1590        { {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} }, /* 01 (x400) */
1591        { {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} }, /* 02 (x480) */
1592        { {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} }, /* 03 (x600) */
1593        { {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} }, /* 04 (x768) */
1594        { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} }  /* 05 (x1024) */
1595};
1596
1597/* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1598static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_V[] = {
1599        { {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} }, /* 00 (x350) */
1600        { {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} }, /* 01 (x400) */
1601        { {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} }, /* 02 (x480) */
1602        { {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} }, /* 03 (x600) */
1603        { {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} }, /* 04 (x768) */
1604        { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} }  /* 05 (x1024) */
1605};
1606
1607/* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1608static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_1_V[] = {
1609        { {0x6C, 0x1F, 0x60, 0x84, 0x5D, 0x6D, 0x10} }, /* 00 (x350) */
1610        { {0x9E, 0x1F, 0x93, 0x86, 0x8F, 0x9F, 0x30} }, /* 01 (x400) */
1611        { {0xEE, 0x1F, 0xE2, 0x86, 0xDF, 0xEF, 0x10} }, /* 02 (x480) */
1612        { {0x66, 0xF0, 0x5A, 0x8e, 0x57, 0x67, 0xA0} }, /* 03 (x600) */
1613        { {0x0E, 0xF5, 0x02, 0x86, 0xFF, 0x0F, 0x90} }, /* 04 (x768) */
1614        { {0x0E, 0x5A, 0x02, 0x86, 0xFF, 0x0F, 0x89} }, /* 05 (x1024) */
1615        { {0x28, 0x10, 0x1A, 0x80, 0x19, 0x29, 0x0F} }  /* 06 (x1050) */
1616};
1617
1618/* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1619static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_2_V[] = {
1620        { {0x28, 0x92, 0xB6, 0x83, 0xB5, 0xCF, 0x81} }, /* 00 (x350) */
1621        { {0x28, 0x92, 0xD5, 0x82, 0xD4, 0xEE, 0x81} }, /* 01 (x400) */
1622        { {0x28, 0x92, 0xFD, 0x8A, 0xFC, 0x16, 0xB1} }, /* 02 (x480) */
1623        { {0x28, 0xD4, 0x39, 0x86, 0x57, 0x29, 0x81} }, /* 03 (x600) */
1624        { {0x28, 0xD4, 0x8D, 0x9A, 0xFF, 0x29, 0xA1} }, /* 04 (x768) */
1625        { {0x28, 0x5A, 0x0D, 0x9A, 0xFF, 0x29, 0xA9} }, /* 05 (x1024) */
1626        { {0x28, 0x10, 0x1A, 0x87, 0x19, 0x29, 0x8F} }  /* 06 (x1050) */
1627};
1628
1629/* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
1630static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11600x1200_1_V[] = {
1631        { {0xd4, 0x1F, 0x81, 0x84, 0x5D, 0xd5, 0x10} }, /* 00 (x350) */
1632        { {0x06, 0x3e, 0xb3, 0x86, 0x8F, 0x07, 0x20} }, /* 01 (x400) */
1633        { {0x56, 0xba, 0x03, 0x86, 0xDF, 0x57, 0x00} }, /* 02 (x480) */
1634        { {0xce, 0xF0, 0x7b, 0x8e, 0x57, 0xcf, 0xa0} }, /* 03 (x600) */
1635        { {0x76, 0xF5, 0x23, 0x86, 0xFF, 0x77, 0x90} }, /* 04 (x768) */
1636        { {0x76, 0x5A, 0x23, 0x86, 0xFF, 0x77, 0x89} }, /* 05 (x1024) */
1637        { {0x90, 0x10, 0x1A, 0x8E, 0x19, 0x91, 0x2F} }, /* 06 (x1050) */
1638        { {0x26, 0x11, 0xd3, 0x86, 0xaF, 0x27, 0x3f} }  /* 07 (x1200) */
1639};
1640
1641/* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1642static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_1_Hx75[] = {
1643        { {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} },/* ; 00 (320x) */
1644        { {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} },/* ; 01 (360x) */
1645        { {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} },/* ; 02 (400x) */
1646        { {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1647        { {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 04 (640x) */
1648        { {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 05 (720x) */
1649        { {0x83, 0x63, 0x87, 0x68, 0x14, 0x00, 0x26, 0x00} },/* ; 06 (800x) */
1650        { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */
1651};
1652
1653/* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
1654static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_Vx75[] = {
1655        { {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} },/* ; 00 (x350) */
1656        { {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} },/* ; 01 (x400) */
1657        { {0xFE, 0x1F, 0xE0, 0x84, 0xDF, 0xFF, 0x10} },/* ; 02 (x480) */
1658        { {0x76, 0xF0, 0x58, 0x8C, 0x57, 0x77, 0xA0} },/* ; 03 (x600) */
1659        { {0x1E, 0xF5, 0x00, 0x83, 0xFF, 0x1F, 0x90} } /* ; 04 (x768) */
1660};
1661
1662/* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1663static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_2_Hx75[] = {
1664        { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 00 (320x) */
1665        { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 01 (360x) */
1666        { {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
1667        { {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1668        { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 04 (640x) */
1669        { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 05 (720x) */
1670        { {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} },/* ; 06 (800x) */
1671        { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */
1672};
1673
1674/* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1675static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_Vx75[] = {
1676        { {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} },/* ; 00 (x350) */
1677        { {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} },/* ; 01 (x400) */
1678        { {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} },/* ; 02 (x480) */
1679        { {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} },/* ; 03 (x600) */
1680        { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} } /* ; 04 (x768) */
1681};
1682
1683/* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1684static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_1_Hx75[] = {
1685        { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 00 (320x) */
1686        { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 01 (360x) */
1687        { {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
1688        { {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1689        { {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 04 (640x) */
1690        { {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 05 (720x) */
1691        { {0x92, 0x63, 0x96, 0x68, 0x1A, 0x00, 0x06, 0x00} },/* ; 06 (800x) */
1692        { {0xAE, 0x7F, 0x92, 0x84, 0x96, 0x00, 0x02, 0x00} },/* ; 07 (1024x) */
1693        { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */
1694};
1695
1696/* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1697static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_Vx75[] = {
1698        { {0x86, 0xD1, 0xBC, 0x80, 0xBB, 0xE5, 0x00} },/* ; 00 (x350) */
1699        { {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} },/* ; 01 (x400) */
1700        { {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} },/* ; 02 (x480) */
1701        { {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} },/* ; 03 (x600) */
1702        { {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} },/* ; 04 (x768) */
1703        { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */
1704};
1705
1706/* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1707static const struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_2_Hx75[] = {
1708        { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 00 (320x) */
1709        { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 01 (360x) */
1710        { {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
1711        { {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1712        { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 04 (640x) */
1713        { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 05 (720x) */
1714        { {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} },/* ; 06 (800x) */
1715        { {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} },/* ; 07 (1024x) */
1716        { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */
1717};
1718
1719/* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1720static const struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_Vx75[] = {
1721        { {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} },/* ; 00 (x350) */
1722        { {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} },/* ; 01 (x400) */
1723        { {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} },/* ; 02 (x480) */
1724        { {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} },/* ; 03 (x600) */
1725        { {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} },/* ; 04 (x768) */
1726        { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */
1727};
1728
1729/*add for new UNIVGABIOS*/
1730static const struct XGI330_LCDDataTablStruct XGI_LCDDataTable[] = {
1731        {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCD1024x768Data },
1732        {Panel_1024x768, 0x0019, 0x0000, XGI_StLCD1024x768Data },
1733        {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCD1024x768Data },
1734        {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCD1280x1024Data },
1735        {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCD1280x1024Data },
1736        {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCD1280x1024Data },
1737        {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcd_1400x1050 },
1738        {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcd_1400x1050 },
1739        {Panel_1400x1050, 0x0018, 0x0010, XGI_CetLCD1400x1050Data },
1740        {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCD1600x1200Data },
1741        {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCD1600x1200Data },
1742        {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingData },
1743        {Panel_1024x768x75, 0x0019, 0x0001, XGI_ExtLCD1024x768x75Data },
1744        {Panel_1024x768x75, 0x0019, 0x0000, XGI_ExtLCD1024x768x75Data },
1745        {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCD1024x768x75Data },
1746        {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcd_1280x1024x75 },
1747        {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcd_1280x1024x75 },
1748        {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCD1280x1024x75Data },
1749        {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDatax75 },
1750        {0xFF, 0x0000, 0x0000, NULL } /* End of table */
1751};
1752
1753static const struct XGI330_LCDDataTablStruct XGI_LCDDesDataTable[] = {
1754        {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCDDes1024x768Data },
1755        {Panel_1024x768, 0x0019, 0x0000, XGI_StLCDDes1024x768Data },
1756        {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCDDes1024x768Data },
1757        {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCDDes1280x1024Data },
1758        {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCDDes1280x1024Data },
1759        {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCDDes1280x1024Data },
1760        {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcddes_1400x1050 },
1761        {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcddes_1400x1050 },
1762        {Panel_1400x1050, 0x0418, 0x0010, XGI_CetLCDDes1400x1050Data },
1763        {Panel_1400x1050, 0x0418, 0x0410, XGI_CetLCDDes1400x1050Data2 },
1764        {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCDDes1600x1200Data },
1765        {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCDDes1600x1200Data },
1766        {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingDesData },
1767        {Panel_1024x768x75, 0x0019, 0x0001, xgifb_lcddes_1024x768x75 },
1768        {Panel_1024x768x75, 0x0019, 0x0000, xgifb_lcddes_1024x768x75 },
1769        {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCDDes1024x768x75Data },
1770        {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcddes_1280x1024x75 },
1771        {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcddes_1280x1024x75 },
1772        {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCDDes1280x1024x75Data },
1773        {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDesDatax75 },
1774        {0xFF, 0x0000, 0x0000, NULL }
1775};
1776
1777static const struct XGI330_LCDDataTablStruct xgifb_lcddldes[] = {
1778        {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCDDes1024x768Data },
1779        {Panel_1024x768, 0x0019, 0x0000, XGI_StLCDDes1024x768Data },
1780        {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCDDes1024x768Data },
1781        {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCDDLDes1280x1024Data },
1782        {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCDDLDes1280x1024Data },
1783        {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCDDLDes1280x1024Data },
1784        {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcddldes_1400x1050 },
1785        {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcddldes_1400x1050 },
1786        {Panel_1400x1050, 0x0418, 0x0010, XGI_CetLCDDes1400x1050Data },
1787        {Panel_1400x1050, 0x0418, 0x0410, XGI_CetLCDDes1400x1050Data2 },
1788        {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCDDLDes1600x1200Data },
1789        {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCDDLDes1600x1200Data },
1790        {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingDesData },
1791        {Panel_1024x768x75, 0x0019, 0x0001, xgifb_lcddes_1024x768x75 },
1792        {Panel_1024x768x75, 0x0019, 0x0000, xgifb_lcddes_1024x768x75 },
1793        {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCDDes1024x768x75Data },
1794        {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcddldes_1280x1024x75 },
1795        {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcddldes_1280x1024x75 },
1796        {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCDDLDes1280x1024x75Data },
1797        {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDesDatax75 },
1798        {0xFF, 0x0000, 0x0000, NULL }
1799};
1800
1801static const struct XGI330_LCDDataTablStruct xgifb_epllcd_crt1_h[] = {
1802        {Panel_1024x768, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_H },
1803        {Panel_1024x768, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_H },
1804        {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_H },
1805        {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_H },
1806        {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDSCRT11400x1050_1_H },
1807        {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDSCRT11400x1050_2_H },
1808        {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDSCRT11600x1200_1_H },
1809        {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_Hx75 },
1810        {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_Hx75 },
1811        {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_Hx75 },
1812        {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_Hx75 },
1813        {0xFF, 0x0000, 0x0000, NULL }
1814};
1815
1816static const struct XGI330_LCDDataTablStruct xgifb_epllcd_crt1_v[] = {
1817        {Panel_1024x768, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_V },
1818        {Panel_1024x768, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_V },
1819        {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_V },
1820        {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_V },
1821        {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDSCRT11400x1050_1_V },
1822        {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDSCRT11400x1050_2_V },
1823        {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDSCRT11600x1200_1_V },
1824        {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_Vx75 },
1825        {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_Vx75 },
1826        {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_Vx75 },
1827        {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_Vx75 },
1828        {0xFF, 0x0000, 0x0000, NULL }
1829};
1830
1831static const struct XGI330_LCDDataTablStruct XGI_EPLLCDDataPtr[] = {
1832        {Panel_1024x768, 0x0018, 0x0000, XGI_LVDS1024x768Data_1 },
1833        {Panel_1024x768, 0x0018, 0x0010, XGI_LVDS1024x768Data_2 },
1834        {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDS1280x1024Data_1 },
1835        {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDS1280x1024Data_2 },
1836        {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDS1400x1050Data_1 },
1837        {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDS1400x1050Data_2 },
1838        {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDS1600x1200Data_1 },
1839        {PanelRef60Hz, 0x0008, 0x0008, XGI_LVDSNoScalingData },
1840        {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDS1024x768Data_1x75 },
1841        {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDS1024x768Data_2x75 },
1842        {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDS1280x1024Data_1x75 },
1843        {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDS1280x1024Data_2x75 },
1844        {PanelRef75Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDatax75 },
1845        {0xFF, 0x0000, 0x0000, NULL }
1846};
1847
1848static const struct XGI330_LCDDataTablStruct XGI_EPLLCDDesDataPtr[] = {
1849        {Panel_1024x768, 0x0018, 0x0000, XGI_LVDS1024x768Des_1 },
1850        {Panel_1024x768, 0x0618, 0x0410, XGI_LVDS1024x768Des_3 },
1851        {Panel_1024x768, 0x0018, 0x0010, XGI_LVDS1024x768Des_2 },
1852        {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDS1280x1024Des_1 },
1853        {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDS1280x1024Des_2 },
1854        {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDS1400x1050Des_1 },
1855        {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDS1400x1050Des_2 },
1856        {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDS1600x1200Des_1 },
1857        {PanelRef60Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDesData },
1858        {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDS1024x768Des_1x75 },
1859        {Panel_1024x768x75, 0x0618, 0x0410, XGI_LVDS1024x768Des_3x75 },
1860        {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDS1024x768Des_2x75 },
1861        {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDS1280x1024Des_1x75 },
1862        {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDS1280x1024Des_2x75 },
1863        {PanelRef75Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDesDatax75 },
1864        {0xFF, 0x0000, 0x0000, NULL }
1865};
1866
1867static const struct XGI330_TVDataTablStruct XGI_TVDataTable[] = {
1868        {0x09E1, 0x0001, XGI_ExtPALData},
1869        {0x09E1, 0x0000, XGI_ExtNTSCData},
1870        {0x09E1, 0x0801, XGI_StPALData},
1871        {0x09E1, 0x0800, XGI_StNTSCData},
1872        {0x49E0, 0x0100, XGI_ExtHiTVData},
1873        {0x49E0, 0x4100, XGI_St2HiTVData},
1874        {0x49E0, 0x4900, XGI_St1HiTVData},
1875        {0x09E0, 0x0020, XGI_ExtYPbPr525iData},
1876        {0x09E0, 0x0040, XGI_ExtYPbPr525pData},
1877        {0x09E0, 0x0080, XGI_ExtYPbPr750pData},
1878        {0x09E0, 0x0820, XGI_StYPbPr525iData},
1879        {0x09E0, 0x0840, XGI_StYPbPr525pData},
1880        {0x09E0, 0x0880, XGI_StYPbPr750pData},
1881        {0xffff, 0x0000, XGI_ExtNTSCData},
1882};
1883
1884/* Dual link only */
1885static const struct XGI330_LCDCapStruct XGI_LCDDLCapList[] = {
1886/* LCDCap1024x768 */
1887        {Panel_1024x768, DefaultLCDCap, 0x88, 0x06, VCLK65_315,
1888        0x6C, 0xC3, 0x35, 0x62,
1889        0x0A, 0xC0, 0x28, 0x10},
1890/* LCDCap1280x1024 */
1891        {Panel_1280x1024, XGI_LCDDualLink + DefaultLCDCap,
1892        0x70, 0x03, VCLK108_2_315,
1893        0x70, 0x44, 0xF8, 0x2F,
1894        0x0A, 0xC0, 0x30, 0x10},
1895/* LCDCap1400x1050 */
1896        {Panel_1400x1050, XGI_LCDDualLink + DefaultLCDCap,
1897        0x70, 0x03, VCLK108_2_315,
1898         0x70, 0x44, 0xF8, 0x2F,
1899         0x0A, 0xC0, 0x30, 0x10},
1900/* LCDCap1600x1200 */
1901        {Panel_1600x1200, XGI_LCDDualLink + DefaultLCDCap,
1902        0xC0, 0x03, VCLK162,
1903         0x43, 0x22, 0x70, 0x24,
1904         0x0A, 0xC0, 0x30, 0x10},
1905/* LCDCap1024x768x75 */
1906        {Panel_1024x768x75, DefaultLCDCap, 0x60, 0, VCLK78_75,
1907         0x2B, 0x61, 0x2B, 0x61,
1908         0x0A, 0xC0, 0x28, 0x10},
1909/* LCDCap1280x1024x75 */
1910        {Panel_1280x1024x75, XGI_LCDDualLink + DefaultLCDCap,
1911         0x90, 0x03, VCLK135_5,
1912         0x54, 0x42, 0x4A, 0x61,
1913         0x0A, 0xC0, 0x30, 0x10},
1914/* LCDCapDefault */
1915        {0xFF, DefaultLCDCap, 0x88, 0x06, VCLK65_315,
1916        0x6C, 0xC3, 0x35, 0x62,
1917        0x0A, 0xC0, 0x28, 0x10}
1918};
1919
1920static const struct XGI330_LCDCapStruct XGI_LCDCapList[] = {
1921/* LCDCap1024x768 */
1922        {Panel_1024x768, DefaultLCDCap, 0x88, 0x06, VCLK65_315,
1923        0x6C, 0xC3, 0x35, 0x62,
1924        0x0A, 0xC0, 0x28, 0x10},
1925/* LCDCap1280x1024 */
1926        {Panel_1280x1024, DefaultLCDCap,
1927        0x70, 0x03, VCLK108_2_315,
1928        0x70, 0x44, 0xF8, 0x2F,
1929        0x0A, 0xC0, 0x30, 0x10},
1930/* LCDCap1400x1050 */
1931        {Panel_1400x1050, DefaultLCDCap,
1932         0x70, 0x03, VCLK108_2_315,
1933         0x70, 0x44, 0xF8, 0x2F,
1934         0x0A, 0xC0, 0x30, 0x10},
1935/* LCDCap1600x1200 */
1936        {Panel_1600x1200, DefaultLCDCap,
1937         0xC0, 0x03, VCLK162,
1938         0x5A, 0x23, 0x5A, 0x23,
1939         0x0A, 0xC0, 0x30, 0x10},
1940/* LCDCap1024x768x75 */
1941        {Panel_1024x768x75, DefaultLCDCap, 0x60, 0, VCLK78_75,
1942         0x2B, 0x61, 0x2B, 0x61,
1943         0x0A, 0xC0, 0x28, 0x10},
1944/* LCDCap1280x1024x75 */
1945        {Panel_1280x1024x75, DefaultLCDCap,
1946         0x90, 0x03, VCLK135_5,
1947         0x54, 0x42, 0x4A, 0x61,
1948         0x0A, 0xC0, 0x30, 0x10},
1949/* LCDCapDefault */
1950        {0xFF, DefaultLCDCap, 0x88, 0x06, VCLK65_315,
1951        0x6C, 0xC3, 0x35, 0x62,
1952        0x0A, 0xC0, 0x28, 0x10}
1953};
1954
1955const struct XGI_Ext2Struct XGI330_RefIndex[] = {
1956        {Mode32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175,
1957        0x00, 0x10, 0x59, 320, 200},/* 00 */
1958        {Mode32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175,
1959        0x00, 0x10, 0x00, 320, 400},/* 01 */
1960        {Mode32Bpp + SupportAllCRT2 + SyncNN, RES320x240, VCLK25_175,
1961        0x04, 0x20, 0x50, 320, 240},/* 02 */
1962        {Mode32Bpp + SupportAllCRT2 + SyncPP, RES400x300, VCLK40,
1963        0x05, 0x32, 0x51, 400, 300},/* 03 */
1964        {Mode32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES512x384,
1965        VCLK65_315, 0x06, 0x43, 0x52, 512, 384},/* 04 */
1966        {Mode32Bpp + SupportAllCRT2 + SyncPN, RES640x400, VCLK25_175,
1967        0x00, 0x14, 0x2f, 640, 400},/* 05 */
1968        {Mode32Bpp + SupportAllCRT2 + SyncNN, RES640x480x60, VCLK25_175,
1969        0x04, 0x24, 0x2e, 640, 480},/* 06 640x480x60Hz (LCD 640x480x60z) */
1970        {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x72, VCLK31_5,
1971        0x04, 0x24, 0x2e, 640, 480},/* 07 640x480x72Hz (LCD 640x480x70Hz) */
1972        {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x75, VCLK31_5,
1973        0x47, 0x24, 0x2e, 640, 480},/* 08 640x480x75Hz (LCD 640x480x75Hz) */
1974        {Mode32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x85, VCLK36,
1975        0x8A, 0x24, 0x2e, 640, 480},/* 09 640x480x85Hz */
1976        {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x100, VCLK43_163,
1977        0x00, 0x24, 0x2e, 640, 480},/* 0a 640x480x100Hz */
1978        {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x120, VCLK52_406,
1979        0x00, 0x24, 0x2e, 640, 480},/* 0b 640x480x120Hz */
1980        {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x160, VCLK72_852,
1981        0x00, 0x24, 0x2e, 640, 480},/* 0c 640x480x160Hz */
1982        {Mode32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x200, VCLK86_6,
1983        0x00, 0x24, 0x2e, 640, 480},/* 0d 640x480x200Hz */
1984        {Mode32Bpp + NoSupportLCD + SyncPP, RES800x600x56, VCLK36,
1985        0x05, 0x36, 0x6a, 800, 600},/* 0e 800x600x56Hz */
1986        {Mode32Bpp + NoSupportTV + SyncPP, RES800x600x60, VCLK40,
1987        0x05, 0x36, 0x6a, 800, 600},/* 0f 800x600x60Hz (LCD 800x600x60Hz) */
1988        {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x72, VCLK50,
1989        0x48, 0x36, 0x6a, 800, 600},/* 10 800x600x72Hz (LCD 800x600x70Hz) */
1990        {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x75, VCLK49_5,
1991        0x8B, 0x36, 0x6a, 800, 600},/* 11 800x600x75Hz (LCD 800x600x75Hz) */
1992        {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x600x85, VCLK56_25,
1993        0x00, 0x36, 0x6a, 800, 600},/* 12 800x600x85Hz */
1994        {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x100, VCLK68_179,
1995        0x00, 0x36, 0x6a, 800, 600},/* 13 800x600x100Hz */
1996        {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x120, VCLK83_95,
1997        0x00, 0x36, 0x6a, 800, 600},/* 14 800x600x120Hz */
1998        {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x160, VCLK116_406,
1999        0x00, 0x36, 0x6a, 800, 600},/* 15 800x600x160Hz */
2000        {Mode32Bpp + InterlaceMode + SyncPP, RES1024x768x43, VCLK44_9,
2001        0x00, 0x47, 0x37, 1024, 768},/* 16 1024x768x43Hz */
2002        /* 17 1024x768x60Hz (LCD 1024x768x60Hz) */
2003        {Mode32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES1024x768x60,
2004        VCLK65_315, 0x06, 0x47, 0x37, 1024, 768},
2005        {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES1024x768x70, VCLK75,
2006        0x49, 0x47, 0x37, 1024, 768},/* 18 1024x768x70Hz (LCD 1024x768x70Hz) */
2007        {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1024x768x75, VCLK78_75,
2008        0x00, 0x47, 0x37, 1024, 768},/* 19 1024x768x75Hz (LCD 1024x768x75Hz) */
2009        {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x768x85, VCLK94_5,
2010        0x8C, 0x47, 0x37, 1024, 768},/* 1a 1024x768x85Hz */
2011        {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x100, VCLK113_309,
2012        0x00, 0x47, 0x37, 1024, 768},/* 1b 1024x768x100Hz */
2013        {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x120, VCLK139_054,
2014        0x00, 0x47, 0x37, 1024, 768},/* 1c 1024x768x120Hz */
2015        {Mode32Bpp + SupportLCD + SyncPP, RES1280x960x60, VCLK108_2_315,
2016        0x08, 0x58, 0x7b, 1280, 960},/* 1d 1280x960x60Hz */
2017        {Mode32Bpp + InterlaceMode + SyncPP, RES1280x1024x43, VCLK78_75,
2018        0x00, 0x58, 0x3a, 1280, 1024},/* 1e 1280x1024x43Hz */
2019        {Mode32Bpp + NoSupportTV + SyncPP, RES1280x1024x60, VCLK108_2_315,
2020        0x07, 0x58, 0x3a, 1280, 1024},/*1f 1280x1024x60Hz (LCD 1280x1024x60Hz)*/
2021        {Mode32Bpp + NoSupportTV + SyncPP, RES1280x1024x75, VCLK135_5,
2022        0x00, 0x58, 0x3a, 1280, 1024},/*20 1280x1024x75Hz (LCD 1280x1024x75Hz)*/
2023        {Mode32Bpp + SyncPP, RES1280x1024x85, VCLK157_5,
2024        0x00, 0x58, 0x3a, 1280, 1024},/* 21 1280x1024x85Hz */
2025        /* 22 1600x1200x60Hz */
2026        {Mode32Bpp + SupportLCD + SyncPP + SupportCRT2in301C,
2027        RES1600x1200x60, VCLK162, 0x09, 0x7A, 0x3c, 1600, 1200},
2028        {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x65, VCLK175,
2029        0x00, 0x69, 0x3c, 1600, 1200},/* 23 1600x1200x65Hz */
2030        {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x70, VCLK189,
2031        0x00, 0x69, 0x3c, 1600, 1200},/* 24 1600x1200x70Hz */
2032        {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x75, VCLK202_5,
2033        0x00, 0x69, 0x3c, 1600, 1200},/* 25 1600x1200x75Hz */
2034        {Mode32Bpp + SyncPP, RES1600x1200x85, VCLK229_5,
2035        0x00, 0x69, 0x3c, 1600, 1200},/* 26 1600x1200x85Hz */
2036        {Mode32Bpp + SyncPP, RES1600x1200x100, VCLK269_655,
2037        0x00, 0x69, 0x3c, 1600, 1200},/* 27 1600x1200x100Hz */
2038        {Mode32Bpp + SyncPP, RES1600x1200x120, VCLK323_586,
2039        0x00, 0x69, 0x3c, 1600, 1200},/* 28 1600x1200x120Hz */
2040        {Mode32Bpp + SupportLCD + SyncNP, RES1920x1440x60, VCLK234,
2041        0x00, 0x00, 0x68, 1920, 1440},/* 29 1920x1440x60Hz */
2042        {Mode32Bpp + SyncPN, RES1920x1440x65, VCLK254_817,
2043        0x00, 0x00, 0x68, 1920, 1440},/* 2a 1920x1440x65Hz */
2044        {Mode32Bpp + SyncPN, RES1920x1440x70, VCLK277_015,
2045        0x00, 0x00, 0x68, 1920, 1440},/* 2b 1920x1440x70Hz */
2046        {Mode32Bpp + SyncPN, RES1920x1440x75, VCLK291_132,
2047        0x00, 0x00, 0x68, 1920, 1440},/* 2c 1920x1440x75Hz */
2048        {Mode32Bpp + SyncPN, RES1920x1440x85, VCLK330_615,
2049        0x00, 0x00, 0x68, 1920, 1440},/* 2d 1920x1440x85Hz */
2050        {Mode16Bpp + SyncPN, RES1920x1440x100, VCLK388_631,
2051        0x00, 0x00, 0x68, 1920, 1440},/* 2e 1920x1440x100Hz */
2052        {Mode32Bpp + SupportLCD + SyncPN, RES2048x1536x60, VCLK266_952,
2053        0x00, 0x00, 0x6c, 2048, 1536},/* 2f 2048x1536x60Hz */
2054        {Mode32Bpp + SyncPN, RES2048x1536x65, VCLK291_766,
2055        0x00, 0x00, 0x6c, 2048, 1536},/* 30 2048x1536x65Hz */
2056        {Mode32Bpp + SyncPN, RES2048x1536x70, VCLK315_195,
2057        0x00, 0x00, 0x6c, 2048, 1536},/* 31 2048x1536x70Hz */
2058        {Mode32Bpp + SyncPN, RES2048x1536x75, VCLK340_477,
2059        0x00, 0x00, 0x6c, 2048, 1536},/* 32 2048x1536x75Hz */
2060        {Mode16Bpp + SyncPN, RES2048x1536x85, VCLK375_847,
2061        0x00, 0x00, 0x6c, 2048, 1536},/* 33 2048x1536x85Hz */
2062        {Mode32Bpp + SupportHiVision + SupportRAMDAC2 +
2063         SyncPP + SupportYPbPr750p, RES800x480x60, VCLK39_77,
2064         0x08, 0x00, 0x70, 800, 480},/* 34 800x480x60Hz */
2065        {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x75, VCLK49_5,
2066        0x08, 0x00, 0x70, 800, 480},/* 35 800x480x75Hz */
2067        {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x85, VCLK56_25,
2068        0x08, 0x00, 0x70, 800, 480},/* 36 800x480x85Hz */
2069        {Mode32Bpp + SupportHiVision + SupportRAMDAC2 +
2070         SyncPP + SupportYPbPr750p, RES1024x576x60, VCLK65_315,
2071         0x09, 0x00, 0x71, 1024, 576},/* 37 1024x576x60Hz */
2072        {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x75, VCLK78_75,
2073        0x09, 0x00, 0x71, 1024, 576},/* 38 1024x576x75Hz */
2074        {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x85, VCLK94_5,
2075        0x09, 0x00, 0x71, 1024, 576},/* 39 1024x576x85Hz */
2076        {Mode32Bpp + SupportHiVision + SupportRAMDAC2 +
2077        SyncPP + SupportYPbPr750p, RES1280x720x60, VCLK108_2_315,
2078        0x0A, 0x00, 0x75, 1280, 720},/* 3a 1280x720x60Hz*/
2079        {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x75, VCLK135_5,
2080        0x0A, 0x00, 0x75, 1280, 720},/* 3b 1280x720x75Hz */
2081        {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x85, VCLK157_5,
2082        0x0A, 0x00, 0x75, 1280, 720},/* 3c 1280x720x85Hz */
2083        {Mode32Bpp + SupportTV + SyncNN, RES720x480x60, VCLK28_322,
2084        0x06, 0x00, 0x31,  720, 480},/* 3d 720x480x60Hz */
2085        {Mode32Bpp + SupportTV + SyncPP, RES720x576x56, VCLK36,
2086        0x06, 0x00, 0x32, 720, 576},/* 3e 720x576x56Hz */
2087        {Mode32Bpp + InterlaceMode + NoSupportLCD + SyncPP, RES856x480x79I,
2088        VCLK35_2, 0x00, 0x00, 0x00,  856, 480},/* 3f 856x480x79I */
2089        {Mode32Bpp + NoSupportLCD + SyncNN, RES856x480x60, VCLK35_2,
2090        0x00, 0x00, 0x00,  856, 480},/* 40 856x480x60Hz */
2091        {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1280x768x60,
2092        VCLK79_411, 0x08, 0x48, 0x23, 1280, 768},/* 41 1280x768x60Hz */
2093        {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1400x1050x60,
2094        VCLK122_61, 0x08, 0x69, 0x26, 1400, 1050},/* 42 1400x1050x60Hz */
2095        {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x60, VCLK80_350,
2096        0x37, 0x00, 0x20, 1152, 864},/* 43 1152x864x60Hz */
2097        {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x75, VCLK107_385,
2098        0x37, 0x00, 0x20, 1152, 864},/* 44 1152x864x75Hz */
2099        {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x75,
2100        VCLK125_999, 0x3A, 0x88, 0x7b, 1280, 960},/* 45 1280x960x75Hz */
2101        {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x85,
2102        VCLK148_5, 0x0A, 0x88, 0x7b, 1280, 960},/* 46 1280x960x85Hz */
2103        {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x120,
2104        VCLK217_325, 0x3A, 0x88, 0x7b, 1280, 960},/* 47 1280x960x120Hz */
2105        {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x160, VCLK139_054,
2106        0x30, 0x47, 0x37, 1024, 768},/* 48 1024x768x160Hz */
2107};
2108
2109static const unsigned char XGI330_ScreenOffset[] = {
2110        0x14, 0x19, 0x20, 0x28, 0x32, 0x40,
2111        0x50, 0x64, 0x78, 0x80, 0x2d, 0x35,
2112        0x57, 0x48
2113};
2114
2115static const struct SiS_ModeResInfo_S XGI330_ModeResInfo[] = {
2116        { 320,  200, 8,  8},
2117        { 320,  240, 8,  8},
2118        { 320,  400, 8,  8},
2119        { 400,  300, 8,  8},
2120        { 512,  384, 8,  8},
2121        { 640,  400, 8, 16},
2122        { 640,  480, 8, 16},
2123        { 800,  600, 8, 16},
2124        {1024,  768, 8, 16},
2125        {1280, 1024, 8, 16},
2126        {1600, 1200, 8, 16},
2127        {1920, 1440, 8, 16},
2128        {2048, 1536, 8, 16},
2129        { 720,  480, 8, 16},
2130        { 720,  576, 8, 16},
2131        {1280,  960, 8, 16},
2132        { 800,  480, 8, 16},
2133        {1024,  576, 8, 16},
2134        {1280,  720, 8, 16},
2135        { 856,  480, 8, 16},
2136        {1280,  768, 8, 16},
2137        {1400, 1050, 8, 16},
2138        {1152,  864, 8, 16}
2139};
2140
2141const struct SiS_VCLKData XGI_VCLKData[] = {
2142        /* SR2B,SR2C,SR2D */
2143        {0x1B, 0xE1,  25}, /* 00 (25.175MHz) */
2144        {0x4E, 0xE4,  28}, /* 01 (28.322MHz) */
2145        {0x57, 0xE4,  31}, /* 02 (31.500MHz) */
2146        {0xC3, 0xC8,  36}, /* 03 (36.000MHz) */
2147        {0x42, 0xE2,  40}, /* 04 (40.000MHz) */
2148        {0xFE, 0xCD,  43}, /* 05 (43.163MHz) */
2149        {0x5D, 0xC4,  44}, /* 06 (44.900MHz) */
2150        {0x52, 0xE2,  49}, /* 07 (49.500MHz) */
2151        {0x53, 0xE2,  50}, /* 08 (50.000MHz) */
2152        {0x74, 0x67,  52}, /* 09 (52.406MHz) */
2153        {0x6D, 0x66,  56}, /* 0A (56.250MHz) */
2154        {0x6C, 0xC3,  65}, /* 0B (65.000MHz) */
2155        {0x46, 0x44,  67}, /* 0C (67.765MHz) */
2156        {0xB1, 0x46,  68}, /* 0D (68.179MHz) */
2157        {0xD3, 0x4A,  72}, /* 0E (72.852MHz) */
2158        {0x29, 0x61,  75}, /* 0F (75.000MHz) */
2159        {0x6E, 0x46,  76}, /* 10 (75.800MHz) */
2160        {0x2B, 0x61,  78}, /* 11 (78.750MHz) */
2161        {0x31, 0x42,  79}, /* 12 (79.411MHz) */
2162        {0xAB, 0x44,  83}, /* 13 (83.950MHz) */
2163        {0x46, 0x25,  84}, /* 14 (84.800MHz) */
2164        {0x78, 0x29,  86}, /* 15 (86.600MHz) */
2165        {0x62, 0x44,  94}, /* 16 (94.500MHz) */
2166        {0x2B, 0x41, 104}, /* 17 (104.998MHz) */
2167        {0x3A, 0x23, 105}, /* 18 (105.882MHz) */
2168        {0x70, 0x44, 108}, /* 19 (107.862MHz) */
2169        {0x3C, 0x23, 109}, /* 1A (109.175MHz) */
2170        {0x5E, 0x43, 113}, /* 1B (113.309MHz) */
2171        {0xBC, 0x44, 116}, /* 1C (116.406MHz) */
2172        {0xE0, 0x46, 132}, /* 1D (132.258MHz) */
2173        {0x54, 0x42, 135}, /* 1E (135.500MHz) */
2174        {0x9C, 0x22, 139}, /* 1F (139.275MHz) */
2175        {0x41, 0x22, 157}, /* 20 (157.500MHz) */
2176        {0x70, 0x24, 162}, /* 21 (161.793MHz) */
2177        {0x30, 0x21, 175}, /* 22 (175.000MHz) */
2178        {0x4E, 0x22, 189}, /* 23 (188.520MHz) */
2179        {0xDE, 0x26, 194}, /* 24 (194.400MHz) */
2180        {0x62, 0x06, 202}, /* 25 (202.500MHz) */
2181        {0x3F, 0x03, 229}, /* 26 (229.500MHz) */
2182        {0xB8, 0x06, 234}, /* 27 (233.178MHz) */
2183        {0x34, 0x02, 253}, /* 28 (252.699MHz) */
2184        {0x58, 0x04, 255}, /* 29 (254.817MHz) */
2185        {0x24, 0x01, 265}, /* 2A (265.728MHz) */
2186        {0x9B, 0x02, 267}, /* 2B (266.952MHz) */
2187        {0x70, 0x05, 270}, /* 2C (269.65567MHz) */
2188        {0x25, 0x01, 272}, /* 2D (272.04199MHz) */
2189        {0x9C, 0x02, 277}, /* 2E (277.015MHz) */
2190        {0x27, 0x01, 286}, /* 2F (286.359985MHz) */
2191        {0xB3, 0x04, 291}, /* 30 (291.13266MHz) */
2192        {0xBC, 0x05, 292}, /* 31 (291.766MHz) */
2193        {0xF6, 0x0A, 310}, /* 32 (309.789459MHz) */
2194        {0x95, 0x01, 315}, /* 33 (315.195MHz) */
2195        {0xF0, 0x09, 324}, /* 34 (323.586792MHz) */
2196        {0xFE, 0x0A, 331}, /* 35 (330.615631MHz) */
2197        {0xF3, 0x09, 332}, /* 36 (332.177612MHz) */
2198        {0x5E, 0x03, 340}, /* 37 (340.477MHz) */
2199        {0xE8, 0x07, 376}, /* 38 (375.847504MHz) */
2200        {0xDE, 0x06, 389}, /* 39 (388.631439MHz) */
2201        {0x52, 0x2A,  54}, /* 3A (54.000MHz) */
2202        {0x52, 0x6A,  27}, /* 3B (27.000MHz) */
2203        {0x62, 0x24,  70}, /* 3C (70.874991MHz) */
2204        {0x62, 0x64,  70}, /* 3D (70.1048912MHz) */
2205        {0xA8, 0x4C,  30}, /* 3E (30.1048912MHz) */
2206        {0x20, 0x26,  33}, /* 3F (33.7499957MHz) */
2207        {0x31, 0xc2,  39}, /* 40 (39.77MHz) */
2208        {0x11, 0x21,  30}, /* 41 (30MHz) }// NTSC 1024X768 */
2209        {0x2E, 0x48,  25}, /* 42 (25.175MHz) }// ScaleLCD */
2210        {0x24, 0x46,  25}, /* 43 (25.175MHz) */
2211        {0x26, 0x64,  28}, /* 44 (28.322MHz) */
2212        {0x37, 0x64,  40}, /* 45 (40.000MHz) */
2213        {0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */
2214        {0x37, 0x61, 100}, /* 47 (100.00MHz) */
2215        {0x78, 0x27, 108}, /* 48 (108.200MHz) */
2216        {0xBF, 0xC8,  35}, /* 49 (35.2MHz) */
2217        {0x66, 0x43, 123}, /* 4A (122.61Mhz) */
2218        {0x2C, 0x61,  80}, /* 4B (80.350Mhz) */
2219        {0x3B, 0x61, 108}, /* 4C (107.385Mhz) */
2220        {0x69, 0x61, 191}, /* 4D (190.96MHz ) */
2221        {0x4F, 0x22, 192}, /* 4E (192.069MHz) */
2222        {0x28, 0x26, 322}, /* 4F (322.273MHz) */
2223        {0x5C, 0x6B,  27}, /* 50 (27.74HMz) */
2224        {0x57, 0x24, 126}, /* 51 (125.999MHz) */
2225        {0x5C, 0x42, 148}, /* 52 (148.5MHz) */
2226        {0x42, 0x61, 120}, /* 53 (120.839MHz) */
2227        {0x62, 0x61, 178}, /* 54 (178.992MHz) */
2228        {0x59, 0x22, 217}, /* 55 (217.325MHz) */
2229        {0x29, 0x01, 300}, /* 56 (299.505Mhz) */
2230        {0x52, 0x63,  74}, /* 57 (74.25MHz) */
2231        {0xFF, 0x00,   0}  /* End mark */
2232};
2233
2234static const struct SiS_VBVCLKData XGI_VBVCLKData[] = {
2235        {0x1B, 0xE1,  25}, /* 00 (25.175MHz) */
2236        {0x4E, 0xE4,  28}, /* 01 (28.322MHz) */
2237        {0x57, 0xE4,  31}, /* 02 (31.500MHz) */
2238        {0xC3, 0xC8,  36}, /* 03 (36.000MHz) */
2239        {0x42, 0x47,  40}, /* 04 (40.000MHz) */
2240        {0xFE, 0xCD,  43}, /* 05 (43.163MHz) */
2241        {0x5D, 0xC4,  44}, /* 06 (44.900MHz) */
2242        {0x52, 0x47,  49}, /* 07 (49.500MHz) */
2243        {0x53, 0x47,  50}, /* 08 (50.000MHz) */
2244        {0x74, 0x67,  52}, /* 09 (52.406MHz) */
2245        {0x6D, 0x66,  56}, /* 0A (56.250MHz) */
2246        {0x35, 0x62,  65}, /* 0B (65.000MHz) */
2247        {0x46, 0x44,  67}, /* 0C (67.765MHz) */
2248        {0xB1, 0x46,  68}, /* 0D (68.179MHz) */
2249        {0xD3, 0x4A,  72}, /* 0E (72.852MHz) */
2250        {0x29, 0x61,  75}, /* 0F (75.000MHz) */
2251        {0x6D, 0x46,  75}, /* 10 (75.800MHz) */
2252        {0x41, 0x43,  78}, /* 11 (78.750MHz) */
2253        {0x31, 0x42,  79}, /* 12 (79.411MHz) */
2254        {0xAB, 0x44,  83}, /* 13 (83.950MHz) */
2255        {0x46, 0x25,  84}, /* 14 (84.800MHz) */
2256        {0x78, 0x29,  86}, /* 15 (86.600MHz) */
2257        {0x62, 0x44,  94}, /* 16 (94.500MHz) */
2258        {0x2B, 0x22, 104}, /* 17 (104.998MHz) */
2259        {0x49, 0x24, 105}, /* 18 (105.882MHz) */
2260        {0xF8, 0x2F, 108}, /* 19 (108.279MHz) */
2261        {0x3C, 0x23, 109}, /* 1A (109.175MHz) */
2262        {0x5E, 0x43, 113}, /* 1B (113.309MHz) */
2263        {0xBC, 0x44, 116}, /* 1C (116.406MHz) */
2264        {0xE0, 0x46, 132}, /* 1D (132.258MHz) */
2265        {0xD4, 0x28, 135}, /* 1E (135.220MHz) */
2266        {0xEA, 0x2A, 139}, /* 1F (139.275MHz) */
2267        {0x41, 0x22, 157}, /* 20 (157.500MHz) */
2268        {0x70, 0x24, 162}, /* 21 (161.793MHz) */
2269        {0x30, 0x21, 175}, /* 22 (175.000MHz) */
2270        {0x4E, 0x22, 189}, /* 23 (188.520MHz) */
2271        {0xDE, 0x26, 194}, /* 24 (194.400MHz) */
2272        {0x70, 0x07, 202}, /* 25 (202.500MHz) */
2273        {0x3F, 0x03, 229}, /* 26 (229.500MHz) */
2274        {0xB8, 0x06, 234}, /* 27 (233.178MHz) */
2275        {0x34, 0x02, 253}, /* 28 (252.699997 MHz) */
2276        {0x58, 0x04, 255}, /* 29 (254.817MHz) */
2277        {0x24, 0x01, 265}, /* 2A (265.728MHz) */
2278        {0x9B, 0x02, 267}, /* 2B (266.952MHz) */
2279        {0x70, 0x05, 270}, /* 2C (269.65567 MHz) */
2280        {0x25, 0x01, 272}, /* 2D (272.041992 MHz) */
2281        {0x9C, 0x02, 277}, /* 2E (277.015MHz) */
2282        {0x27, 0x01, 286}, /* 2F (286.359985 MHz) */
2283        {0x3C, 0x02, 291}, /* 30 (291.132660 MHz) */
2284        {0xEF, 0x0A, 292}, /* 31 (291.766MHz) */
2285        {0xF6, 0x0A, 310}, /* 32 (309.789459 MHz) */
2286        {0x95, 0x01, 315}, /* 33 (315.195MHz) */
2287        {0xF0, 0x09, 324}, /* 34 (323.586792 MHz) */
2288        {0xFE, 0x0A, 331}, /* 35 (330.615631 MHz) */
2289        {0xF3, 0x09, 332}, /* 36 (332.177612 MHz) */
2290        {0xEA, 0x08, 340}, /* 37 (340.477MHz) */
2291        {0xE8, 0x07, 376}, /* 38 (375.847504 MHz) */
2292        {0xDE, 0x06, 389}, /* 39 (388.631439 MHz) */
2293        {0x52, 0x2A,  54}, /* 3A (54.000MHz) */
2294        {0x52, 0x6A,  27}, /* 3B (27.000MHz) */
2295        {0x62, 0x24,  70}, /* 3C (70.874991MHz) */
2296        {0x62, 0x64,  70}, /* 3D (70.1048912MHz) */
2297        {0xA8, 0x4C,  30}, /* 3E (30.1048912MHz) */
2298        {0x20, 0x26,  33}, /* 3F (33.7499957MHz) */
2299        {0x31, 0xc2,  39}, /* 40 (39.77MHz) */
2300        {0x11, 0x21,  30}, /* 41 (30MHz) }// NTSC 1024X768 */
2301        {0x2E, 0x48,  25}, /* 42 (25.175MHz) }// ScaleLCD */
2302        {0x24, 0x46,  25}, /* 43 (25.175MHz) */
2303        {0x26, 0x64,  28}, /* 44 (28.322MHz) */
2304        {0x37, 0x64,  40}, /* 45 (40.000MHz) */
2305        {0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */
2306        {0x37, 0x61, 100}, /* 47 (100.00MHz) */
2307        {0x78, 0x27, 108}, /* 48 (108.200MHz) */
2308        {0xBF, 0xC8, 35 }, /* 49 (35.2MHz) */
2309        {0x66, 0x43, 123}, /* 4A (122.61Mhz) */
2310        {0x2C, 0x61, 80 }, /* 4B (80.350Mhz) */
2311        {0x3B, 0x61, 108}, /* 4C (107.385Mhz) */
2312        {0x69, 0x61, 191}, /* 4D (190.96MHz ) */
2313        {0x4F, 0x22, 192}, /* 4E (192.069MHz) */
2314        {0x28, 0x26, 322}, /* 4F (322.273MHz) */
2315        {0x5C, 0x6B,  27}, /* 50 (27.74HMz) */
2316        {0x57, 0x24, 126}, /* 51 (125.999MHz) */
2317        {0x5C, 0x42, 148}, /* 52 (148.5MHz) */
2318        {0x42, 0x61, 120}, /* 53 (120.839MHz) */
2319        {0x62, 0x61, 178}, /* 54 (178.992MHz) */
2320        {0x59, 0x22, 217}, /* 55 (217.325MHz) */
2321        {0x29, 0x01, 300}, /* 56 (299.505Mhz) */
2322        {0x52, 0x63,  74}, /* 57 (74.25MHz) */
2323        {0xFF, 0x00,   0}  /* End mark */
2324};
2325
2326#define XGI301TVDelay 0x22
2327#define XGI301LCDDelay 0x12
2328
2329static const unsigned char TVAntiFlickList[] = {/* NTSCAntiFlicker */
2330        0x04, /* ; 0 Adaptive */
2331        0x00, /* ; 1 new anti-flicker ? */
2332
2333        0x04, /* ; 0 Adaptive */
2334        0x08, /* ; 1 new anti-flicker ? */
2335
2336        0x04, /* ; 0 ? */
2337        0x00  /* ; 1 new anti-flicker ? */
2338};
2339
2340static const unsigned char TVEdgeList[] = {
2341        0x00, /* ; 0 NTSC No Edge enhance */
2342        0x04, /* ; 1 NTSC Adaptive Edge enhance */
2343        0x00, /* ; 0 PAL No Edge enhance */
2344        0x04, /* ; 1 PAL Adaptive Edge enhance */
2345        0x00, /* ; 0 HiTV */
2346        0x00  /* ; 1 HiTV */
2347};
2348
2349static const unsigned long TVPhaseList[] = {
2350        0x08BAED21, /* ; 0 NTSC phase */
2351        0x00E3052A, /* ; 1 PAL phase */
2352        0x9B2EE421, /* ; 2 PAL-M phase */
2353        0xBA3EF421, /* ; 3 PAL-N phase */
2354        0xA7A28B1E, /* ; 4 NTSC 1024x768 */
2355        0xE00A831E, /* ; 5 PAL-M 1024x768 */
2356        0x00000000, /* ; 6 reserved */
2357        0x00000000, /* ; 7 reserved */
2358        0xD67BF021, /* ; 8 NTSC phase */
2359        0xE986092A, /* ; 9 PAL phase */
2360        0xA4EFE621, /* ; A PAL-M phase */
2361        0x4694F621, /* ; B PAL-N phase */
2362        0x8BDE711C, /* ; C NTSC 1024x768 */
2363        0xE00A831E  /* ; D PAL-M 1024x768 */
2364};
2365
2366static const unsigned char NTSCYFilter1[] = {
2367        0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
2368        0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
2369        0xEB, 0x04, 0x25, 0x18, /* 2 : 640x text mode */
2370        0xF1, 0x04, 0x1F, 0x18, /* 3 : 720x text mode */
2371        0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
2372        0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */
2373        0xEB, 0x15, 0x25, 0xF6  /* 6 : 800x gra. mode */
2374};
2375
2376static const unsigned char PALYFilter1[] = {
2377        0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
2378        0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
2379        0xF1, 0xF7, 0x1F, 0x32, /* 2 : 640x text mode */
2380        0xF3, 0x00, 0x1D, 0x20, /* 3 : 720x text mode */
2381        0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
2382        0xF1, 0xF7, 0x1F, 0x32, /* 5 : 640x gra. mode */
2383        0xFC, 0xFB, 0x14, 0x2A  /* 6 : 800x gra. mode */
2384};
2385
2386static const unsigned char xgifb_palmn_yfilter1[] = {
2387        0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
2388        0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
2389        0xEB, 0x04, 0x10, 0x18, /* 2 : 640x text mode */
2390        0xF7, 0x06, 0x19, 0x14, /* 3 : 720x text mode */
2391        0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
2392        0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */
2393        0xEB, 0x15, 0x25, 0xF6, /* 6 : 800x gra. mode */
2394        0xFF, 0xFF, 0xFF, 0xFF  /* End of Table */
2395};
2396
2397static const unsigned char xgifb_yfilter2[] = {
2398        0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 0 : 320x text mode */
2399        0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 1 : 360x text mode */
2400        0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 2 : 640x text mode */
2401        0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 3 : 720x text mode */
2402        0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 4 : 320x gra. mode */
2403        0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 5 : 640x gra. mode */
2404        0x01, 0x01, 0xFC, 0xF8, 0x08, 0x26, 0x38, /* 6 : 800x gra. mode */
2405        0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x22, 0x28  /* 7 : 1024xgra. mode */
2406};
2407
2408static const unsigned char XGI_NTSC1024AdjTime[] = {
2409        0xa7, 0x07, 0xf2, 0x6e, 0x17, 0x8b, 0x73, 0x53,
2410        0x13, 0x40, 0x34, 0xF4, 0x63, 0xBB, 0xCC, 0x7A,
2411        0x58, 0xe4, 0x73, 0xd0, 0x13
2412};
2413
2414static const struct XGI301C_Tap4TimingStruct xgifb_tap4_timing[] = {
2415        {0, {
2416        0x00, 0x20, 0x00, 0x00, 0x7F, 0x20, 0x02, 0x7F, /* ; C0-C7 */
2417        0x7D, 0x20, 0x04, 0x7F, 0x7D, 0x1F, 0x06, 0x7E, /* ; C8-CF */
2418        0x7C, 0x1D, 0x09, 0x7E, 0x7C, 0x1B, 0x0B, 0x7E, /* ; D0-D7 */
2419        0x7C, 0x19, 0x0E, 0x7D, 0x7C, 0x17, 0x11, 0x7C, /* ; D8-DF */
2420        0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x11, 0x17, 0x7C, /* ; E0-E7 */
2421        0x7D, 0x0E, 0x19, 0x7C, 0x7E, 0x0B, 0x1B, 0x7C, /* ; EA-EF */
2422        0x7E, 0x09, 0x1D, 0x7C, 0x7F, 0x06, 0x1F, 0x7C, /* ; F0-F7 */
2423        0x7F, 0x04, 0x20, 0x7D, 0x00, 0x02, 0x20, 0x7E  /* ; F8-FF */
2424        }
2425        }
2426};
2427
2428static const struct XGI301C_Tap4TimingStruct PALTap4Timing[] = {
2429        {600,   {
2430                0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */
2431                0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */
2432                0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */
2433                0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */
2434                0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */
2435                0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */
2436                0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */
2437                0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04  /* ; F8-FF */
2438                }
2439        },
2440        {768,   {
2441                0x08, 0x12, 0x08, 0x7E, 0x07, 0x12, 0x09, 0x7E, /* ; C0-C7 */
2442                0x06, 0x12, 0x0A, 0x7E, 0x05, 0x11, 0x0B, 0x7F, /* ; C8-CF */
2443                0x04, 0x11, 0x0C, 0x7F, 0x03, 0x11, 0x0C, 0x00, /* ; D0-D7 */
2444                0x03, 0x10, 0x0D, 0x00, 0x02, 0x0F, 0x0E, 0x01, /* ; D8-DF */
2445                0x01, 0x0F, 0x0F, 0x01, 0x01, 0x0E, 0x0F, 0x02, /* ; E0-E7 */
2446                0x00, 0x0D, 0x10, 0x03, 0x7F, 0x0C, 0x11, 0x04, /* ; EA-EF */
2447                0x7F, 0x0C, 0x11, 0x04, 0x7F, 0x0B, 0x11, 0x05, /* ; F0-F7 */
2448                0x7E, 0x0A, 0x12, 0x06, 0x7E, 0x09, 0x12, 0x07  /* ; F8-FF */
2449                }
2450        },
2451        {0xFFFF, {
2452                0x04, 0x1A, 0x04, 0x7E, 0x02, 0x1B, 0x05, 0x7E, /* ; C0-C7 */
2453                0x01, 0x1A, 0x07, 0x7E, 0x00, 0x1A, 0x09, 0x7D, /* ; C8-CF */
2454                0x7F, 0x19, 0x0B, 0x7D, 0x7E, 0x18, 0x0D, 0x7D, /* ; D0-D7 */
2455                0x7D, 0x17, 0x10, 0x7C, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
2456                0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
2457                0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0D, 0x18, 0x7F, /* ; EA-EF */
2458                0x7D, 0x0B, 0x19, 0x7F, 0x7D, 0x09, 0x1A, 0x00, /* ; F0-F7 */
2459                0x7D, 0x07, 0x1A, 0x02, 0x7E, 0x05, 0x1B, 0x02  /* ; F8-FF */
2460                }
2461        }
2462};
2463
2464static const struct XGI301C_Tap4TimingStruct xgifb_ntsc_525_tap4_timing[] = {
2465        {480,   {
2466                0x04, 0x1A, 0x04, 0x7E, 0x03, 0x1A, 0x06, 0x7D, /* ; C0-C7 */
2467                0x01, 0x1A, 0x08, 0x7D, 0x00, 0x19, 0x0A, 0x7D, /* ; C8-CF */
2468                0x7F, 0x19, 0x0C, 0x7C, 0x7E, 0x18, 0x0E, 0x7C, /* ; D0-D7 */
2469                0x7E, 0x17, 0x10, 0x7B, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
2470                0x7D, 0x13, 0x13, 0x7D, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
2471                0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0E, 0x18, 0x7E, /* ; EA-EF */
2472                0x7D, 0x0C, 0x19, 0x7E, 0x7D, 0x0A, 0x19, 0x00, /* ; F0-F7 */
2473                0x7D, 0x08, 0x1A, 0x01, 0x7E, 0x06, 0x1A, 0x02  /* ; F8-FF */
2474                }
2475        },
2476        {600,   {
2477                0x07, 0x14, 0x07, 0x7E, 0x06, 0x14, 0x09, 0x7D, /* ; C0-C7 */
2478                0x05, 0x14, 0x0A, 0x7D, 0x04, 0x13, 0x0B, 0x7E, /* ; C8-CF */
2479                0x03, 0x13, 0x0C, 0x7E, 0x02, 0x12, 0x0D, 0x7F, /* ; D0-D7 */
2480                0x01, 0x12, 0x0E, 0x7F, 0x01, 0x11, 0x0F, 0x7F, /* ; D8-DF */
2481                0x01, 0x10, 0x10, 0x00, 0x7F, 0x0F, 0x11, 0x01, /* ; E0-E7 */
2482                0x7F, 0x0E, 0x12, 0x01, 0x7E, 0x0D, 0x12, 0x03, /* ; EA-EF */
2483                0x7E, 0x0C, 0x13, 0x03, 0x7E, 0x0B, 0x13, 0x04, /* ; F0-F7 */
2484                0x7E, 0x0A, 0x14, 0x04, 0x7D, 0x09, 0x14, 0x06  /* ; F8-FF */
2485                }
2486        },
2487        {0xFFFF, {
2488                 0x09, 0x0F, 0x09, 0x7F, 0x08, 0x0F, 0x09, 0x00, /* ; C0-C7 */
2489                 0x07, 0x0F, 0x0A, 0x00, 0x06, 0x0F, 0x0A, 0x01, /* ; C8-CF */
2490                 0x06, 0x0E, 0x0B, 0x01, 0x05, 0x0E, 0x0B, 0x02, /* ; D0-D7 */
2491                 0x04, 0x0E, 0x0C, 0x02, 0x04, 0x0D, 0x0C, 0x03, /* ; D8-DF */
2492                 0x03, 0x0D, 0x0D, 0x03, 0x02, 0x0C, 0x0D, 0x05, /* ; E0-E7 */
2493                 0x02, 0x0C, 0x0E, 0x04, 0x01, 0x0B, 0x0E, 0x06, /* ; EA-EF */
2494                 0x01, 0x0B, 0x0E, 0x06, 0x00, 0x0A, 0x0F, 0x07, /* ; F0-F7 */
2495                 0x00, 0x0A, 0x0F, 0x07, 0x00, 0x09, 0x0F, 0x08  /* ; F8-FF */
2496                }
2497        }
2498};
2499
2500static const struct XGI301C_Tap4TimingStruct YPbPr750pTap4Timing[] = {
2501        {0xFFFF, {
2502                 0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */
2503                 0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */
2504                 0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */
2505                 0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */
2506                 0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */
2507                 0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */
2508                 0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */
2509                 0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04 /* F8-FF */
2510                }
2511        }
2512};
2513#endif
2514