mirror of
https://github.com/X11Libre/xf86-video-ast.git
synced 2026-03-24 01:24:41 +00:00
Support 1360x768 and 1600x900 Resolutions
This commit is contained in:
@@ -223,7 +223,7 @@ typedef struct _ASTRec {
|
||||
ULONG ulDRAMSize;
|
||||
ULONG ulVRAMSize;
|
||||
ULONG ulVRAMBase;
|
||||
ULONG ulMCLK;
|
||||
ULONG ulMCLK;
|
||||
|
||||
Bool noAccel;
|
||||
Bool noHWC;
|
||||
@@ -231,6 +231,7 @@ typedef struct _ASTRec {
|
||||
int ENGCaps;
|
||||
int DBGSelect;
|
||||
Bool VGA2Clone;
|
||||
Bool SupportWideScreen;
|
||||
|
||||
ULONG FBPhysAddr; /* Frame buffer physical address */
|
||||
ULONG MMIOPhysAddr; /* MMIO region physical address */
|
||||
|
||||
@@ -67,6 +67,7 @@ extern void GetDRAMInfo(ScrnInfoPtr pScrn);
|
||||
extern ULONG GetVRAMInfo(ScrnInfoPtr pScrn);
|
||||
extern ULONG GetMaxDCLK(ScrnInfoPtr pScrn);
|
||||
extern void GetChipType(ScrnInfoPtr pScrn);
|
||||
extern void GetScratchOptions(ScrnInfoPtr pScrn);
|
||||
extern void vASTLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors, VisualPtr pVisual);
|
||||
extern void ASTDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, int flags);
|
||||
extern void vSetStartAddressCRT1(ASTRecPtr pAST, ULONG base);
|
||||
@@ -619,6 +620,9 @@ ASTPreInit(ScrnInfoPtr pScrn, int flags)
|
||||
else
|
||||
pAST->jChipType = AST2000;
|
||||
|
||||
/* Get Options from Scratch */
|
||||
GetScratchOptions(pScrn);
|
||||
|
||||
/* Get DRAM Info */
|
||||
GetDRAMInfo(pScrn);
|
||||
pAST->ulVRAMSize = GetVRAMInfo(pScrn);
|
||||
@@ -1092,17 +1096,8 @@ ASTValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
|
||||
if (RequestBufferSize > pAST->ulVRAMSize)
|
||||
return Flags;
|
||||
|
||||
/* Check BMC scratch for iKVM compatible */
|
||||
if (pAST->jChipType == AST2000)
|
||||
jReg = 0x80;
|
||||
else if (pAST->jChipType == AST1180)
|
||||
jReg = 0x01;
|
||||
else
|
||||
{
|
||||
GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg);
|
||||
}
|
||||
|
||||
if ( !(jReg & 0x80) || (jReg & 0x01) )
|
||||
/* Valid Wide Screen Mode */
|
||||
if (pAST->SupportWideScreen)
|
||||
{
|
||||
if ( (mode->CrtcHDisplay == 1680) && (mode->CrtcVDisplay == 1050) )
|
||||
return MODE_OK;
|
||||
@@ -1110,27 +1105,27 @@ ASTValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
|
||||
return MODE_OK;
|
||||
if ( (mode->CrtcHDisplay == 1440) && (mode->CrtcVDisplay == 900) )
|
||||
return MODE_OK;
|
||||
if ( (mode->CrtcHDisplay == 1360) && (mode->CrtcVDisplay == 768) )
|
||||
return MODE_OK;
|
||||
if ( (mode->CrtcHDisplay == 1600) && (mode->CrtcVDisplay == 900) )
|
||||
return MODE_OK;
|
||||
|
||||
if ( (pAST->jChipType == AST2100) || (pAST->jChipType == AST2200) || (pAST->jChipType == AST2300) || (pAST->jChipType == AST1180) )
|
||||
{
|
||||
if ( (mode->CrtcHDisplay == 1920) && (mode->CrtcVDisplay == 1080) )
|
||||
return MODE_OK;
|
||||
|
||||
if ( (mode->CrtcHDisplay == 1920) && (mode->CrtcVDisplay == 1200) )
|
||||
{
|
||||
GetIndexRegMask(CRTC_PORT, 0xD1, 0xFF, jReg);
|
||||
if (jReg & 0x01)
|
||||
return MODE_NOMODE;
|
||||
else
|
||||
return MODE_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Add for AST2100, ycchen@061807 */
|
||||
if ( (pAST->jChipType == AST2100) || (pAST->jChipType == AST2200) || (pAST->jChipType == AST2300) || (pAST->jChipType == AST1180) )
|
||||
{
|
||||
if ( (mode->CrtcHDisplay == 1920) && (mode->CrtcVDisplay == 1200) )
|
||||
{
|
||||
GetIndexRegMask(CRTC_PORT, 0xD1, 0xFF, jReg);
|
||||
if (jReg & 0x01)
|
||||
return MODE_NOMODE;
|
||||
else
|
||||
return MODE_OK;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
switch (mode->CrtcHDisplay)
|
||||
{
|
||||
case 640:
|
||||
@@ -1478,6 +1473,13 @@ ASTDoDDC(ScrnInfoPtr pScrn, int index)
|
||||
if (Flags)
|
||||
{
|
||||
MonInfo = MonInfo1 = xf86InterpretEDID(pScrn->scrnIndex, DDC_data);
|
||||
|
||||
/* Valid Wide Screen Support */
|
||||
if ( (MonInfo) && (MonInfo->det_mon[0].type == 0x00) )
|
||||
{
|
||||
if ( (MonInfo->det_mon[0].section.d_timings.h_active * 10 / MonInfo->det_mon[0].section.d_timings.v_active) < 14 )
|
||||
pAST->SupportWideScreen = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* For VGA2 CLONE Support, ycchen@012508 */
|
||||
|
||||
155
src/ast_mode.c
155
src/ast_mode.c
@@ -191,81 +191,68 @@ VBIOS_ENHTABLE_STRUCT Res1600x1200Table[] = {
|
||||
(SyncPP | Charx8Dot), 0xFF, 1, 0x33 },
|
||||
};
|
||||
|
||||
VBIOS_ENHTABLE_STRUCT Res1920x1200Table[] = {
|
||||
{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154, /* 60Hz */
|
||||
(SyncNP | Charx8Dot), 60, 1, 0x34 },
|
||||
{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154, /* 60Hz */
|
||||
(SyncNP | Charx8Dot), 0xFF, 1, 0x34 },
|
||||
/* 16:9 */
|
||||
VBIOS_ENHTABLE_STRUCT Res1360x768Table[] = {
|
||||
{1792, 1360, 64,112, 795, 768, 3, 6, VCLK85_5, /* 60Hz */
|
||||
(SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x39 },
|
||||
{1792, 1360, 64,112, 795, 768, 3, 6, VCLK85_5, /* end */
|
||||
(SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x39 },
|
||||
};
|
||||
|
||||
VBIOS_ENHTABLE_STRUCT Res1600x900Table[] = {
|
||||
{1760, 1600, 48, 32, 926, 900, 3, 5, VCLK97_75, /* 60Hz CVT RB */
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x3A },
|
||||
{1760, 1600, 48, 32, 926, 900, 3, 5, VCLK97_75, /* end */
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x3A },
|
||||
};
|
||||
|
||||
VBIOS_ENHTABLE_STRUCT Res1920x1080Table[] = {
|
||||
{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5, /* HDTV 60Hz */
|
||||
(SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x38 },
|
||||
{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5, /* end */
|
||||
(SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x38 },
|
||||
};
|
||||
|
||||
/* 16:10 */
|
||||
VBIOS_ENHTABLE_STRUCT Res1280x800Table[] = {
|
||||
{1440, 1280, 48, 32, 823, 800, 3, 6, VCLK71, /* 60Hz RB */
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode), 60, 1, 35 },
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 35 },
|
||||
{1680, 1280, 72,128, 831, 800, 3, 6, VCLK83_5, /* 60Hz */
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode), 60, 2, 0x35 },
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x35 },
|
||||
{1680, 1280, 72,128, 831, 800, 3, 6, VCLK83_5, /* 60Hz */
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode), 0xFF, 1, 0x35 },
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x35 },
|
||||
|
||||
};
|
||||
|
||||
VBIOS_ENHTABLE_STRUCT Res1440x900Table[] = {
|
||||
{1600, 1440, 48, 32, 926, 900, 3, 6, VCLK88_75, /* 60Hz RB */
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode), 60, 1, 0x36 },
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x36 },
|
||||
{1904, 1440, 80,152, 934, 900, 3, 6, VCLK106_5, /* 60Hz */
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode), 60, 2, 0x36 },
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x36 },
|
||||
{1904, 1440, 80,152, 934, 900, 3, 6, VCLK106_5, /* 60Hz */
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode), 0xFF, 1, 0x36 },
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x36 },
|
||||
};
|
||||
|
||||
VBIOS_ENHTABLE_STRUCT Res1680x1050Table[] = {
|
||||
{1840, 1680, 48, 32, 1080, 1050, 3, 6, VCLK119, /* 60Hz RB */
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode), 60, 1, 0x37 },
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x37 },
|
||||
{2240, 1680,104,176, 1089, 1050, 3, 6, VCLK146_25, /* 60Hz */
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode), 60, 2, 0x37 },
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x37 },
|
||||
{2240, 1680,104,176, 1089, 1050, 3, 6, VCLK146_25, /* 60Hz */
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode), 0xFF, 1, 0x37 },
|
||||
(SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x37 },
|
||||
};
|
||||
|
||||
/* HDTV */
|
||||
VBIOS_ENHTABLE_STRUCT Res1920x1080Table[] = {
|
||||
{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5, /* 60Hz */
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode), 60, 1, 0x38 },
|
||||
{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5, /* 60Hz */
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode), 0xFF, 1, 0x38 },
|
||||
VBIOS_ENHTABLE_STRUCT Res1920x1200Table[] = {
|
||||
{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154, /* 60Hz */
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x34 },
|
||||
{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154, /* 60Hz */
|
||||
(SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x34 },
|
||||
};
|
||||
|
||||
VBIOS_DCLK_INFO DCLKTable [] = {
|
||||
{0x2C, 0xE7, 0x03}, /* 00: VCLK25_175 */
|
||||
{0x95, 0x62, 0x03}, /* 01: VCLK28_322 */
|
||||
{0x67, 0x63, 0x01}, /* 02: VCLK31_5 */
|
||||
{0x76, 0x63, 0x01}, /* 03: VCLK36 */
|
||||
{0xEE, 0x67, 0x01}, /* 04: VCLK40 */
|
||||
{0x82, 0x62, 0x01}, /* 05: VCLK49_5 */
|
||||
{0xC6, 0x64, 0x01}, /* 06: VCLK50 */
|
||||
{0x94, 0x62, 0x01}, /* 07: VCLK56_25 */
|
||||
{0x80, 0x64, 0x00}, /* 08: VCLK65 */
|
||||
{0x7B, 0x63, 0x00}, /* 09: VCLK75 */
|
||||
{0x67, 0x62, 0x00}, /* 0A: VCLK78_75 */
|
||||
{0x7C, 0x62, 0x00}, /* 0B: VCLK94_5 */
|
||||
{0x8E, 0x62, 0x00}, /* 0C: VCLK108 */
|
||||
{0x85, 0x24, 0x00}, /* 0D: VCLK135 */
|
||||
{0x67, 0x22, 0x00}, /* 0E: VCLK157_5 */
|
||||
{0x6A, 0x22, 0x00}, /* 0F: VCLK162 */
|
||||
{0x4d, 0x4c, 0x80}, /* 10: VCLK154 */
|
||||
{0xa7, 0x78, 0x80}, /* 11: VCLK83.5 */
|
||||
{0x28, 0x49, 0x80}, /* 12: VCLK106.5 */
|
||||
{0x37, 0x49, 0x80}, /* 13: VCLK146.25 */
|
||||
{0x1f, 0x45, 0x80}, /* 14: VCLK148.5 */
|
||||
{0x47, 0x6c, 0x80}, /* 15: VCLK71 */
|
||||
{0x25, 0x65, 0x80}, /* 16: VCLK88.75 */
|
||||
{0x77, 0x58, 0x80}, /* 17: VCLK119 */
|
||||
};
|
||||
|
||||
VBIOS_DCLK_INFO DCLKTable_AST2100 [] = {
|
||||
{0x2C, 0xE7, 0x03}, /* 00: VCLK25_175 */
|
||||
{0x95, 0x62, 0x03}, /* 01: VCLK28_322 */
|
||||
{0x67, 0x63, 0x01}, /* 02: VCLK31_5 */
|
||||
{0x67, 0x63, 0x01}, /* 02: VCLK31_5 */
|
||||
{0x76, 0x63, 0x01}, /* 03: VCLK36 */
|
||||
{0xEE, 0x67, 0x01}, /* 04: VCLK40 */
|
||||
{0x82, 0x62, 0x01}, /* 05: VCLK49_5 */
|
||||
@@ -279,14 +266,43 @@ VBIOS_DCLK_INFO DCLKTable_AST2100 [] = {
|
||||
{0x85, 0x24, 0x00}, /* 0D: VCLK135 */
|
||||
{0x67, 0x22, 0x00}, /* 0E: VCLK157_5 */
|
||||
{0x6A, 0x22, 0x00}, /* 0F: VCLK162 */
|
||||
{0x4d, 0x4c, 0x80}, /* 10: VCLK154 */
|
||||
{0x68, 0x6f, 0x80}, /* 11: VCLK83.5 */
|
||||
{0x28, 0x49, 0x80}, /* 12: VCLK106.5 */
|
||||
{0x37, 0x49, 0x80}, /* 13: VCLK146.25 */
|
||||
{0x1f, 0x45, 0x80}, /* 14: VCLK148.5 */
|
||||
{0x47, 0x6c, 0x80}, /* 15: VCLK71 */
|
||||
{0x25, 0x65, 0x80}, /* 16: VCLK88.75 */
|
||||
{0x77, 0x58, 0x80}, /* 17: VCLK119 */
|
||||
{0x4d, 0x4c, 0x80}, /* 10: VCLK154 */
|
||||
{0xa7, 0x78, 0x80}, /* 11: VCLK83.5 */
|
||||
{0x28, 0x49, 0x80}, /* 12: VCLK106.5 */
|
||||
{0x37, 0x49, 0x80}, /* 13: VCLK146.25 */
|
||||
{0x1f, 0x45, 0x80}, /* 14: VCLK148.5 */
|
||||
{0x47, 0x6c, 0x80}, /* 15: VCLK71 */
|
||||
{0x25, 0x65, 0x80}, /* 16: VCLK88.75 */
|
||||
{0x77, 0x58, 0x80}, /* 17: VCLK119 */
|
||||
{0x32, 0x67, 0x80}, /* 18: VCLK85_5 */
|
||||
};
|
||||
|
||||
VBIOS_DCLK_INFO DCLKTable_AST2100 [] = {
|
||||
{0x2C, 0xE7, 0x03}, /* 00: VCLK25_175 */
|
||||
{0x95, 0x62, 0x03}, /* 01: VCLK28_322 */
|
||||
{0x67, 0x63, 0x01}, /* 02: VCLK31_5 */
|
||||
{0x76, 0x63, 0x01}, /* 03: VCLK36 */
|
||||
{0xEE, 0x67, 0x01}, /* 04: VCLK40 */
|
||||
{0x82, 0x62, 0x01}, /* 05: VCLK49_5 */
|
||||
{0xC6, 0x64, 0x01}, /* 06: VCLK50 */
|
||||
{0x94, 0x62, 0x01}, /* 07: VCLK56_25 */
|
||||
{0x80, 0x64, 0x00}, /* 08: VCLK65 */
|
||||
{0x7B, 0x63, 0x00}, /* 09: VCLK75 */
|
||||
{0x67, 0x62, 0x00}, /* 0A: VCLK78_75 */
|
||||
{0x7C, 0x62, 0x00}, /* 0B: VCLK94_5 */
|
||||
{0x8E, 0x62, 0x00}, /* 0C: VCLK108 */
|
||||
{0x85, 0x24, 0x00}, /* 0D: VCLK135 */
|
||||
{0x67, 0x22, 0x00}, /* 0E: VCLK157_5 */
|
||||
{0x6A, 0x22, 0x00}, /* 0F: VCLK162 */
|
||||
{0x4d, 0x4c, 0x80}, /* 10: VCLK154 */
|
||||
{0x68, 0x6f, 0x80}, /* 11: VCLK83.5 */
|
||||
{0x28, 0x49, 0x80}, /* 12: VCLK106.5 */
|
||||
{0x37, 0x49, 0x80}, /* 13: VCLK146.25 */
|
||||
{0x1f, 0x45, 0x80}, /* 14: VCLK148.5 */
|
||||
{0x47, 0x6c, 0x80}, /* 15: VCLK71 */
|
||||
{0x25, 0x65, 0x80}, /* 16: VCLK88.75 */
|
||||
{0x77, 0x58, 0x80}, /* 17: VCLK119 */
|
||||
{0x32, 0x67, 0x80}, /* 18: VCLK85_5 */
|
||||
};
|
||||
|
||||
VBIOS_DAC_INFO DAC_TEXT[] = {
|
||||
@@ -525,11 +541,17 @@ Bool bGetAST1000VGAModeInfo(ScrnInfoPtr pScrn, DisplayModePtr mode, PVBIOS_MODE_
|
||||
else
|
||||
pVGAModeInfo->pEnhTableEntry = (PVBIOS_ENHTABLE_STRUCT) &Res1280x1024Table[ulRefreshRateIndex];
|
||||
break;
|
||||
case 1360:
|
||||
pVGAModeInfo->pEnhTableEntry = (PVBIOS_ENHTABLE_STRUCT) &Res1360x768Table[ulRefreshRateIndex];
|
||||
break;
|
||||
case 1440:
|
||||
pVGAModeInfo->pEnhTableEntry = (PVBIOS_ENHTABLE_STRUCT) &Res1440x900Table[ulRefreshRateIndex];
|
||||
break;
|
||||
case 1600:
|
||||
pVGAModeInfo->pEnhTableEntry = (PVBIOS_ENHTABLE_STRUCT) &Res1600x1200Table[ulRefreshRateIndex];
|
||||
if (mode->CrtcVDisplay == 900)
|
||||
pVGAModeInfo->pEnhTableEntry = (PVBIOS_ENHTABLE_STRUCT) &Res1600x900Table[ulRefreshRateIndex];
|
||||
else
|
||||
pVGAModeInfo->pEnhTableEntry = (PVBIOS_ENHTABLE_STRUCT) &Res1600x1200Table[ulRefreshRateIndex];
|
||||
break;
|
||||
case 1680:
|
||||
pVGAModeInfo->pEnhTableEntry = (PVBIOS_ENHTABLE_STRUCT) &Res1680x1050Table[ulRefreshRateIndex];
|
||||
@@ -602,14 +624,17 @@ Bool bGetAST1000VGAModeInfo(ScrnInfoPtr pScrn, DisplayModePtr mode, PVBIOS_MODE_
|
||||
SetIndexReg(CRTC_PORT, 0x8E, (UCHAR) (ulModeID & 0xFF));
|
||||
|
||||
/* NewModeInfo */
|
||||
SetIndexReg(CRTC_PORT, 0x91, 0xA8); /* signature */
|
||||
SetIndexReg(CRTC_PORT, 0x92, (UCHAR) (pScrn->bitsPerPixel) );
|
||||
SetIndexReg(CRTC_PORT, 0x93, (UCHAR) (mode->Clock / 1000) );
|
||||
SetIndexReg(CRTC_PORT, 0x94, (UCHAR) (mode->CrtcHDisplay) );
|
||||
SetIndexReg(CRTC_PORT, 0x95, (UCHAR) (mode->CrtcHDisplay >> 8) ); /* color depth */
|
||||
SetIndexReg(CRTC_PORT, 0x96, (UCHAR) (mode->CrtcVDisplay) );
|
||||
SetIndexReg(CRTC_PORT, 0x97, (UCHAR) (mode->CrtcVDisplay >> 8) ); /* color depth */
|
||||
|
||||
SetIndexReg(CRTC_PORT, 0x91, 0x00); /* clear signature */
|
||||
if (pVGAModeInfo->pEnhTableEntry->Flags & NewModeInfo)
|
||||
{
|
||||
SetIndexReg(CRTC_PORT, 0x91, 0xA8); /* signature */
|
||||
SetIndexReg(CRTC_PORT, 0x92, (UCHAR) (pScrn->bitsPerPixel) );
|
||||
SetIndexReg(CRTC_PORT, 0x93, (UCHAR) (mode->Clock / 1000) );
|
||||
SetIndexReg(CRTC_PORT, 0x94, (UCHAR) (mode->CrtcHDisplay) );
|
||||
SetIndexReg(CRTC_PORT, 0x95, (UCHAR) (mode->CrtcHDisplay >> 8) ); /* color depth */
|
||||
SetIndexReg(CRTC_PORT, 0x96, (UCHAR) (mode->CrtcVDisplay) );
|
||||
SetIndexReg(CRTC_PORT, 0x97, (UCHAR) (mode->CrtcVDisplay >> 8) ); /* color depth */
|
||||
}
|
||||
}
|
||||
|
||||
return (TRUE);
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
#define VCLK71 0x15
|
||||
#define VCLK88_75 0x16
|
||||
#define VCLK119 0x17
|
||||
#define VCLK85_5 0x18
|
||||
#define VCLK97_75 0x19
|
||||
|
||||
/* Flags Definition */
|
||||
#define Charx8Dot 0x00000001
|
||||
@@ -69,7 +71,8 @@
|
||||
#define SyncNN 0x000000C0
|
||||
#define HBorder 0x00000020
|
||||
#define VBorder 0x00000010
|
||||
#define WideScreenMode 0x00000100
|
||||
#define WideScreenMode 0x00000100
|
||||
#define NewModeInfo 0x00000200
|
||||
|
||||
/* DAC Definition */
|
||||
#define DAC_NUM_TEXT 64
|
||||
|
||||
@@ -61,6 +61,7 @@ void GetDRAMInfo(ScrnInfoPtr pScrn);
|
||||
ULONG GetVRAMInfo(ScrnInfoPtr pScrn);
|
||||
ULONG GetMaxDCLK(ScrnInfoPtr pScrn);
|
||||
void GetChipType(ScrnInfoPtr pScrn);
|
||||
void GetScratchOptions(ScrnInfoPtr pScrn);
|
||||
void vAST1000DisplayOn(ASTRecPtr pAST);
|
||||
void vAST1000DisplayOff(ASTRecPtr pAST);
|
||||
void ASTBlankScreen(ScrnInfoPtr pScrn, Bool unblack);
|
||||
@@ -282,13 +283,7 @@ GetChipType(ScrnInfoPtr pScrn)
|
||||
|
||||
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000;
|
||||
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1;
|
||||
|
||||
ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1207c);
|
||||
|
||||
#if 0
|
||||
if ((ulData & 0x0300) == 0x0200)
|
||||
pAST->jChipType = AST1100;
|
||||
#endif
|
||||
switch (ulData & 0x0300)
|
||||
{
|
||||
case 0x0200:
|
||||
@@ -307,13 +302,51 @@ GetChipType(ScrnInfoPtr pScrn)
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AST2100 Detected.\n");
|
||||
pAST->jChipType = AST2100;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
GetScratchOptions(ScrnInfoPtr pScrn)
|
||||
{
|
||||
ASTRecPtr pAST = ASTPTR(pScrn);
|
||||
ULONG ulData;
|
||||
UCHAR jReg;
|
||||
|
||||
/* VGA2 Clone Support */
|
||||
GetIndexRegMask(CRTC_PORT, 0x90, 0xFF, jReg);
|
||||
if (jReg & 0x10)
|
||||
pAST->VGA2Clone = TRUE;
|
||||
|
||||
}
|
||||
|
||||
/* WideScreen Support */
|
||||
switch (pAST->jChipType)
|
||||
{
|
||||
case AST1180:
|
||||
pAST->SupportWideScreen = TRUE;
|
||||
break;
|
||||
case AST2000:
|
||||
pAST->SupportWideScreen = FALSE;
|
||||
break;
|
||||
default:
|
||||
GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg);
|
||||
if (!(jReg & 0x80))
|
||||
pAST->SupportWideScreen = TRUE;
|
||||
else if (jReg & 0x01)
|
||||
pAST->SupportWideScreen = TRUE;
|
||||
else
|
||||
{
|
||||
pAST->SupportWideScreen = FALSE;
|
||||
if (pAST->jChipType == AST2300) /* for AST1300 */
|
||||
{
|
||||
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000;
|
||||
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1;
|
||||
ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1207c);
|
||||
if ((ulData & 0x0300) == 0) /* AST1300 */
|
||||
pAST->SupportWideScreen = TRUE;
|
||||
}
|
||||
}
|
||||
} /* switch case */
|
||||
|
||||
} /* GetScratchOptions */
|
||||
|
||||
void
|
||||
vSetStartAddressCRT1(ASTRecPtr pAST, ULONG base)
|
||||
|
||||
Reference in New Issue
Block a user