summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Winischhofer <thomas@winischhofer.net>2004-08-12 12:59:25 +0000
committerThomas Winischhofer <thomas@winischhofer.net>2004-08-12 12:59:25 +0000
commit9d509f63ee3c048a25a7d72790c93f314bc09373 (patch)
tree159028c624bc0165eae00381c01b57368014da7a
parent5a5956a8b9ff9ed1c285f152cdb4c0fe4ef117a5 (diff)
SiS driver: Add 960x600 as built-in mode (1080i, LCD, VGA)
-rw-r--r--src/310vtbl.h18
-rw-r--r--src/init.c18
-rw-r--r--src/init.h10
-rw-r--r--src/initdef.h1
-rw-r--r--src/sis.h2
-rw-r--r--src/sis_driver.h1
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] = {
diff --git a/src/init.c b/src/init.c
index 88f7695..2fdab67 100644
--- a/src/init.c
+++ b/src/init.c
@@ -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:
diff --git a/src/init.h b/src/init.h
index aa94657..a7fabb9 100644
--- a/src/init.h
+++ b/src/init.h
@@ -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
diff --git a/src/sis.h b/src/sis.h
index 8561cc5..5ff13b1 100644
--- a/src/sis.h
+++ b/src/sis.h
@@ -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},