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