summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorY.C. Chen <yc_chen@aspeedtech.com>2014-03-14 18:23:04 +0800
committerY.C. Chen <yc_chen@aspeedtech.com>2014-03-14 18:23:04 +0800
commit7f24775a468066601a79beaffb4efa5a36c5ed59 (patch)
treec70f9d9f1f331e6f610bbe43f9d515f20bb4d867
parentf7913400cd902aeced5e0fb994bd3c11c90a49b9 (diff)
Support AST2400
-rw-r--r--src/ast.h1
-rw-r--r--src/ast_2dtool.c3
-rw-r--r--src/ast_accel.c4
-rw-r--r--src/ast_driver.c25
-rw-r--r--src/ast_mode.c6
-rw-r--r--src/ast_vgatool.c16
6 files changed, 22 insertions, 33 deletions
diff --git a/src/ast.h b/src/ast.h
index 81ba07a..4a665d2 100644
--- a/src/ast.h
+++ b/src/ast.h
@@ -67,6 +67,7 @@ typedef enum _CHIP_ID {
AST2200,
AST2150,
AST2300,
+ AST2400,
AST1180
} CHIP_ID;
diff --git a/src/ast_2dtool.c b/src/ast_2dtool.c
index 603697c..210d75c 100644
--- a/src/ast_2dtool.c
+++ b/src/ast_2dtool.c
@@ -248,7 +248,7 @@ bEnable2D(ScrnInfoPtr pScrn, ASTRecPtr pAST)
ULONG ulData;
PFN_bENABLE_CMDQ pfnEnableCMDQ = bEnableCMDQ;
- if (pAST->jChipType == AST2300)
+ if ( (pAST->jChipType == AST2300) || (pAST->jChipType == AST2400) )
pfnEnableCMDQ = bEnableCMDQ2300;
switch (pAST->jChipType)
@@ -258,6 +258,7 @@ bEnable2D(ScrnInfoPtr pScrn, ASTRecPtr pAST)
case AST2200:
case AST2150:
case AST2300:
+ case AST2400:
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000;
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1;
diff --git a/src/ast_accel.c b/src/ast_accel.c
index a8fd206..71eeb79 100644
--- a/src/ast_accel.c
+++ b/src/ast_accel.c
@@ -197,7 +197,7 @@ ASTAccelInit(ScreenPtr pScreen)
/* Solid Lines */
if (pAST->ENGCaps & ENG_CAP_SolidLine)
{
- if ( (pAST->jChipType == AST2300) || (pAST->jChipType == AST1180) )
+ if ( (pAST->jChipType == AST2300) || (pAST->jChipType == AST2400) || (pAST->jChipType == AST1180) )
{
infoPtr->SubsequentSolidTwoPointLine = AIPSubsequentSolidTwoPointLine;
}
@@ -214,7 +214,7 @@ ASTAccelInit(ScreenPtr pScreen)
/* Dashed Lines */
if (pAST->ENGCaps & ENG_CAP_DashedLine)
{
- if ( (pAST->jChipType == AST2300) || (pAST->jChipType == AST1180) )
+ if ( (pAST->jChipType == AST2300) || (pAST->jChipType == AST2400) || (pAST->jChipType == AST1180) )
{
infoPtr->SubsequentDashedTwoPointLine = AIPSubsequentDashedTwoPointLine;
}
diff --git a/src/ast_driver.c b/src/ast_driver.c
index e0dd4fa..4001c36 100644
--- a/src/ast_driver.c
+++ b/src/ast_driver.c
@@ -300,21 +300,6 @@ ASTProbe(DriverPtr drv, int flags)
for (i = 0; i < numUsed; i++) {
ScrnInfoPtr pScrn = NULL;
-#ifdef XSERVER_LIBPCIACCESS
- {
- struct pci_device *pPci = xf86GetPciInfoForEntity(usedChips[i]);
-
- if (pci_device_has_kernel_driver(pPci)) {
- xf86DrvMsg(0, X_ERROR,
- "ast: The PCI device 0x%x at %2.2d@%2.2d:%2.2d:%1.1d has a kernel module claiming it.\n",
- pPci->device_id, pPci->bus, pPci->domain, pPci->dev, pPci->func);
- xf86DrvMsg(0, X_ERROR,
- "cirrus: This driver cannot operate until it has been unloaded.\n");
- return FALSE;
- }
- }
-#endif
-
/* Allocate new ScrnInfoRec and claim the slot */
if ((pScrn = xf86ConfigPciEntity(pScrn, 0, usedChips[i],
ASTPciChipsets, 0, 0, 0, 0, 0)))
@@ -657,7 +642,9 @@ ASTPreInit(ScrnInfoPtr pScrn, int flags)
bASTRegInit(pScrn);
/* Get Chip Type */
- if (PCI_DEV_REVISION(pAST->PciInfo) >= 0x20)
+ if (PCI_DEV_REVISION(pAST->PciInfo) >= 0x30)
+ pAST->jChipType = AST2400;
+ else if (PCI_DEV_REVISION(pAST->PciInfo) >= 0x20)
pAST->jChipType = AST2300;
else if (PCI_DEV_REVISION(pAST->PciInfo) >= 0x10)
GetChipType(pScrn);
@@ -707,7 +694,7 @@ ASTPreInit(ScrnInfoPtr pScrn, int flags)
clockRanges->doubleScanAllowed = FALSE;
/* Add for AST2100, ycchen@061807 */
- if ((pAST->jChipType == AST2100) || (pAST->jChipType == AST2200) || (pAST->jChipType == AST2300) || (pAST->jChipType == AST1180))
+ if ((pAST->jChipType == AST2100) || (pAST->jChipType == AST2200) || (pAST->jChipType == AST2300) || (pAST->jChipType == AST2400) || (pAST->jChipType == AST1180))
{
maxPitch = 1920;
maxHeight = 1200;
@@ -1023,7 +1010,7 @@ ASTScreenInit(SCREEN_INIT_ARGS_DECL)
xf86DPMSInit(pScreen, ASTDisplayPowerManagementSet, 0);
#ifdef AstVideo
- if ( (pAST->jChipType == AST1180) || (pAST->jChipType == AST2300) )
+ if ( (pAST->jChipType == AST1180) || (pAST->jChipType == AST2300) || (pAST->jChipType == AST2400) )
{
xf86DrvMsg(pScrn->scrnIndex, X_INFO,"AST Initial Video()\n");
ASTInitVideo(pScreen);
@@ -1217,7 +1204,7 @@ ASTValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
if ( (mode->CrtcHDisplay == 1600) && (mode->CrtcVDisplay == 900) )
return MODE_OK;
- if ( (pAST->jChipType == AST2100) || (pAST->jChipType == AST2200) || (pAST->jChipType == AST2300) || (pAST->jChipType == AST1180) )
+ if ( (pAST->jChipType == AST2100) || (pAST->jChipType == AST2200) || (pAST->jChipType == AST2300) || (pAST->jChipType == AST2400) || (pAST->jChipType == AST1180) )
{
if ( (mode->CrtcHDisplay == 1920) && (mode->CrtcVDisplay == 1080) )
return MODE_OK;
diff --git a/src/ast_mode.c b/src/ast_mode.c
index 5911bb5..de6f4f1 100644
--- a/src/ast_mode.c
+++ b/src/ast_mode.c
@@ -694,7 +694,7 @@ void vSetStdReg(ScrnInfoPtr pScrn, DisplayModePtr mode, PVBIOS_MODE_INFO pVGAMod
}
-
+
}
void
@@ -795,7 +795,7 @@ void vSetDCLKReg(ScrnInfoPtr pScrn, DisplayModePtr mode, PVBIOS_MODE_INFO pVGAMo
pAST = ASTPTR(pScrn);
pEnhModePtr = pVGAModeInfo->pEnhTableEntry;
- if ((pAST->jChipType == AST2100) || (pAST->jChipType == AST1100) || (pAST->jChipType == AST2200) || (pAST->jChipType == AST2150) || (pAST->jChipType == AST2300))
+ if ((pAST->jChipType == AST2100) || (pAST->jChipType == AST1100) || (pAST->jChipType == AST2200) || (pAST->jChipType == AST2150) || (pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
pDCLKPtr = &DCLKTable_AST2100[pEnhModePtr->DCLKIndex];
else
pDCLKPtr = &DCLKTable[pEnhModePtr->DCLKIndex];
@@ -847,7 +847,7 @@ void vSetExtReg(ScrnInfoPtr pScrn, DisplayModePtr mode, PVBIOS_MODE_INFO pVGAMod
#endif
/* Set Threshold */
- if (pAST->jChipType == AST2300)
+ if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
{
SetIndexReg(CRTC_PORT,0xA7, 0x78);
SetIndexReg(CRTC_PORT,0xA6, 0x60);
diff --git a/src/ast_vgatool.c b/src/ast_vgatool.c
index fa9d1e2..315c77f 100644
--- a/src/ast_vgatool.c
+++ b/src/ast_vgatool.c
@@ -126,7 +126,7 @@ GetDRAMInfo(ScrnInfoPtr pScrn)
pAST->ulDRAMBusWidth = 32;
/* Get DRAM Type */
- if (pAST->jChipType == AST2300)
+ if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
{
switch (ulData & 0x03)
{
@@ -236,7 +236,7 @@ GetMaxDCLK(ScrnInfoPtr pScrn)
/* Modify DARM utilization to 60% for AST1100/2100 16bits DRAM, ycchen@032508 */
if ( ((pAST->jChipType == AST2100) || (pAST->jChipType == AST1100) || (pAST->jChipType == AST2200) || (pAST->jChipType == AST2150)) && (ulDRAMBusWidth == 16) )
DRAMEfficiency = 600;
- else if (pAST->jChipType == AST2300)
+ else if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
DRAMEfficiency = 400;
ulDRAMBandwidth = ulMCLK * ulDRAMBusWidth * 2 / 8;
ActualDRAMBandwidth = ulDRAMBandwidth * DRAMEfficiency / 1000;
@@ -259,7 +259,7 @@ GetMaxDCLK(ScrnInfoPtr pScrn)
}
/* Add for AST2100, ycchen@061807 */
- if ((pAST->jChipType == AST2100) || (pAST->jChipType == AST2200) || (pAST->jChipType == AST2300) || (pAST->jChipType == AST1180) )
+ if ((pAST->jChipType == AST2100) || (pAST->jChipType == AST2200) || (pAST->jChipType == AST2300) || (pAST->jChipType == AST2400) || (pAST->jChipType == AST1180) )
{
if (ulDCLK > 200) ulDCLK = 200;
}
@@ -334,7 +334,7 @@ GetScratchOptions(ScrnInfoPtr pScrn)
else
{
pAST->SupportWideScreen = FALSE;
- if (pAST->jChipType == AST2300) /* for AST1300 */
+ if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400)) /* for AST1300 */
{
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000;
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1;
@@ -721,7 +721,7 @@ void vSetDefExtReg(ScrnInfoPtr pScrn)
}
/* Set Ext. Reg */
- if (pAST->jChipType == AST2300)
+ if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
{
if (PCI_DEV_REVISION(pAST->PciInfo) > 0x20)
pjExtRegInfo = ExtRegInfo_AST2300;
@@ -749,7 +749,7 @@ void vSetDefExtReg(ScrnInfoPtr pScrn)
/* Enable RAMDAC for A1, ycchen@113005 */
jReg = 0x04;
- if (pAST->jChipType == AST2300)
+ if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
jReg |= 0x20;
SetIndexRegMask(CRTC_PORT,0xB6, 0xFF, jReg);
@@ -2546,7 +2546,7 @@ void vGetDefaultSettings(ScrnInfoPtr pScrn)
ASTRecPtr pAST = ASTPTR(pScrn);
ULONG ulData;
- if (pAST->jChipType == AST2300)
+ if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
{
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000;
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1;
@@ -2604,7 +2604,7 @@ Bool InitVGA(ScrnInfoPtr pScrn, ULONG Flags)
if (Flags == 0)
vGetDefaultSettings(pScrn);
- if (pAST->jChipType == AST2300)
+ if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
vInitAST2300DRAMReg(pScrn);
else
vInitDRAMReg(pScrn);