Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright (c) 2005 ASPEED Technology Inc.
0003  *
0004  * Permission to use, copy, modify, distribute, and sell this software and its
0005  * documentation for any purpose is hereby granted without fee, provided that
0006  * the above copyright notice appear in all copies and that both that
0007  * copyright notice and this permission notice appear in supporting
0008  * documentation, and that the name of the authors not be used in
0009  * advertising or publicity pertaining to distribution of the software without
0010  * specific, written prior permission.  The authors makes no representations
0011  * about the suitability of this software for any purpose.  It is provided
0012  * "as is" without express or implied warranty.
0013  *
0014  * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
0015  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
0016  * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
0017  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
0018  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
0019  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
0020  * PERFORMANCE OF THIS SOFTWARE.
0021  */
0022 /* Ported from xf86-video-ast driver */
0023 
0024 #ifndef AST_TABLES_H
0025 #define AST_TABLES_H
0026 
0027 /* Std. Table Index Definition */
0028 #define TextModeIndex       0
0029 #define EGAModeIndex        1
0030 #define VGAModeIndex        2
0031 #define HiCModeIndex        3
0032 #define TrueCModeIndex      4
0033 
0034 #define Charx8Dot               0x00000001
0035 #define HalfDCLK                0x00000002
0036 #define DoubleScanMode          0x00000004
0037 #define LineCompareOff          0x00000008
0038 #define HBorder                 0x00000020
0039 #define VBorder                 0x00000010
0040 #define WideScreenMode      0x00000100
0041 #define NewModeInfo     0x00000200
0042 #define NHSync          0x00000400
0043 #define PHSync          0x00000800
0044 #define NVSync          0x00001000
0045 #define PVSync          0x00002000
0046 #define SyncPP          (PVSync | PHSync)
0047 #define SyncPN          (PVSync | NHSync)
0048 #define SyncNP          (NVSync | PHSync)
0049 #define SyncNN          (NVSync | NHSync)
0050 #define AST2500PreCatchCRT      0x00004000
0051 
0052 /* DCLK Index */
0053 #define VCLK25_175          0x00
0054 #define VCLK28_322          0x01
0055 #define VCLK31_5            0x02
0056 #define VCLK36              0x03
0057 #define VCLK40              0x04
0058 #define VCLK49_5            0x05
0059 #define VCLK50              0x06
0060 #define VCLK56_25           0x07
0061 #define VCLK65          0x08
0062 #define VCLK75              0x09
0063 #define VCLK78_75           0x0A
0064 #define VCLK94_5            0x0B
0065 #define VCLK108             0x0C
0066 #define VCLK135             0x0D
0067 #define VCLK157_5           0x0E
0068 #define VCLK162             0x0F
0069 /* #define VCLK193_25           0x10 */
0070 #define VCLK154             0x10
0071 #define VCLK83_5            0x11
0072 #define VCLK106_5           0x12
0073 #define VCLK146_25          0x13
0074 #define VCLK148_5           0x14
0075 #define VCLK71              0x15
0076 #define VCLK88_75           0x16
0077 #define VCLK119             0x17
0078 #define VCLK85_5            0x18
0079 #define VCLK97_75           0x19
0080 #define VCLK118_25          0x1A
0081 
0082 static const struct ast_vbios_dclk_info dclk_table[] = {
0083     {0x2C, 0xE7, 0x03},         /* 00: VCLK25_175   */
0084     {0x95, 0x62, 0x03},         /* 01: VCLK28_322   */
0085     {0x67, 0x63, 0x01},         /* 02: VCLK31_5     */
0086     {0x76, 0x63, 0x01},         /* 03: VCLK36       */
0087     {0xEE, 0x67, 0x01},         /* 04: VCLK40       */
0088     {0x82, 0x62, 0x01},         /* 05: VCLK49_5     */
0089     {0xC6, 0x64, 0x01},         /* 06: VCLK50       */
0090     {0x94, 0x62, 0x01},         /* 07: VCLK56_25    */
0091     {0x80, 0x64, 0x00},         /* 08: VCLK65       */
0092     {0x7B, 0x63, 0x00},         /* 09: VCLK75       */
0093     {0x67, 0x62, 0x00},         /* 0A: VCLK78_75    */
0094     {0x7C, 0x62, 0x00},         /* 0B: VCLK94_5     */
0095     {0x8E, 0x62, 0x00},         /* 0C: VCLK108      */
0096     {0x85, 0x24, 0x00},         /* 0D: VCLK135      */
0097     {0x67, 0x22, 0x00},         /* 0E: VCLK157_5    */
0098     {0x6A, 0x22, 0x00},         /* 0F: VCLK162      */
0099     {0x4d, 0x4c, 0x80},         /* 10: VCLK154      */
0100     {0x68, 0x6f, 0x80},         /* 11: VCLK83.5     */
0101     {0x28, 0x49, 0x80},         /* 12: VCLK106.5    */
0102     {0x37, 0x49, 0x80},         /* 13: VCLK146.25   */
0103     {0x1f, 0x45, 0x80},         /* 14: VCLK148.5    */
0104     {0x47, 0x6c, 0x80},         /* 15: VCLK71       */
0105     {0x25, 0x65, 0x80},         /* 16: VCLK88.75    */
0106     {0x77, 0x58, 0x80},         /* 17: VCLK119      */
0107     {0x32, 0x67, 0x80},         /* 18: VCLK85_5     */
0108     {0x6a, 0x6d, 0x80},         /* 19: VCLK97_75    */
0109     {0x3b, 0x2c, 0x81},         /* 1A: VCLK118_25   */
0110 };
0111 
0112 static const struct ast_vbios_dclk_info dclk_table_ast2500[] = {
0113     {0x2C, 0xE7, 0x03},         /* 00: VCLK25_175   */
0114     {0x95, 0x62, 0x03},         /* 01: VCLK28_322   */
0115     {0x67, 0x63, 0x01},         /* 02: VCLK31_5     */
0116     {0x76, 0x63, 0x01},         /* 03: VCLK36       */
0117     {0xEE, 0x67, 0x01},         /* 04: VCLK40       */
0118     {0x82, 0x62, 0x01},         /* 05: VCLK49_5     */
0119     {0xC6, 0x64, 0x01},         /* 06: VCLK50       */
0120     {0x94, 0x62, 0x01},         /* 07: VCLK56_25    */
0121     {0x80, 0x64, 0x00},         /* 08: VCLK65       */
0122     {0x7B, 0x63, 0x00},         /* 09: VCLK75       */
0123     {0x67, 0x62, 0x00},         /* 0A: VCLK78_75    */
0124     {0x7C, 0x62, 0x00},         /* 0B: VCLK94_5     */
0125     {0x8E, 0x62, 0x00},         /* 0C: VCLK108      */
0126     {0x85, 0x24, 0x00},         /* 0D: VCLK135      */
0127     {0x67, 0x22, 0x00},         /* 0E: VCLK157_5    */
0128     {0x6A, 0x22, 0x00},         /* 0F: VCLK162      */
0129     {0x4d, 0x4c, 0x80},         /* 10: VCLK154      */
0130     {0x68, 0x6f, 0x80},         /* 11: VCLK83.5     */
0131     {0x28, 0x49, 0x80},         /* 12: VCLK106.5    */
0132     {0x37, 0x49, 0x80},         /* 13: VCLK146.25   */
0133     {0x1f, 0x45, 0x80},         /* 14: VCLK148.5    */
0134     {0x47, 0x6c, 0x80},         /* 15: VCLK71       */
0135     {0x25, 0x65, 0x80},         /* 16: VCLK88.75    */
0136     {0x58, 0x01, 0x42},         /* 17: VCLK119      */
0137     {0x32, 0x67, 0x80},         /* 18: VCLK85_5     */
0138     {0x6a, 0x6d, 0x80},         /* 19: VCLK97_75    */
0139     {0x44, 0x20, 0x43},         /* 1A: VCLK118_25   */
0140 };
0141 
0142 static const struct ast_vbios_stdtable vbios_stdtable[] = {
0143     /* MD_2_3_400 */
0144     {
0145         0x67,
0146         {0x00,0x03,0x00,0x02},
0147         {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
0148          0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,
0149          0x9c,0x8e,0x8f,0x28,0x1f,0x96,0xb9,0xa3,
0150          0xff},
0151         {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,
0152          0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
0153          0x0c,0x00,0x0f,0x08},
0154         {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,
0155          0xff}
0156     },
0157     /* Mode12/ExtEGATable */
0158     {
0159         0xe3,
0160         {0x01,0x0f,0x00,0x06},
0161         {0x5f,0x4f,0x50,0x82,0x55,0x81,0x0b,0x3e,
0162          0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0163          0xe9,0x8b,0xdf,0x28,0x00,0xe7,0x04,0xe3,
0164          0xff},
0165         {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,
0166          0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
0167          0x01,0x00,0x0f,0x00},
0168         {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f,
0169          0xff}
0170     },
0171     /* ExtVGATable */
0172     {
0173         0x2f,
0174         {0x01,0x0f,0x00,0x0e},
0175         {0x5f,0x4f,0x50,0x82,0x54,0x80,0x0b,0x3e,
0176          0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0177          0xea,0x8c,0xdf,0x28,0x40,0xe7,0x04,0xa3,
0178          0xff},
0179         {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
0180          0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
0181          0x01,0x00,0x00,0x00},
0182         {0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0f,
0183          0xff}
0184     },
0185     /* ExtHiCTable */
0186     {
0187         0x2f,
0188         {0x01,0x0f,0x00,0x0e},
0189         {0x5f,0x4f,0x50,0x82,0x54,0x80,0x0b,0x3e,
0190          0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0191          0xea,0x8c,0xdf,0x28,0x40,0xe7,0x04,0xa3,
0192          0xff},
0193         {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
0194          0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
0195          0x01,0x00,0x00,0x00},
0196         {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f,
0197          0xff}
0198     },
0199     /* ExtTrueCTable */
0200     {
0201         0x2f,
0202         {0x01,0x0f,0x00,0x0e},
0203         {0x5f,0x4f,0x50,0x82,0x54,0x80,0x0b,0x3e,
0204          0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0205          0xea,0x8c,0xdf,0x28,0x40,0xe7,0x04,0xa3,
0206          0xff},
0207         {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
0208          0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
0209          0x01,0x00,0x00,0x00},
0210         {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f,
0211          0xff}
0212     },
0213 };
0214 
0215 static const struct ast_vbios_enhtable res_640x480[] = {
0216     { 800, 640, 8, 96, 525, 480, 2, 2, VCLK25_175,  /* 60Hz */
0217       (SyncNN | HBorder | VBorder | Charx8Dot), 60, 1, 0x2E },
0218     { 832, 640, 16, 40, 520, 480, 1, 3, VCLK31_5,   /* 72Hz */
0219       (SyncNN | HBorder | VBorder | Charx8Dot), 72, 2, 0x2E  },
0220     { 840, 640, 16, 64, 500, 480, 1, 3, VCLK31_5,   /* 75Hz */
0221       (SyncNN | Charx8Dot) , 75, 3, 0x2E },
0222     { 832, 640, 56, 56, 509, 480, 1, 3, VCLK36, /* 85Hz */
0223       (SyncNN | Charx8Dot) , 85, 4, 0x2E },
0224     { 832, 640, 56, 56, 509, 480, 1, 3, VCLK36, /* end */
0225       (SyncNN | Charx8Dot) , 0xFF, 4, 0x2E },
0226 };
0227 
0228 static const struct ast_vbios_enhtable res_800x600[] = {
0229     {1024, 800, 24, 72, 625, 600, 1, 2, VCLK36, /* 56Hz */
0230      (SyncPP | Charx8Dot), 56, 1, 0x30 },
0231     {1056, 800, 40, 128, 628, 600, 1, 4, VCLK40,    /* 60Hz */
0232      (SyncPP | Charx8Dot), 60, 2, 0x30 },
0233     {1040, 800, 56, 120, 666, 600, 37, 6, VCLK50,   /* 72Hz */
0234      (SyncPP | Charx8Dot), 72, 3, 0x30 },
0235     {1056, 800, 16, 80, 625, 600, 1, 3, VCLK49_5,   /* 75Hz */
0236      (SyncPP | Charx8Dot), 75, 4, 0x30 },
0237     {1048, 800, 32, 64, 631, 600, 1, 3, VCLK56_25,  /* 85Hz */
0238      (SyncPP | Charx8Dot), 84, 5, 0x30 },
0239     {1048, 800, 32, 64, 631, 600, 1, 3, VCLK56_25,  /* end */
0240      (SyncPP | Charx8Dot), 0xFF, 5, 0x30 },
0241 };
0242 
0243 
0244 static const struct ast_vbios_enhtable res_1024x768[] = {
0245     {1344, 1024, 24, 136, 806, 768, 3, 6, VCLK65,   /* 60Hz */
0246      (SyncNN | Charx8Dot), 60, 1, 0x31 },
0247     {1328, 1024, 24, 136, 806, 768, 3, 6, VCLK75,   /* 70Hz */
0248      (SyncNN | Charx8Dot), 70, 2, 0x31 },
0249     {1312, 1024, 16, 96, 800, 768, 1, 3, VCLK78_75, /* 75Hz */
0250      (SyncPP | Charx8Dot), 75, 3, 0x31 },
0251     {1376, 1024, 48, 96, 808, 768, 1, 3, VCLK94_5,  /* 85Hz */
0252      (SyncPP | Charx8Dot), 84, 4, 0x31 },
0253     {1376, 1024, 48, 96, 808, 768, 1, 3, VCLK94_5,  /* end */
0254      (SyncPP | Charx8Dot), 0xFF, 4, 0x31 },
0255 };
0256 
0257 static const struct ast_vbios_enhtable res_1280x1024[] = {
0258     {1688, 1280, 48, 112, 1066, 1024, 1, 3, VCLK108,    /* 60Hz */
0259      (SyncPP | Charx8Dot), 60, 1, 0x32 },
0260     {1688, 1280, 16, 144, 1066, 1024, 1, 3, VCLK135,    /* 75Hz */
0261      (SyncPP | Charx8Dot), 75, 2, 0x32 },
0262     {1728, 1280, 64, 160, 1072, 1024, 1, 3, VCLK157_5,  /* 85Hz */
0263      (SyncPP | Charx8Dot), 85, 3, 0x32 },
0264     {1728, 1280, 64, 160, 1072, 1024, 1, 3, VCLK157_5,  /* end */
0265      (SyncPP | Charx8Dot), 0xFF, 3, 0x32 },
0266 };
0267 
0268 static const struct ast_vbios_enhtable res_1600x1200[] = {
0269     {2160, 1600, 64, 192, 1250, 1200, 1, 3, VCLK162,    /* 60Hz */
0270      (SyncPP | Charx8Dot), 60, 1, 0x33 },
0271     {2160, 1600, 64, 192, 1250, 1200, 1, 3, VCLK162,    /* end */
0272      (SyncPP | Charx8Dot), 0xFF, 1, 0x33 },
0273 };
0274 
0275 /* 16:9 */
0276 static const struct ast_vbios_enhtable res_1360x768[] = {
0277     {1792, 1360, 64, 112, 795, 768, 3, 6, VCLK85_5,     /* 60Hz */
0278      (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x39 },
0279     {1792, 1360, 64, 112, 795, 768, 3, 6, VCLK85_5,          /* end */
0280      (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
0281       AST2500PreCatchCRT), 0xFF, 1, 0x39 },
0282 };
0283 
0284 static const struct ast_vbios_enhtable res_1600x900[] = {
0285     {1760, 1600, 48, 32, 926, 900, 3, 5, VCLK97_75,     /* 60Hz CVT RB */
0286      (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
0287       AST2500PreCatchCRT), 60, 1, 0x3A },
0288     {2112, 1600, 88, 168, 934, 900, 3, 5, VCLK118_25,   /* 60Hz CVT */
0289      (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x3A },
0290     {2112, 1600, 88, 168, 934, 900, 3, 5, VCLK118_25,   /* 60Hz CVT */
0291      (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 2, 0x3A },
0292 };
0293 
0294 static const struct ast_vbios_enhtable res_1920x1080[] = {
0295     {2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5,   /* 60Hz */
0296      (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
0297       AST2500PreCatchCRT), 60, 1, 0x38 },
0298     {2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5,   /* 60Hz */
0299      (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
0300       AST2500PreCatchCRT), 0xFF, 1, 0x38 },
0301 };
0302 
0303 
0304 /* 16:10 */
0305 static const struct ast_vbios_enhtable res_1280x800[] = {
0306     {1440, 1280, 48, 32,  823,  800, 3, 6, VCLK71,      /* 60Hz RB */
0307      (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
0308       AST2500PreCatchCRT), 60, 1, 0x35 },
0309     {1680, 1280, 72,128,  831,  800, 3, 6, VCLK83_5,    /* 60Hz */
0310      (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x35 },
0311     {1680, 1280, 72,128,  831,  800, 3, 6, VCLK83_5,    /* 60Hz */
0312      (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 2, 0x35 },
0313 
0314 };
0315 
0316 static const struct ast_vbios_enhtable res_1440x900[] = {
0317     {1600, 1440, 48, 32,  926,  900, 3, 6, VCLK88_75,   /* 60Hz RB */
0318      (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
0319       AST2500PreCatchCRT), 60, 1, 0x36 },
0320     {1904, 1440, 80,152,  934,  900, 3, 6, VCLK106_5,   /* 60Hz */
0321      (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x36 },
0322     {1904, 1440, 80,152,  934,  900, 3, 6, VCLK106_5,   /* 60Hz */
0323      (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 2, 0x36 },
0324 };
0325 
0326 static const struct ast_vbios_enhtable res_1680x1050[] = {
0327     {1840, 1680, 48, 32, 1080, 1050, 3, 6, VCLK119,     /* 60Hz RB */
0328      (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
0329       AST2500PreCatchCRT), 60, 1, 0x37 },
0330     {2240, 1680,104,176, 1089, 1050, 3, 6, VCLK146_25,  /* 60Hz */
0331      (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x37 },
0332     {2240, 1680,104,176, 1089, 1050, 3, 6, VCLK146_25,  /* 60Hz */
0333      (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 2, 0x37 },
0334 };
0335 
0336 static const struct ast_vbios_enhtable res_1920x1200[] = {
0337     {2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,     /* 60Hz RB*/
0338      (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
0339       AST2500PreCatchCRT), 60, 1, 0x34 },
0340     {2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,     /* 60Hz RB */
0341      (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
0342       AST2500PreCatchCRT), 0xFF, 1, 0x34 },
0343 };
0344 
0345 #endif