diff options
author | Thomas Winischhofer <thomas@winischhofer.net> | 2004-08-12 12:59:25 +0000 |
---|---|---|
committer | Thomas Winischhofer <thomas@winischhofer.net> | 2004-08-12 12:59:25 +0000 |
commit | 9d509f63ee3c048a25a7d72790c93f314bc09373 (patch) | |
tree | 159028c624bc0165eae00381c01b57368014da7a | |
parent | 5a5956a8b9ff9ed1c285f152cdb4c0fe4ef117a5 (diff) |
SiS driver: Add 960x600 as built-in mode (1080i, LCD, VGA)
-rw-r--r-- | src/310vtbl.h | 18 | ||||
-rw-r--r-- | src/init.c | 18 | ||||
-rw-r--r-- | src/init.h | 10 | ||||
-rw-r--r-- | src/initdef.h | 1 | ||||
-rw-r--r-- | src/sis.h | 2 | ||||
-rw-r--r-- | src/sis_driver.h | 1 |
6 files changed, 40 insertions, 10 deletions
diff --git a/src/310vtbl.h b/src/310vtbl.h index 17215f0..7068e1b 100644 --- a/src/310vtbl.h +++ b/src/310vtbl.h @@ -172,6 +172,9 @@ static const SiS_ExtStruct SiS310_EModeIDTable[]= {0x1d,0x6a1b,0x0000,SIS_RI_960x540, 0x00,0x00,0x00,0x00,0x4e,-1}, /* 960x540 */ {0x1e,0x6a3d,0x0000,SIS_RI_960x540, 0x00,0x00,0x00,0x00,0x4e,-1}, {0x1f,0x6a7f,0x0000,SIS_RI_960x540, 0x00,0x00,0x00,0x00,0x4e,-1}, + {0x20,0x6a1b,0x0000,SIS_RI_960x600, 0x00,0x00,0x00,0x00,0x4f,-1}, /* 960x600 */ + {0x21,0x6a3d,0x0000,SIS_RI_960x600, 0x00,0x00,0x00,0x00,0x4f,-1}, + {0x22,0x6a7f,0x0000,SIS_RI_960x600, 0x00,0x00,0x00,0x00,0x4f,-1}, {0xff,0x0000,0x0000,0, 0x00,0x00,0x00,0x00,0x00,-1} }; @@ -256,6 +259,7 @@ static const SiS_Ext2Struct SiS310_RefIndex[]= {0x0067,0x50,0x5d,0x0c,0x0e,0x17,1680,1050, 0x30}, /* 0x4c 1680x1050-60Hz */ {0x0087,0x51,0x69,0x00,0x00,0x2c,1920,1080, 0x30}, /* 0x4d 1920x1080 60Hzi */ {0x0067,0x52,0x6a,0x00,0x1c,0x1d, 960, 540, 0x30}, /* 0x4e 960x540 60Hz */ + {0x0077,0x53,0x6b,0x0b,0x1d,0x20, 960, 600, 0x30}, /* 0x4f 960x600 60Hz */ {0xffff,0x00,0x00,0x00,0x00,0x00, 0, 0, 0} }; @@ -266,6 +270,9 @@ static const struct { USHORT Ext_VESAID; /* corresponding VESA ID in new ROM */ } SiS_EModeIDTable661[] = { { 0x6a, 0x00, 0x0102 }, + { 0x1d, 0x20, 0x0000 }, + { 0x1e, 0x21, 0x0000 }, + { 0x1f, 0x22, 0x0000 }, { 0x20, 0x29, 0x0000 }, { 0x21, 0x2a, 0x0000 }, { 0x22, 0x2b, 0x0000 }, @@ -587,7 +594,10 @@ static const SiS_CRT1TableStruct SiS310_CRT1Table[]= 0x61}}, /* 0x51 */ {{0x85,0x77,0x77,0x89,0x7d,0x01,0x31,0xf0, /* 960x540-60 */ 0x1e,0x84,0x1b,0x1c,0x32,0x00,0x00,0x02, - 0x41}} /* 0x52 */ + 0x41}}, /* 0x52 */ + {{0x87,0x77,0x77,0x8b,0x81,0x0b,0x68,0xf0, /* 960x600-60 */ + 0x5a,0x80,0x57,0x57,0x69,0x00,0x00,0x02, + 0x01}} /* 0x53 */ }; static const SiS_MCLKDataStruct SiS310_MCLKData_0_315[] = @@ -806,7 +816,8 @@ static SiS_VCLKDataStruct SiS310_VCLKData[]= { 0x76,0xe7, 27}, /* 0x67 720x480@60 */ { 0x5f,0xc6, 33}, /* 0x68 720/768x576@60 */ { 0x52,0x27, 75}, /* 0x69 1920x1080i 60Hz interlaced */ - { 0x7c,0x6b, 38} /* 0x6a 960x540@60 */ + { 0x7c,0x6b, 38}, /* 0x6a 960x540@60 */ + { 0xe3,0x56, 41} /* 0x6b 960x600@60 */ }; static SiS_VBVCLKDataStruct SiS310_VBVCLKData[]= @@ -923,7 +934,8 @@ static SiS_VBVCLKDataStruct SiS310_VBVCLKData[]= { 0x76,0xe7, 27}, /* 0x67 720x480@60 */ { 0x5f,0xc6, 33}, /* 0x68 720/768x576@60 */ { 0x52,0x27, 75}, /* 0x69 1920x1080i 60Hz interlaced (UNUSED) */ - { 0x7c,0x6b, 38} /* 0x6a 960x540@60 */ + { 0x7c,0x6b, 38}, /* 0x6a 960x540@60 */ + { 0xe3,0x56, 41} /* 0x6b 960x600@60 */ }; static const DRAM4Type SiS310_SR15[8] = { @@ -670,7 +670,8 @@ SiS_GetModeID(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, break; case 960: if(VGAEngine == SIS_315_VGA) { - if(VDisplay == 540) ModeIndex = ModeIndex_960x540[Depth]; + if(VDisplay == 540) ModeIndex = ModeIndex_960x540[Depth]; + else if(VDisplay == 600) ModeIndex = ModeIndex_960x600[Depth]; } break; case 1024: @@ -901,7 +902,8 @@ SiS_GetModeID_LCD(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, break; case 960: if(VGAEngine == SIS_315_VGA) { - if(VDisplay == 540) ModeIndex = ModeIndex_960x540[Depth]; + if(VDisplay == 540) ModeIndex = ModeIndex_960x540[Depth]; + else if(VDisplay == 600) ModeIndex = ModeIndex_960x600[Depth]; } break; case 1024: @@ -1050,6 +1052,15 @@ SiS_GetModeID_TV(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, int D } } break; + case 960: + if(VGAEngine == SIS_315_VGA) { + if(VDisplay == 600) { + if((VBFlags & TV_HIVISION) || ((VBFlags & TV_YPBPR) && (VBFlags & TV_YPBPR1080I))) { + ModeIndex = ModeIndex_960x600[Depth]; + } + } + } + break; case 1024: if(VDisplay == 768) { if(VBFlags & (VB_301B|VB_301C|VB_302B|VB_301LV|VB_302LV|VB_302ELV)) { @@ -1121,7 +1132,8 @@ SiS_GetModeID_VGA2(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, int break; case 960: if(VGAEngine == SIS_315_VGA) { - if(VDisplay == 540) ModeIndex = ModeIndex_960x540[Depth]; + if(VDisplay == 540) ModeIndex = ModeIndex_960x540[Depth]; + else if(VDisplay == 600) ModeIndex = ModeIndex_960x600[Depth]; } break; case 1024: @@ -100,6 +100,7 @@ const USHORT ModeIndex_800x600[] = {0x30, 0x47, 0x00, 0x63}; const USHORT ModeIndex_848x480[] = {0x39, 0x3b, 0x00, 0x3e}; const USHORT ModeIndex_856x480[] = {0x3f, 0x42, 0x00, 0x45}; const USHORT ModeIndex_960x540[] = {0x1d, 0x1e, 0x00, 0x1f}; /* 315 series only */ +const USHORT ModeIndex_960x600[] = {0x20, 0x21, 0x00, 0x22}; /* 315 series only */ const USHORT ModeIndex_1024x768[] = {0x38, 0x4a, 0x00, 0x64}; const USHORT ModeIndex_1024x576[] = {0x71, 0x74, 0x00, 0x77}; const USHORT ModeIndex_1024x600[] = {0x20, 0x21, 0x00, 0x22}; /* 300 series only */ @@ -259,7 +260,8 @@ static const SiS_ModeResInfoStruct SiS_ModeResInfo[] = { 1680,1050, 8,16}, /* 0x1d */ { 1280, 800, 8,16}, /* 0x1e */ { 1920,1080, 8,16}, /* 0x1f */ - { 960, 540, 8,16} /* 0x20 */ + { 960, 540, 8,16}, /* 0x20 */ + { 960, 600, 8,16} /* 0x21 */ }; #if defined(SIS300) || defined(SIS315H) @@ -907,7 +909,8 @@ static const SiS_TVDataStruct SiS_ExtHiTVData[] = { 5, 4, 0x627,0x464,0x670,0x3c0,0x128, 0, 0, 0x00,0x00,0x00,0x00}, /* 1280x1024 */ { 4, 1, 0x41a,0x233,0x60c,0x3c0,0x143,128, 0, 0x00,0x00,0x00,0x00}, /* 800x480 */ { 5, 2, 0x578,0x293,0x670,0x3c0,0x032, 0, 0, 0x00,0x00,0x00,0x00}, /* 1024x576 */ - { 8, 5, 0x6d6,0x323,0x670,0x3c0,0x128, 0, 0, 0x00,0x00,0x00,0x00} /* 1280x720 */ + { 8, 5, 0x6d6,0x323,0x670,0x3c0,0x128, 0, 0, 0x00,0x00,0x00,0x00}, /* 1280x720 */ + { 137, 32, 0x3d4,0x233,0x663,0x3bf,0x143, 0, 0, 0x00,0x00,0x00,0x00} /* 960x600 */ }; static const SiS_TVDataStruct SiS_St525pData[] = @@ -1144,7 +1147,8 @@ static const SiS_LCDDataStruct SiS_NoScaleData[] = { 1, 1,1328, 739,1328, 739 }, /* 0x19: 1024x576 */ { 1, 1,1680, 892,1680, 892 }, /* 0x1a: 1152x864 */ { 1, 1,1808, 808,1808, 808 }, /* 0x1b: 1360x768 */ - { 1, 1,1104, 563,1104, 563 } /* 0x1c: 960x540 */ + { 1, 1,1104, 563,1104, 563 }, /* 0x1c: 960x540 */ + { 1, 1,1120, 618,1120, 618 } /* 0x1d: 960x600 */ }; /**************************************************************/ diff --git a/src/initdef.h b/src/initdef.h index 14390d5..047d4db 100644 --- a/src/initdef.h +++ b/src/initdef.h @@ -452,6 +452,7 @@ #define SIS_RI_1280x800 30 #define SIS_RI_1920x1080 31 #define SIS_RI_960x540 32 +#define SIS_RI_960x600 33 /* CR5F */ #define IsM650 0x80 @@ -40,7 +40,7 @@ #define SISDRIVERVERSIONYEAR 4 #define SISDRIVERVERSIONMONTH 8 -#define SISDRIVERVERSIONDAY 11 +#define SISDRIVERVERSIONDAY 12 #define SISDRIVERREVISION 1 #define SISDRIVERIVERSION (SISDRIVERVERSIONYEAR << 16) | \ diff --git a/src/sis_driver.h b/src/sis_driver.h index 5d8b639..b1a2de3 100644 --- a/src/sis_driver.h +++ b/src/sis_driver.h @@ -77,6 +77,7 @@ static const struct _sis_vrate { {1, 848, 480, 39, TRUE}, {2, 848, 480, 60, TRUE}, {1, 856, 480, 39, TRUE}, {2, 856, 480, 60, TRUE}, {1, 960, 540, 60, TRUE}, + {1, 960, 600, 60, TRUE}, {1, 1024, 576, 60, TRUE}, {2, 1024, 576, 75, TRUE}, {3, 1024, 576, 85, TRUE}, {1, 1024, 600, 60, TRUE}, {1, 1024, 768, 43, TRUE}, {2, 1024, 768, 60, TRUE}, {3, 1024, 768, 70, FALSE}, |