Module Name: xsrc
Committed By: mrg
Date: Mon Jul 20 00:10:28 UTC 2015
Modified Files:
xsrc/external/mit/xf86-video-ast/dist/src: ast_accel.c ast_driver.c
ast_vgatool.c
xsrc/external/mit/xf86-video-cirrus/dist/src: lg_driver.c
xsrc/external/mit/xf86-video-geode/dist/src: geode_msr.c
xsrc/external/mit/xf86-video-mach64/dist/src: atimach64render.c
atipreinit.c
xsrc/external/mit/xf86-video-savage/dist/src: savage_dri.c
xsrc/external/mit/xf86-video-siliconmotion/dist/src: smi.h smi_driver.c
smilynx_hw.c
Removed Files:
xsrc/external/mit/xf86-video-mach64/dist/src: atiaudio.c atidecoder.c
atidecoder.h
Log Message:
merge xf86-video- ast 1.0.1, cirrus 1.5.3, geode 2.11.17, mach64 6.9.5,
savage 2.3.8 and siliconmotion 1.7.8.
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
xsrc/external/mit/xf86-video-ast/dist/src/ast_accel.c
cvs rdiff -u -r1.4 -r1.5 \
xsrc/external/mit/xf86-video-ast/dist/src/ast_driver.c
cvs rdiff -u -r1.11 -r1.12 \
xsrc/external/mit/xf86-video-ast/dist/src/ast_vgatool.c
cvs rdiff -u -r1.6 -r1.7 \
xsrc/external/mit/xf86-video-cirrus/dist/src/lg_driver.c
cvs rdiff -u -r1.4 -r1.5 \
xsrc/external/mit/xf86-video-geode/dist/src/geode_msr.c
cvs rdiff -u -r1.1.1.1 -r0 \
xsrc/external/mit/xf86-video-mach64/dist/src/atiaudio.c \
xsrc/external/mit/xf86-video-mach64/dist/src/atidecoder.c \
xsrc/external/mit/xf86-video-mach64/dist/src/atidecoder.h
cvs rdiff -u -r1.2 -r1.3 \
xsrc/external/mit/xf86-video-mach64/dist/src/atimach64render.c
cvs rdiff -u -r1.4 -r1.5 \
xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c
cvs rdiff -u -r1.4 -r1.5 \
xsrc/external/mit/xf86-video-savage/dist/src/savage_dri.c
cvs rdiff -u -r1.4 -r1.5 \
xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi.h
cvs rdiff -u -r1.3 -r1.4 \
xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi_driver.c \
xsrc/external/mit/xf86-video-siliconmotion/dist/src/smilynx_hw.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: xsrc/external/mit/xf86-video-ast/dist/src/ast_accel.c
diff -u xsrc/external/mit/xf86-video-ast/dist/src/ast_accel.c:1.2 xsrc/external/mit/xf86-video-ast/dist/src/ast_accel.c:1.3
--- xsrc/external/mit/xf86-video-ast/dist/src/ast_accel.c:1.2 Thu Mar 20 00:47:21 2014
+++ xsrc/external/mit/xf86-video-ast/dist/src/ast_accel.c Mon Jul 20 00:10:28 2015
@@ -36,7 +36,6 @@
#include "xf86xv.h"
#include <X11/extensions/Xv.h>
-#include "xf86PciInfo.h"
#include "xf86Pci.h"
/* framebuffer offscreen manager */
@@ -53,6 +52,7 @@
/* Driver specific headers */
#include "ast.h"
+#include "ast_2dtool.h"
extern UCHAR *pjRequestCMDQ(ASTRecPtr pAST, ULONG ulDataLen);
@@ -100,12 +100,7 @@ int ASTXAAPatternROP[16]=
ROP_1
};
-/* extern function */
-extern void vWaitEngIdle(ScrnInfoPtr pScrn, ASTRecPtr pAST);
-extern Bool bGetLineTerm(_LINEInfo *LineInfo, LINEPARAM *dsLineParam);
-
/* Prototype type declaration */
-Bool ASTAccelInit(ScreenPtr pScreen);
static void ASTSync(ScrnInfoPtr pScrn);
static void ASTSetupForScreenToScreenCopy(ScrnInfoPtr pScrn,
int xdir, int ydir, int rop,
@@ -198,7 +193,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;
}
@@ -215,7 +210,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;
}
@@ -295,7 +290,7 @@ ASTSync(ScrnInfoPtr pScrn)
ASTRecPtr pAST = ASTPTR(pScrn);
/* wait engle idle */
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
} /* end of ASTSync */
@@ -334,7 +329,7 @@ static void ASTSetupForScreenToScreenCop
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*2);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*2);
ASTSetupSRCPitch(pSingleCMD, pAST->VideoModeInfo.ScreenPitch);
pSingleCMD++;
@@ -423,7 +418,7 @@ ASTSubsequentScreenToScreenCopy(ScrnInfo
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*6);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*6);
ASTSetupSRCBase(pSingleCMD, srcbase);
pSingleCMD++;
@@ -450,7 +445,7 @@ ASTSubsequentScreenToScreenCopy(ScrnInfo
ASTSetupRECTXY_MMIO(width, height);
ASTSetupCMDReg_MMIO(cmdreg);
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
} /* width & height check */
@@ -491,7 +486,7 @@ ASTSetupForSolidFill(ScrnInfoPtr pScrn,
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*2);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*2);
ASTSetupDSTPitchHeight(pSingleCMD, pAST->VideoModeInfo.ScreenPitch, -1);
pSingleCMD++;
@@ -546,7 +541,7 @@ ASTSubsequentSolidFillRect(ScrnInfoPtr p
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*4);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*4);
ASTSetupDSTBase(pSingleCMD, dstbase);
pSingleCMD++;
@@ -567,7 +562,7 @@ ASTSubsequentSolidFillRect(ScrnInfoPtr p
ASTSetupRECTXY_MMIO(width, height);
ASTSetupCMDReg_MMIO(cmdreg);
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
@@ -609,7 +604,7 @@ static void ASTSetupForSolidLine(ScrnInf
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*3);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*3);
ASTSetupDSTPitchHeight(pSingleCMD, pAST->VideoModeInfo.ScreenPitch, -1);
pSingleCMD++;
@@ -676,7 +671,7 @@ static void ASTSubsequentSolidHorVertLin
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*4);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*4);
ASTSetupDSTBase(pSingleCMD, dstbase);
pSingleCMD++;
@@ -697,7 +692,7 @@ static void ASTSubsequentSolidHorVertLin
ASTSetupRECTXY_MMIO(width, height);
ASTSetupCMDReg_MMIO(cmdreg);
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
@@ -747,7 +742,7 @@ static void ASTSubsequentSolidTwoPointLi
LineInfo.X2 = x2;
LineInfo.Y2 = y2;
- bGetLineTerm(&LineInfo, &dsLineParam); /* Get Line Parameter */
+ bASTGetLineTerm(&LineInfo, &dsLineParam); /* Get Line Parameter */
if (dsLineParam.dwLineAttributes & LINEPARAM_X_DEC)
ulCommand |= CMD_X_DEC;
@@ -762,7 +757,7 @@ static void ASTSubsequentSolidTwoPointLi
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*7);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*7);
ASTSetupDSTBase(pSingleCMD, dstbase);
pSingleCMD++;
@@ -782,7 +777,7 @@ static void ASTSubsequentSolidTwoPointLi
mUpdateWritePointer;
/* Patch KDE pass abnormal point, ycchen@052507 */
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
else
@@ -795,7 +790,7 @@ static void ASTSubsequentSolidTwoPointLi
ASTSetupLineK2Term_MMIO(dsLineParam.dwK2Term);
ASTSetupCMDReg_MMIO(ulCommand);
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
@@ -843,7 +838,7 @@ ASTSetupForDashedLine(ScrnInfoPtr pScrn,
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*5);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*5);
ASTSetupDSTPitchHeight(pSingleCMD, pAST->VideoModeInfo.ScreenPitch, -1);
pSingleCMD++;
@@ -916,7 +911,7 @@ ASTSubsequentDashedTwoPointLine(ScrnInfo
LineInfo.X2 = x2;
LineInfo.Y2 = y2;
- bGetLineTerm(&LineInfo, &dsLineParam); /* Get Line Parameter */
+ bASTGetLineTerm(&LineInfo, &dsLineParam); /* Get Line Parameter */
if (dsLineParam.dwLineAttributes & LINEPARAM_X_DEC)
ulCommand |= CMD_X_DEC;
@@ -931,7 +926,7 @@ ASTSubsequentDashedTwoPointLine(ScrnInfo
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*7);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*7);
ASTSetupDSTBase(pSingleCMD, dstbase);
pSingleCMD++;
@@ -951,7 +946,7 @@ ASTSubsequentDashedTwoPointLine(ScrnInfo
mUpdateWritePointer;
/* Patch KDE pass abnormal point, ycchen@052507 */
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
else
@@ -964,7 +959,7 @@ ASTSubsequentDashedTwoPointLine(ScrnInfo
ASTSetupLineK2Term_MMIO(dsLineParam.dwK2Term);
ASTSetupCMDReg_MMIO(ulCommand);
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
@@ -1006,7 +1001,7 @@ ASTSetupForMonoPatternFill(ScrnInfoPtr p
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*5);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*5);
ASTSetupDSTPitchHeight(pSingleCMD, pAST->VideoModeInfo.ScreenPitch, -1);
pSingleCMD++;
@@ -1069,7 +1064,7 @@ ASTSubsequentMonoPatternFill(ScrnInfoPtr
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*4);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*4);
ASTSetupDSTBase(pSingleCMD, dstbase);
pSingleCMD++;
@@ -1090,7 +1085,7 @@ ASTSubsequentMonoPatternFill(ScrnInfoPtr
ASTSetupRECTXY_MMIO(width, height);
ASTSetupCMDReg_MMIO(cmdreg);
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
} /* end of ASTSubsequentMonoPatternFill */
@@ -1135,7 +1130,7 @@ ASTSetupForColor8x8PatternFill(ScrnInfoP
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*(1 + ulPatSize/4));
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*(1 + ulPatSize/4));
ASTSetupDSTPitchHeight(pSingleCMD, pAST->VideoModeInfo.ScreenPitch, -1);
pSingleCMD++;
for (i=0; i<8; i++)
@@ -1200,7 +1195,7 @@ ASTSubsequentColor8x8PatternFillRect(Scr
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*4);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*4);
ASTSetupDSTBase(pSingleCMD, dstbase);
pSingleCMD++;
@@ -1221,7 +1216,7 @@ ASTSubsequentColor8x8PatternFillRect(Scr
ASTSetupRECTXY_MMIO(width, height);
ASTSetupCMDReg_MMIO(cmdreg);
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
} /* ASTSubsequentColor8x8PatternFillRect */
@@ -1266,7 +1261,7 @@ ASTSetupForCPUToScreenColorExpandFill(Sc
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*3);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*3);
ASTSetupDSTPitchHeight(pSingleCMD, pAST->VideoModeInfo.ScreenPitch, -1);
pSingleCMD++;
@@ -1324,7 +1319,7 @@ ASTSubsequentCPUToScreenColorExpandFill(
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*5);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*5);
ASTSetupSRCPitch(pSingleCMD, ((width+7)/8));
pSingleCMD++;
@@ -1350,7 +1345,7 @@ ASTSubsequentCPUToScreenColorExpandFill(
ASTSetupRECTXY_MMIO(width, height);
ASTSetupCMDReg_MMIO(cmdreg);
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
@@ -1398,7 +1393,7 @@ ASTSetupForScreenToScreenColorExpandFill
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*3);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*3);
ASTSetupDSTPitchHeight(pSingleCMD, pAST->VideoModeInfo.ScreenPitch, -1);
pSingleCMD++;
@@ -1459,7 +1454,7 @@ ASTSubsequentScreenToScreenColorExpandFi
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*6);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*6);
ASTSetupSRCBase(pSingleCMD, srcbase);
pSingleCMD++;
@@ -1486,7 +1481,7 @@ ASTSubsequentScreenToScreenColorExpandFi
ASTSetupRECTXY_MMIO(width, height);
ASTSetupCMDReg_MMIO(cmdreg);
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
@@ -1503,7 +1498,7 @@ ASTSetHWClipping(ScrnInfoPtr pScrn, int
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*2);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*2);
ASTSetupCLIP1(pSingleCMD, pAST->clip_left, pAST->clip_top - delta_y);
pSingleCMD++;
@@ -1584,7 +1579,7 @@ static void AIPSubsequentSolidTwoPointLi
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*5);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*5);
ASTSetupDSTBase(pSingleCMD, dstbase);
pSingleCMD++;
@@ -1600,7 +1595,7 @@ static void AIPSubsequentSolidTwoPointLi
mUpdateWritePointer;
/* Patch KDE pass abnormal point, ycchen@052507 */
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
else
@@ -1611,7 +1606,7 @@ static void AIPSubsequentSolidTwoPointLi
AIPSetupLineNumber_MMIO(0);
ASTSetupCMDReg_MMIO(ulCommand);
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
@@ -1654,7 +1649,7 @@ AIPSubsequentDashedTwoPointLine(ScrnInfo
if (!pAST->MMIO2D)
{
/* Write to CMDQ */
- pSingleCMD = (PKT_SC *) pjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*5);
+ pSingleCMD = (PKT_SC *) pASTjRequestCMDQ(pAST, PKT_SINGLE_LENGTH*5);
ASTSetupDSTBase(pSingleCMD, dstbase);
pSingleCMD++;
@@ -1670,7 +1665,7 @@ AIPSubsequentDashedTwoPointLine(ScrnInfo
mUpdateWritePointer;
/* Patch KDE pass abnormal point, ycchen@052507 */
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
else
@@ -1681,7 +1676,7 @@ AIPSubsequentDashedTwoPointLine(ScrnInfo
AIPSetupLineNumber_MMIO(0);
ASTSetupCMDReg_MMIO(ulCommand);
- vWaitEngIdle(pScrn, pAST);
+ vASTWaitEngIdle(pScrn, pAST);
}
@@ -1793,7 +1788,7 @@ void ASTDisplayVideo(ScrnInfoPtr pScrn,
lSrcX = (ULONG)((float)rect.x * fScaleX + pPriv->src_x + 0.5f);
lSrcY = (ULONG)((float)rect.y * fScaleY + pPriv->src_y + 0.5f);
- pCopyCmd = (BURSTSCALECMD*)pjRequestCMDQ(pAST, PKT_TYPESCALE_LENGTH);
+ pCopyCmd = (BURSTSCALECMD*)pASTjRequestCMDQ(pAST, PKT_TYPESCALE_LENGTH);
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "pCopyCmd=%p, pBox=%x,%x,%x,%x\n", pCopyCmd, pBox->x1, pBox->y1, pBox->x2, pBox->y2);
Index: xsrc/external/mit/xf86-video-ast/dist/src/ast_driver.c
diff -u xsrc/external/mit/xf86-video-ast/dist/src/ast_driver.c:1.4 xsrc/external/mit/xf86-video-ast/dist/src/ast_driver.c:1.5
--- xsrc/external/mit/xf86-video-ast/dist/src/ast_driver.c:1.4 Wed Mar 19 23:56:47 2014
+++ xsrc/external/mit/xf86-video-ast/dist/src/ast_driver.c Mon Jul 20 00:10:28 2015
@@ -40,7 +40,6 @@
#include "xf86xv.h"
#include <X11/extensions/Xv.h>
-#include "xf86PciInfo.h"
#include "xf86Pci.h"
/* framebuffer offscreen manager */
@@ -57,44 +56,9 @@
/* Driver specific headers */
#include "ast.h"
-
-/* external reference fucntion */
-extern Bool ASTMapMem(ScrnInfoPtr pScrn);
-extern Bool ASTUnmapMem(ScrnInfoPtr pScrn);
-extern Bool ASTMapMMIO(ScrnInfoPtr pScrn);
-extern void ASTUnmapMMIO(ScrnInfoPtr pScrn);
-
-extern void vASTOpenKey(ScrnInfoPtr pScrn);
-extern Bool bASTRegInit(ScrnInfoPtr pScrn);
-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);
-extern Bool ASTSetMode(ScrnInfoPtr pScrn, DisplayModePtr mode);
-extern Bool GetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer);
-extern void vInitDRAMReg(ScrnInfoPtr pScrn);
-extern Bool bIsVGAEnabled(ScrnInfoPtr pScrn);
-extern void ASTBlankScreen(ScrnInfoPtr pScreen, Bool unblack);
-extern Bool InitVGA(ScrnInfoPtr pScrn, ULONG Flags);
-extern Bool GetVGAEDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer);
-extern Bool bInitAST1180(ScrnInfoPtr pScrn);
-extern void GetAST1180DRAMInfo(ScrnInfoPtr pScrn);
-extern void vEnableASTVGAMMIO(ScrnInfoPtr pScrn);
-
-extern Bool bInitCMDQInfo(ScrnInfoPtr pScrn, ASTRecPtr pAST);
-extern Bool bEnableCMDQ(ScrnInfoPtr pScrn, ASTRecPtr pAST);
-extern void vDisable2D(ScrnInfoPtr pScrn, ASTRecPtr pAST);
-
-#ifdef HAVE_XAA_H
-extern Bool ASTAccelInit(ScreenPtr pScreen);
-#endif
-
-extern Bool ASTCursorInit(ScreenPtr pScreen);
-extern void ASTDisableHWC(ScrnInfoPtr pScrn);
+#include "ast_mode.h"
+#include "ast_vgatool.h"
+#include "ast_2dtool.h"
/* Mandatory functions */
static void ASTIdentify(int flags);
@@ -126,8 +90,11 @@ static Bool ASTModeInit(ScrnInfoPtr pScr
static void ASTInitVideo(ScreenPtr pScreen);
static int ASTPutImage( ScrnInfoPtr,
short, short, short, short, short, short, short, short,
- int, unsigned char*, short, short, Bool, RegionPtr, pointer,
- DrawablePtr);
+ int, unsigned char*, short, short, Bool, RegionPtr, pointer
+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 1
+ , DrawablePtr pDraw
+#endif
+ );
#endif
/*
@@ -292,7 +259,10 @@ ASTProbe(DriverPtr drv, int flags)
devSections, numDevSections,
drv, &usedChips);
- free(devSections);
+ if (numUsed <= 0) {
+ free(devSections);
+ return FALSE;
+ }
if (flags & PROBE_DETECT) {
if (numUsed > 0)
@@ -310,7 +280,13 @@ ASTProbe(DriverPtr drv, int flags)
"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");
+ "ast: This driver cannot operate until it has been unloaded.\n");
+ xf86UnclaimPciSlot(pPci
+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 13
+ , devSections[0]
+#endif
+ );
+ free(devSections);
return FALSE;
}
}
@@ -344,6 +320,7 @@ ASTProbe(DriverPtr drv, int flags)
} /* end of for-loop */
} /* end of if flags */
+ free(devSections);
free(usedChips);
return foundScreen;
@@ -563,23 +540,21 @@ ASTPreInit(ScrnInfoPtr pScrn, int flags)
xf86DrvMsg(pScrn->scrnIndex, from, "Chipset: \"%s\"\n",
(pScrn->chipset != NULL) ? pScrn->chipset : "Unknown ast");
- /* Resource Allocation */
+
#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
- pAST->IODBase = pScrn->domainIOBase;
-#else
- pAST->IODBase = 0;
-#endif
/* "Patch" the PIOOffset inside vgaHW in order to force
* the vgaHW module to use our relocated i/o ports.
*/
+ VGAHWPTR(pScrn)->PIOOffset =
+ pScrn->domainIOBase + PCI_REGION_BASE(pAST->PciInfo, 2, REGION_IO) - 0x380;
+
+ pAST->RelocateIO = pScrn->domainIOBase +
+ PCI_REGION_BASE(pAST->PciInfo, 2, REGION_IO);
+#else
+ pAST->RelocateIO = (PCI_REGION_BASE(pAST->PciInfo, 2, REGION_IO));
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
- VGAHWPTR(pScrn)->PIOOffset = /* ... */
#endif
- pAST->PIOOffset =
- pAST->IODBase + PCI_REGION_BASE(pAST->PciInfo, 2, REGION_IO) - 0x380;
- pAST->RelocateIO = (IOADDRESS)(PCI_REGION_BASE(pAST->PciInfo, 2, REGION_IO) + pAST->IODBase);
if (pAST->pEnt->device->MemBase != 0) {
pAST->FBPhysAddr = pAST->pEnt->device->MemBase;
@@ -636,41 +611,43 @@ ASTPreInit(ScrnInfoPtr pScrn, int flags)
}
/* Init AST1180 */
- bInitAST1180(pScrn);
+ bASTInitAST1180(pScrn);
/* Get AST1180 Information */
- GetAST1180DRAMInfo(pScrn);
+ ASTGetAST1180DRAMInfo(pScrn);
pScrn->videoRam = pAST->ulVRAMSize / 1024;
}
else
{
/* Enable VGA MMIO Access */
- vEnableASTVGAMMIO(pScrn);
+ vASTEnableVGAMMIO(pScrn);
/* Init VGA Adapter */
if (!xf86IsPrimaryPci(pAST->PciInfo))
{
- InitVGA(pScrn, 0);
+ ASTInitVGA(pScrn, 0);
}
vASTOpenKey(pScrn);
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);
+ ASTGetChipType(pScrn);
else
pAST->jChipType = AST2000;
/* Get Options from Scratch */
- GetScratchOptions(pScrn);
+ ASTGetScratchOptions(pScrn);
/* Get DRAM Info */
- GetDRAMInfo(pScrn);
- pAST->ulVRAMSize = GetVRAMInfo(pScrn);
+ ASTGetDRAMInfo(pScrn);
+ pAST->ulVRAMSize = ASTGetVRAMInfo(pScrn);
pScrn->videoRam = pAST->ulVRAMSize / 1024;
}
@@ -702,13 +679,13 @@ ASTPreInit(ScrnInfoPtr pScrn, int flags)
clockRanges = xnfcalloc(sizeof(ClockRange), 1);
clockRanges->next = NULL;
clockRanges->minClock = 9500;
- clockRanges->maxClock = GetMaxDCLK(pScrn) * 1000;
+ clockRanges->maxClock = ASTGetMaxDCLK(pScrn) * 1000;
clockRanges->clockIndex = -1;
clockRanges->interlaceAllowed = FALSE;
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;
@@ -1024,7 +1001,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);
@@ -1073,7 +1050,7 @@ ASTSwitchMode(SWITCH_MODE_ARGS_DECL)
xf86FreeOffscreenLinear(pAST->pCMDQPtr); /* free CMDQ */
pAST->pCMDQPtr = NULL;
}
- vDisable2D(pScrn, pAST);
+ vASTDisable2D(pScrn, pAST);
#endif
/* Fixed display abnormal on the of the screen if run xvidtune, ycchen@122909 */
@@ -1093,7 +1070,7 @@ ASTAdjustFrame(ADJUST_FRAME_ARGS_DECL)
base = y * pAST->VideoModeInfo.ScreenPitch + x * ((pAST->VideoModeInfo.bitsPerPixel + 1) / 8);
/* base = base >> 2; */ /* DW unit */
- vSetStartAddressCRT1(pAST, base);
+ vASTSetStartAddressCRT1(pAST, base);
}
@@ -1105,14 +1082,14 @@ ASTEnterVT(VT_FUNC_ARGS_DECL)
ASTRecPtr pAST = ASTPTR(pScrn);
/* Fixed suspend can't resume issue */
- if (!bIsVGAEnabled(pScrn))
+ if (!bASTIsVGAEnabled(pScrn))
{
if (pAST->jChipType == AST1180)
- bInitAST1180(pScrn);
+ bASTInitAST1180(pScrn);
else
{
- vEnableASTVGAMMIO(pScrn);
- InitVGA(pScrn, 1);
+ vASTEnableVGAMMIO(pScrn);
+ ASTInitVGA(pScrn, 1);
}
ASTRestore(pScrn);
}
@@ -1149,7 +1126,7 @@ ASTLeaveVT(VT_FUNC_ARGS_DECL)
xf86FreeOffscreenLinear(pAST->pCMDQPtr); /* free CMDQ */
pAST->pCMDQPtr = NULL;
}
- vDisable2D(pScrn, pAST);
+ vASTDisable2D(pScrn, pAST);
#endif
ASTRestore(pScrn);
@@ -1218,7 +1195,7 @@ ASTValidMode(SCRN_ARG_TYPE arg, DisplayM
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;
@@ -1279,10 +1256,14 @@ ASTGetRec(ScrnInfoPtr pScrn)
static void
ASTFreeRec(ScrnInfoPtr pScrn)
{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+
if (!pScrn)
return;
if (!pScrn->driverPrivate)
return;
+ if (pAST->pDP501FWBufferVirtualAddress)
+ free(pAST->pDP501FWBufferVirtualAddress);
free(pScrn->driverPrivate);
pScrn->driverPrivate = 0;
}
@@ -1329,7 +1310,7 @@ ASTCloseScreen(CLOSE_SCREEN_ARGS_DECL)
xf86FreeOffscreenLinear(pAST->pCMDQPtr); /* free CMDQ */
pAST->pCMDQPtr = NULL;
}
- vDisable2D(pScrn, pAST);
+ vASTDisable2D(pScrn, pAST);
#endif
ASTRestore(pScrn);
@@ -1546,9 +1527,15 @@ ASTProbeDDC(ScrnInfoPtr pScrn, int index
if (xf86LoadSubModule(pScrn, "ddc"))
{
if (pAST->jChipType == AST1180)
- Flags = GetVGA2EDID(pScrn, DDC_data);
+ Flags = ASTGetVGA2EDID(pScrn, DDC_data);
+ else if (pAST->jTxChipType == Tx_DP501)
+ {
+ Flags = ASTReadEDID_M68K(pScrn, DDC_data);
+ if (Flags == FALSE)
+ Flags = ASTGetVGAEDID(pScrn, DDC_data);
+ }
else
- Flags = GetVGAEDID(pScrn, DDC_data);
+ Flags = ASTGetVGAEDID(pScrn, DDC_data);
if (Flags)
{
@@ -1590,9 +1577,17 @@ ASTDoDDC(ScrnInfoPtr pScrn, int index)
if (xf86LoadSubModule(pScrn, "ddc"))
{
if (pAST->jChipType == AST1180)
- Flags = GetVGA2EDID(pScrn, DDC_data);
+ Flags = ASTGetVGA2EDID(pScrn, DDC_data);
+ else if (pAST->jTxChipType == Tx_DP501)
+ {
+ pAST->DP501_MaxVCLK = 0xFF;
+ Flags = ASTReadEDID_M68K(pScrn, DDC_data);
+ if (Flags) pAST->DP501_MaxVCLK = ASTGetLinkMaxCLK(pScrn);
+ else
+ Flags = ASTGetVGAEDID(pScrn, DDC_data);
+ }
else
- Flags = GetVGAEDID(pScrn, DDC_data);
+ Flags = ASTGetVGAEDID(pScrn, DDC_data);
if (Flags)
{
@@ -1608,7 +1603,7 @@ ASTDoDDC(ScrnInfoPtr pScrn, int index)
/* For VGA2 CLONE Support, ycchen@012508 */
if ((xf86ReturnOptValBool(pAST->Options, OPTION_VGA2_CLONE, FALSE)) || pAST->VGA2Clone) {
- if (GetVGA2EDID(pScrn, DDC_data) == TRUE) {
+ if (ASTGetVGA2EDID(pScrn, DDC_data) == TRUE) {
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Get VGA2 EDID Correctly!! \n");
MonInfo2 = xf86InterpretEDID(pScrn->scrnIndex, DDC_data);
if (MonInfo1 == NULL) /* No DDC1 EDID */
@@ -1740,7 +1735,7 @@ ASTDoDDC(ScrnInfoPtr pScrn, int index)
} /* Check with VGA1 & VGA2 EDID */
- } /* GetVGA2EDID */
+ } /* ASTGetVGA2EDID */
else {
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Can't Get VGA2 EDID Correctly!! \n");
}
@@ -2098,8 +2093,6 @@ static int ASTQueryImageAttributes(ScrnI
return size;
}
-extern void ASTDisplayVideo(ScrnInfoPtr pScrn, ASTPortPrivPtr pPriv, RegionPtr clipBoxes, int id);
-
static int ASTPutImage(ScrnInfoPtr pScrn,
short src_x, short src_y,
short drw_x, short drw_y,
@@ -2108,8 +2101,10 @@ static int ASTPutImage(ScrnInfoPtr pScrn
int id, unsigned char* buf,
short width, short height,
Bool sync,
- RegionPtr clipBoxes, pointer data,
- DrawablePtr pDraw
+ RegionPtr clipBoxes, pointer data
+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 1
+ , DrawablePtr pDraw
+#endif
)
{
ASTPtr pAST = ASTPTR(pScrn);
Index: xsrc/external/mit/xf86-video-ast/dist/src/ast_vgatool.c
diff -u xsrc/external/mit/xf86-video-ast/dist/src/ast_vgatool.c:1.11 xsrc/external/mit/xf86-video-ast/dist/src/ast_vgatool.c:1.12
--- xsrc/external/mit/xf86-video-ast/dist/src/ast_vgatool.c:1.11 Wed Mar 19 23:56:47 2014
+++ xsrc/external/mit/xf86-video-ast/dist/src/ast_vgatool.c Mon Jul 20 00:10:28 2015
@@ -36,7 +36,6 @@
#include "xf86xv.h"
#include <X11/extensions/Xv.h>
-#include "xf86PciInfo.h"
#include "xf86Pci.h"
/* framebuffer offscreen manager */
@@ -53,29 +52,350 @@
/* Driver specific headers */
#include "ast.h"
+#include "ast_vgatool.h"
+#include "ast_dp501fw.h"
-/* Prototype type declaration*/
-void vASTOpenKey(ScrnInfoPtr pScrn);
-Bool bASTRegInit(ScrnInfoPtr pScrn);
-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);
-void vSetStartAddressCRT1(ASTRecPtr pAST, ULONG base);
-void vASTLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors, VisualPtr pVisual);
-void ASTDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, int flags);
-Bool GetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer);
-void vInitDRAMReg(ScrnInfoPtr pScrn);
-Bool bIsVGAEnabled(ScrnInfoPtr pScrn);
-Bool InitVGA(ScrnInfoPtr pScrn, ULONG Flags);
-Bool GetVGAEDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer);
-Bool bInitAST1180(ScrnInfoPtr pScrn);
-void GetAST1180DRAMInfo(ScrnInfoPtr pScrn);
+__inline ULONG MIndwm(UCHAR *mmiobase, ULONG r)
+{
+ ULONG ulData;
+
+ *(ULONG *) (mmiobase + 0xF004) = r & 0xFFFF0000;
+ *(ULONG *) (mmiobase + 0xF000) = 0x1;
+
+ do {
+ ulData = *(volatile ULONG *) (mmiobase + 0xF004) & 0xFFFF0000;
+ } while (ulData != (r & 0xFFFF0000) );
+
+ return ( *(volatile ULONG *) (mmiobase + 0x10000 + (r & 0x0000FFFF)) );
+
+}
+
+__inline void MOutdwm(UCHAR *mmiobase, ULONG r, ULONG v)
+{
+ ULONG ulData;
+
+ *(ULONG *) (mmiobase + 0xF004) = r & 0xFFFF0000;
+ *(ULONG *) (mmiobase + 0xF000) = 0x1;
+
+ do {
+ ulData = *(volatile ULONG *) (mmiobase + 0xF004) & 0xFFFF0000;
+ } while (ulData != (r & 0xFFFF0000) );
+
+ *(volatile ULONG *) (mmiobase + 0x10000 + (r & 0x0000FFFF)) = v;
+}
+
+/*
+ * BMCI2C
+ */
+#define I2C_BASE 0x1e780000
+
+
+static ULONG GetFWBase(ScrnInfoPtr pScrn)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ UCHAR *mmiobase;
+
+ mmiobase = pAST->MMIOVirtualAddr;
+ return (MIndwm(mmiobase, 0x1e6e2104) & 0x7FFFFFFF);
+}
+
+static void send_ack(ScrnInfoPtr pScrn)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ UCHAR SendACK;
+
+ GetIndexRegMask(CRTC_PORT, 0x9b, 0xFF, SendACK);
+ SendACK |= 0x80;
+ SetIndexRegMask(CRTC_PORT, 0x9B, 0x00, SendACK);
+}
+
+static void send_nack(ScrnInfoPtr pScrn)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ UCHAR SendACK;
+
+ GetIndexRegMask(CRTC_PORT, 0x9b, 0xFF, SendACK);
+ SendACK &= ~0x80;
+ SetIndexRegMask(CRTC_PORT, 0x9B, 0x00, SendACK);
+}
+
+static Bool wait_ack(ScrnInfoPtr pScrn)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ UCHAR WaitACK;
+ ULONG retry=0;
+
+ do {
+ GetIndexRegMask(CRTC_PORT, 0xd2, 0xFF, WaitACK);
+ WaitACK &= 0x80;
+ DelayUS(100);
+ } while ( (!WaitACK) && (retry++ < 1000) );
+
+ if (retry < 1000)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static Bool wait_nack(ScrnInfoPtr pScrn)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ UCHAR WaitACK;
+ ULONG retry=0;
+
+ do {
+ GetIndexRegMask(CRTC_PORT, 0xd2, 0xFF, WaitACK);
+ WaitACK &= 0x80;
+ DelayUS(100);
+ } while ( (WaitACK) && (retry++ < 1000) );
+
+ if (retry < 1000)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void set_cmd_trigger(ScrnInfoPtr pScrn)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+
+ SetIndexRegMask(CRTC_PORT, 0x9B, ~0x40, 0x40);
+}
+
+static void clear_cmd_trigger(ScrnInfoPtr pScrn)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+
+ SetIndexRegMask(CRTC_PORT, 0x9B, ~0x40, 0x00);
+}
+
+static Bool write_cmd(ScrnInfoPtr pScrn, UCHAR data)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ UCHAR retry = 0;
+
+ if (wait_nack(pScrn))
+ {
+ send_nack(pScrn);
+ SetIndexRegMask(CRTC_PORT, 0x9a, 0x00, data);
+ send_ack(pScrn);
+ set_cmd_trigger(pScrn);
+ do {
+ if (wait_ack(pScrn))
+ {
+ clear_cmd_trigger(pScrn);
+ send_nack(pScrn);
+ return TRUE;
+ }
+ } while (retry++ < 100);
+ }
+
+ clear_cmd_trigger(pScrn);
+ send_nack(pScrn);
+ return FALSE;
+}
+
+static Bool write_data(ScrnInfoPtr pScrn, UCHAR data)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+
+ if (wait_nack(pScrn))
+ {
+ send_nack(pScrn);
+ SetIndexRegMask(CRTC_PORT, 0x9a, 0x00, data);
+ send_ack(pScrn);
+ if (wait_ack(pScrn))
+ {
+ send_nack(pScrn);
+ return TRUE;
+ }
+ }
+
+ send_nack(pScrn);
+ return FALSE;
+}
+
+static void SetDP501VideoOutput(ScrnInfoPtr pScrn, UCHAR Mode)
+{
+ write_cmd(pScrn, 0x40);
+ write_data(pScrn, Mode);
+
+ DelayMS(10); /* delay 10ms */
+
+} /* SetDP501VideoOutput */
+
+static BOOL BackupM68KFW(ScrnInfoPtr pScrn, UCHAR *addr, ULONG size)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ UCHAR *mmiobase = pAST->MMIOVirtualAddr;
+ ULONG i, Data;
+ ULONG BootAddress;
+
+ Data = MIndwm(mmiobase, 0x1e6e2100) & 0x01;
+ if (Data) /* FW had been load */
+ {
+ /* copy image to buffer */
+ BootAddress = GetFWBase(pScrn);
+ for (i=0; i<size; i+=4)
+ {
+ *(ULONG *)(addr + i) = MIndwm(mmiobase, BootAddress + i);
+ }
+ return TRUE;
+ } /* UEFI Driver Handling */
+
+ return FALSE;
+} /* BackupM68KFW */
+
+static BOOL LaunchM68K(ScrnInfoPtr pScrn)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ UCHAR *mmiobase = pAST->MMIOVirtualAddr;
+ ULONG i, Data, Len;
+ ULONG BootAddress;
+ UCHAR *pFWAddr;
+ UCHAR jReg;
+
+ Data = MIndwm(mmiobase, 0x1e6e2100) & 0x03;
+ if (Data != 0x01) /* UEFI Driver Handling */
+ {
+ /* Reset Co-processor */
+ MOutdwm(mmiobase, 0x1e6e2100, 0x03);
+ do {
+ Data = MIndwm(mmiobase, 0x1e6e2100);
+ } while (Data != 0x03);
+
+ if (pAST->pDP501FWBufferVirtualAddress)
+ {
+ pFWAddr = pAST->pDP501FWBufferVirtualAddress;
+ Len = 32*1024; /* 32K */
+ }
+ else
+ {
+ pFWAddr = AST_DP501_firmware;
+ Len = sizeof(AST_DP501_firmware) / sizeof(AST_DP501_firmware[0]);
+ }
+
+ /* Get BootAddress */
+ MOutdwm(mmiobase, 0x1e6e2000, 0x1688a8a8); /* open passwd */
+ Data = MIndwm(mmiobase, 0x1e6e0004);
+ switch (Data & 0x03)
+ {
+ case 0x00: /* 64M */
+ BootAddress = 0x44000000;
+ break;
+ default:
+ case 0x01: /* 128MB */
+ BootAddress = 0x48000000;
+ break;
+ case 0x02: /* 256MB */
+ BootAddress = 0x50000000;
+ break;
+ case 0x03: /* 512MB */
+ BootAddress = 0x60000000;
+ break;
+ }
+ BootAddress -= 0x200000; /* - 2MB */
+
+ /* copy image to buffer */
+ for (i=0; i<Len; i+=4)
+ {
+ Data = *(ULONG *)(pFWAddr + i);
+ MOutdwm(mmiobase, BootAddress + i, Data);
+ }
+
+ /* Init SCU */
+ MOutdwm(mmiobase, 0x1e6e2000, 0x1688a8a8); /* open passwd */
+
+ /* Launch FW */
+ MOutdwm(mmiobase, 0x1e6e2104, 0x80000000 + BootAddress);
+ MOutdwm(mmiobase, 0x1e6e2100, 1);
+
+ /* Update Scratch */
+ Data = MIndwm(mmiobase, 0x1e6e2040) & 0xFFFFF1FF; /* D[11:9] = 100b: UEFI handling */
+ Data |= 0x0800;
+ MOutdwm(mmiobase, 0x1e6e2040, Data);
+
+ GetIndexRegMask(CRTC_PORT, 0x99, 0xFC, jReg); /* D[1:0]: Reserved Video Buffer */
+ jReg |= 0x02; /* 2MB */
+ SetIndexReg(CRTC_PORT, 0x99, jReg);
+
+ } /* UEFI Driver Handling */
+
+ return TRUE;
+} /* LaunchM68K */
+
+/*
+ * DP501 external
+ */
+Bool ASTReadEDID_M68K(ScrnInfoPtr pScrn, BYTE *pEDIDData)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ UCHAR *mmiobase;
+ ULONG i, BootAddress, Offset, Data;
+ /* init value */
+ mmiobase = pAST->MMIOVirtualAddr;
+ BootAddress = GetFWBase(pScrn);
+
+ /* validate FW version */
+ Offset = 0xF000;
+ Data = MIndwm(mmiobase, BootAddress + Offset);
+ if ((Data & 0xF0) != 0x10) /* version: 1x */
+ return FALSE;
+
+ /* validate PnP Monitor */
+ Offset = 0xF010;
+ Data = MIndwm(mmiobase, BootAddress + Offset);
+ if (!(Data & 0x01))
+ return FALSE;
+
+ /* Read EDID */
+ Offset = 0xF020;
+ for (i=0; i<128; i+=4)
+ {
+ Data = MIndwm(mmiobase, BootAddress + Offset + i);
+ *(ULONG *)(pEDIDData + i) = Data;
+ }
+
+ return TRUE;
+} /* ReadEDID_M68K */
+
+UCHAR ASTGetLinkMaxCLK(ScrnInfoPtr pScrn)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ UCHAR *mmiobase;
+ ULONG BootAddress, Offset, Data;
+ UCHAR LinkCap[4], LinkRate, LinkLanes, MaxClk = 0xFF;
+
+ /* init value */
+ mmiobase = pAST->MMIOVirtualAddr;
+ BootAddress = GetFWBase(pScrn);
+
+ /* validate FW version */
+ Offset = 0xF000;
+ Data = MIndwm(mmiobase, BootAddress + Offset);
+ if ((Data & 0xF0) != 0x10) /* version: 1x */
+ return MaxClk;
+
+ /* Read Link Capability */
+ Offset = 0xF014;
+ *(ULONG *)(LinkCap) = MIndwm(mmiobase, BootAddress + Offset);
+ if (LinkCap[2] == 0) /* no Max. CLK Assigned */
+ {
+ LinkRate = LinkCap[0];
+ LinkLanes = LinkCap[1];
+ Data = (LinkRate == 0x0A) ? (90 * LinkLanes): (54 * LinkLanes);
+ if (Data > 255) Data = 255; /* Max. */
+ MaxClk = (UCHAR)(Data);
+ }
+
+ return MaxClk;
+
+} /* ASTGetLinkMaxCLK */
+
+/*
+ * VGA Modules
+ */
void
vASTOpenKey(ScrnInfoPtr pScrn)
{
@@ -103,7 +423,7 @@ bASTRegInit(ScrnInfoPtr pScrn)
}
void
-GetDRAMInfo(ScrnInfoPtr pScrn)
+ASTGetDRAMInfo(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST = ASTPTR(pScrn);
ULONG ulRefPLL, ulDeNumerator, ulNumerator, ulDivider;
@@ -126,7 +446,7 @@ GetDRAMInfo(ScrnInfoPtr pScrn)
pAST->ulDRAMBusWidth = 32;
/* Get DRAM Type */
- if (pAST->jChipType == AST2300)
+ if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
{
switch (ulData & 0x03)
{
@@ -193,36 +513,56 @@ GetDRAMInfo(ScrnInfoPtr pScrn)
}
pAST->ulMCLK = ulRefPLL * (ulNumerator + 2) / ((ulDeNumerator + 2) * ulDivider * 1000);
-} /* GetDRAMInfo */
+} /* ASTGetDRAMInfo */
ULONG
-GetVRAMInfo(ScrnInfoPtr pScrn)
+ASTGetVRAMInfo(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST = ASTPTR(pScrn);
+ ULONG ulVRAMSize;
UCHAR jReg;
vASTOpenKey(pScrn);
+ /* Get VRAMSize from H/W Trapping */
GetIndexRegMask(CRTC_PORT, 0xAA, 0xFF, jReg);
-
switch (jReg & 0x03)
{
+ default:
case 0x00:
- return (VIDEOMEM_SIZE_08M);
+ ulVRAMSize = VIDEOMEM_SIZE_08M;
+ break;
case 0x01:
- return (VIDEOMEM_SIZE_16M);
+ ulVRAMSize = VIDEOMEM_SIZE_16M;
+ break;
case 0x02:
- return (VIDEOMEM_SIZE_32M);
+ ulVRAMSize = VIDEOMEM_SIZE_32M;
+ break;
case 0x03:
- return (VIDEOMEM_SIZE_64M);
+ ulVRAMSize = VIDEOMEM_SIZE_64M;
+ break;
}
- return (DEFAULT_VIDEOMEM_SIZE);
+ /* Adjust VRAMSize from Scratch */
+ GetIndexRegMask(CRTC_PORT, 0x99, 0xFF, jReg);
+ switch (jReg & 0x03)
+ {
+ case 0x01:
+ ulVRAMSize -= 0x100000;
+ break;
+ case 0x02:
+ ulVRAMSize -= 0x200000;
+ break;
+ case 0x03:
+ ulVRAMSize -= 0x400000;
+ break;
+ }
+ return (ulVRAMSize);
}
ULONG
-GetMaxDCLK(ScrnInfoPtr pScrn)
+ASTGetMaxDCLK(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST = ASTPTR(pScrn);
UCHAR jReg;
@@ -236,7 +576,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;
@@ -258,8 +598,14 @@ GetMaxDCLK(ScrnInfoPtr pScrn)
ulDCLK = ActualDRAMBandwidth / ((pScrn->bitsPerPixel+1) / 8);
}
+ /* Validate for DP501 */
+ if (pAST->jTxChipType == Tx_DP501)
+ {
+ if (ulDCLK > pAST->DP501_MaxVCLK) ulDCLK = pAST->DP501_MaxVCLK;
+ }
+
/* 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;
}
@@ -273,7 +619,7 @@ GetMaxDCLK(ScrnInfoPtr pScrn)
}
void
-GetChipType(ScrnInfoPtr pScrn)
+ASTGetChipType(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST = ASTPTR(pScrn);
ULONG ulData;
@@ -305,7 +651,7 @@ GetChipType(ScrnInfoPtr pScrn)
}
void
-GetScratchOptions(ScrnInfoPtr pScrn)
+ASTGetScratchOptions(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST = ASTPTR(pScrn);
ULONG ulData;
@@ -316,6 +662,38 @@ GetScratchOptions(ScrnInfoPtr pScrn)
if (jReg & 0x10)
pAST->VGA2Clone = TRUE;
+ /* 3rd Tx Check */
+ pAST->pDP501FWBufferVirtualAddress = NULL;
+ pAST->jTxChipType = Tx_NONE;
+ /* Get 3rd Tx Info from HW Reg. */
+ GetIndexRegMask(CRTC_PORT, 0xA3, 0xFF, jReg);
+ if (jReg & 0x80)
+ pAST->jTxChipType = Tx_Sil164;
+ /* Get 3rd Tx Info from BMC Scratch */
+ if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
+ {
+ GetIndexRegMask(CRTC_PORT, 0xD1, 0x0E, jReg);
+ switch (jReg)
+ {
+ case 0x04:
+ pAST->jTxChipType = Tx_Sil164;
+ break;
+ case 0x08:
+ pAST->pDP501FWBufferVirtualAddress = (UCHAR*) calloc(1, 32*1024);
+ if (pAST->pDP501FWBufferVirtualAddress)
+ {
+ if (BackupM68KFW(pScrn, pAST->pDP501FWBufferVirtualAddress, 32*1024) == FALSE)
+ {
+ free(pAST->pDP501FWBufferVirtualAddress);
+ pAST->pDP501FWBufferVirtualAddress = NULL;
+ }
+ } /* Backup DP501 FW */
+ case 0x0c:
+ pAST->jTxChipType = Tx_DP501;
+ break;
+ }
+ }
+
/* WideScreen Support */
switch (pAST->jChipType)
{
@@ -334,21 +712,21 @@ GetScratchOptions(ScrnInfoPtr pScrn)
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;
- }
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1;
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1207c);
+ ulData &= 0x0300;
+ if ((pAST->jChipType == AST2300) && (ulData == 0x0000)) /* AST1300 */
+ pAST->SupportWideScreen = TRUE;
+ if ((pAST->jChipType == AST2400) && (ulData == 0x0100)) /* AST1400 */
+ pAST->SupportWideScreen = TRUE;
}
} /* switch case */
} /* GetScratchOptions */
void
-vSetStartAddressCRT1(ASTRecPtr pAST, ULONG base)
+vASTSetStartAddressCRT1(ASTRecPtr pAST, ULONG base)
{
ULONG addr;
@@ -369,10 +747,15 @@ vSetStartAddressCRT1(ASTRecPtr pAST, ULO
}
void
-vAST1000DisplayOff(ASTRecPtr pAST)
+vAST1000DisplayOff(ScrnInfoPtr pScrn)
{
+ ASTRecPtr pAST = ASTPTR(pScrn);
ULONG ulData;
+ /* 3rd Tx */
+ if (pAST->jTxChipType == Tx_DP501)
+ SetDP501VideoOutput(pScrn, 0);
+
if (pAST->jChipType == AST1180)
{
ReadAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulData);
@@ -381,13 +764,15 @@ vAST1000DisplayOff(ASTRecPtr pAST)
}
else
SetIndexRegMask(SEQ_PORT,0x01, 0xDF, 0x20);
-}
+}
void
-vAST1000DisplayOn(ASTRecPtr pAST)
+vAST1000DisplayOn(ScrnInfoPtr pScrn)
{
- ULONG ulData;
+
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ ULONG ulData;
if (pAST->jChipType == AST1180)
{
@@ -397,18 +782,18 @@ vAST1000DisplayOn(ASTRecPtr pAST)
}
else
SetIndexRegMask(SEQ_PORT,0x01, 0xDF, 0x00);
+
+ /* 3rd Tx */
+ if (pAST->jTxChipType == Tx_DP501)
+ SetDP501VideoOutput(pScrn, 1);
}
void ASTBlankScreen(ScrnInfoPtr pScrn, Bool unblack)
{
- ASTRecPtr pAST;
-
- pAST = ASTPTR(pScrn);
-
if (unblack)
- vAST1000DisplayOn(pAST);
+ vAST1000DisplayOn(pScrn);
else
- vAST1000DisplayOff(pAST);
+ vAST1000DisplayOff(pScrn);
}
void
@@ -516,6 +901,11 @@ ASTDisplayPowerManagementSet(ScrnInfoPtr
break;
}
+ if (PowerManagementMode != DPMSModeOn)
+ { /* 3rd Tx */
+ if (pAST->jTxChipType == Tx_DP501) SetDP501VideoOutput(pScrn, 0);
+ }
+
if (pAST->jChipType == AST1180)
{
ReadAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulTemp);
@@ -529,19 +919,25 @@ ASTDisplayPowerManagementSet(ScrnInfoPtr
SetIndexRegMask(CRTC_PORT,0xB6, 0xFC, CRB6);
}
+ if (PowerManagementMode == DPMSModeOn)
+ { /* 3rd Tx */
+ if (pAST->jTxChipType == Tx_DP501) SetDP501VideoOutput(pScrn, 1);
+ }
}
-#define I2C_BASE 0x1e780000
-#define I2C_OFFSET (0xA000 + 0x40 * 4) /* port4 */
-#define I2C_DEVICEADDR 0x0A0 /* slave addr */
+#ifndef I2C_BASE
+#define I2C_BASE 0x1e780000
+#endif
+#define I2C_OFFSET (0xA000 + 0x40 * 4) /* port4 */
+#define I2C_DEVICEADDR 0x0A0 /* slave addr */
#define I2C_BASE_AST1180 0x80fc0000
#define I2C_OFFSET_AS1180 (0xB000 + 0x40 * 2) /* port2 */
#define I2C_DEVICEADDR_AST1180 0x0A0 /* slave addr */
Bool
-GetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer)
+ASTGetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer)
{
ASTRecPtr pAST = ASTPTR(pScrn);
ULONG i, ulData;
@@ -641,10 +1037,10 @@ GetVGA2EDID(ScrnInfoPtr pScrn, unsigned
return (TRUE);
-} /* GetVGA2EDID */
+} /* ASTGetVGA2EDID */
/* Init VGA */
-Bool bIsVGAEnabled(ScrnInfoPtr pScrn)
+Bool bASTIsVGAEnabled(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST;
UCHAR ch;
@@ -675,7 +1071,7 @@ Bool bIsVGAEnabled(ScrnInfoPtr pScrn)
return (0);
}
-void vEnableVGA(ScrnInfoPtr pScrn)
+static void vEnableVGA(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST;
@@ -686,28 +1082,28 @@ void vEnableVGA(ScrnInfoPtr pScrn)
}
-UCHAR ExtRegInfo[] = {
+static UCHAR ExtRegInfo[] = {
0x0F,
0x04,
0x1C,
0xFF
};
-UCHAR ExtRegInfo_AST2300A0[] = {
+static UCHAR ExtRegInfo_AST2300A0[] = {
0x0F,
0x04,
0x1C,
0xFF
};
-UCHAR ExtRegInfo_AST2300[] = {
+static UCHAR ExtRegInfo_AST2300[] = {
0x0F,
0x04,
0x1F,
0xFF
};
-void vSetDefExtReg(ScrnInfoPtr pScrn)
+static void vSetDefExtReg(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST;
UCHAR i, jIndex, jReg, *pjExtRegInfo;
@@ -721,7 +1117,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,41 +1145,12 @@ 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);
}
-__inline ULONG MIndwm(UCHAR *mmiobase, ULONG r)
-{
- ULONG ulData;
-
- *(ULONG *) (mmiobase + 0xF004) = r & 0xFFFF0000;
- *(ULONG *) (mmiobase + 0xF000) = 0x1;
-
- do {
- ulData = *(volatile ULONG *) (mmiobase + 0xF004) & 0xFFFF0000;
- } while (ulData != (r & 0xFFFF0000) );
-
- return ( *(volatile ULONG *) (mmiobase + 0x10000 + (r & 0x0000FFFF)) );
-
-}
-
-__inline void MOutdwm(UCHAR *mmiobase, ULONG r, ULONG v)
-{
- ULONG ulData;
-
- *(ULONG *) (mmiobase + 0xF004) = r & 0xFFFF0000;
- *(ULONG *) (mmiobase + 0xF000) = 0x1;
-
- do {
- ulData = *(volatile ULONG *) (mmiobase + 0xF004) & 0xFFFF0000;
- } while (ulData != (r & 0xFFFF0000) );
-
- *(volatile ULONG *) (mmiobase + 0x10000 + (r & 0x0000FFFF)) = v;
-}
-
/*
* AST2100/2150 DLL CBR Setting
*/
@@ -795,7 +1162,7 @@ __inline void MOutdwm(UCHAR *mmiobase, U
#define CBR_PATNUM_AST2150 8
-ULONG pattern_AST2150[14] ={
+static ULONG pattern_AST2150[14] ={
0xFF00FF00,
0xCC33CC33,
0xAA55AA55,
@@ -815,7 +1182,7 @@ typedef struct _AST2150DRAMParam {
UCHAR *pjMMIOVirtualAddress;
} AST2150DRAMParam, *PAST2150DRAMParam;
-ULONG MMCTestBurst2_AST2150(PAST2150DRAMParam param, ULONG datagen)
+static ULONG MMCTestBurst2_AST2150(PAST2150DRAMParam param, ULONG datagen)
{
ULONG data, timeout;
UCHAR *mmiobase;
@@ -847,7 +1214,7 @@ ULONG MMCTestBurst2_AST2150(PAST2150DRAM
return(data);
}
-ULONG MMCTestSingle2_AST2150(PAST2150DRAMParam param, ULONG datagen)
+static ULONG MMCTestSingle2_AST2150(PAST2150DRAMParam param, ULONG datagen)
{
ULONG data, timeout;
UCHAR *mmiobase;
@@ -869,7 +1236,7 @@ ULONG MMCTestSingle2_AST2150(PAST2150DRA
return(data);
}
-int CBRTest_AST2150(PAST2150DRAMParam param)
+static int CBRTest_AST2150(PAST2150DRAMParam param)
{
UCHAR *mmiobase;
@@ -887,7 +1254,7 @@ int CBRTest_AST2150(PAST2150DRAMParam p
}
-int CBRScan_AST2150(PAST2150DRAMParam param, int busw)
+static int CBRScan_AST2150(PAST2150DRAMParam param, int busw)
{
ULONG patcnt, loop;
UCHAR *mmiobase;
@@ -909,7 +1276,7 @@ int CBRScan_AST2150(PAST2150DRAMParam p
}
-void CBRDLLI_AST2150(PAST2150DRAMParam param, int busw)
+static void CBRDLLI_AST2150(PAST2150DRAMParam param, int busw)
{
ULONG dllmin[4], dllmax[4], dlli, data, passcnt;
UCHAR *mmiobase;
@@ -952,7 +1319,7 @@ typedef struct _AST_DRAMStruct {
} AST_DRAMStruct, *PAST_DRAMStruct;
-AST_DRAMStruct AST2000DRAMTableData[] = {
+static AST_DRAMStruct AST2000DRAMTableData[] = {
{ 0x0108, 0x00000000 },
{ 0x0120, 0x00004a21 },
{ 0xFF00, 0x00000043 },
@@ -980,7 +1347,7 @@ AST_DRAMStruct AST2000DRAMTableData[] =
{ 0xFFFF, 0xFFFFFFFF }
};
-AST_DRAMStruct AST1100DRAMTableData[] = {
+static AST_DRAMStruct AST1100DRAMTableData[] = {
{ 0x2000, 0x1688a8a8 },
{ 0x2020, 0x000041f0 },
{ 0xFF00, 0x00000043 },
@@ -1033,7 +1400,7 @@ AST_DRAMStruct AST1100DRAMTableData[] =
{ 0xffff, 0xffffffff },
};
-AST_DRAMStruct AST2100DRAMTableData[] = {
+static AST_DRAMStruct AST2100DRAMTableData[] = {
{ 0x2000, 0x1688a8a8 },
{ 0x2020, 0x00004120 },
{ 0xFF00, 0x00000043 },
@@ -1086,7 +1453,7 @@ AST_DRAMStruct AST2100DRAMTableData[] =
{ 0xffff, 0xffffffff },
};
-void vInitDRAMReg(ScrnInfoPtr pScrn)
+static void vInitDRAMReg(ScrnInfoPtr pScrn)
{
AST_DRAMStruct *pjDRAMRegInfo;
ASTRecPtr pAST = ASTPTR(pScrn);
@@ -1256,7 +1623,7 @@ ULONG pattern[8] ={
0xF1E843C7,
0x7C61D253};
-int MMCTestBurst(PAST2300DRAMParam param, ULONG datagen)
+static int MMCTestBurst(PAST2300DRAMParam param, ULONG datagen)
{
ULONG data, timeout;
UCHAR *mmiobase;
@@ -1280,7 +1647,7 @@ int MMCTestBurst(PAST2300DRAMParam para
return(1);
}
-int MMCTestBurst2(PAST2300DRAMParam param, ULONG datagen)
+static int MMCTestBurst2(PAST2300DRAMParam param, ULONG datagen)
{
ULONG data, timeout;
UCHAR *mmiobase;
@@ -1303,7 +1670,7 @@ int MMCTestBurst2(PAST2300DRAMParam par
return(data);
}
-int MMCTestSingle(PAST2300DRAMParam param, ULONG datagen)
+static int MMCTestSingle(PAST2300DRAMParam param, ULONG datagen)
{
ULONG data, timeout;
UCHAR *mmiobase;
@@ -1327,7 +1694,7 @@ int MMCTestSingle(PAST2300DRAMParam par
return(1);
}
-int MMCTestSingle2(PAST2300DRAMParam param, ULONG datagen)
+static int MMCTestSingle2(PAST2300DRAMParam param, ULONG datagen)
{
ULONG data, timeout;
UCHAR *mmiobase;
@@ -1350,7 +1717,7 @@ int MMCTestSingle2(PAST2300DRAMParam pa
return(data);
}
-int CBRTest(PAST2300DRAMParam param)
+static int CBRTest(PAST2300DRAMParam param)
{
ULONG data;
UCHAR *mmiobase;
@@ -1372,7 +1739,7 @@ int CBRTest(PAST2300DRAMParam param)
return(1);
}
-int CBRScan(PAST2300DRAMParam param)
+static int CBRScan(PAST2300DRAMParam param)
{
ULONG data, data2, patcnt, loop;
UCHAR *mmiobase;
@@ -1398,7 +1765,7 @@ int CBRScan(PAST2300DRAMParam param)
return(data2);
}
-ULONG CBRTest2(PAST2300DRAMParam param)
+static ULONG CBRTest2(PAST2300DRAMParam param)
{
ULONG data;
UCHAR *mmiobase;
@@ -1410,7 +1777,7 @@ ULONG CBRTest2(PAST2300DRAMParam param)
return(~data & 0xffff);
}
-ULONG CBRScan2(PAST2300DRAMParam param)
+static ULONG CBRScan2(PAST2300DRAMParam param)
{
ULONG data, data2, patcnt, loop;
UCHAR *mmiobase;
@@ -1436,14 +1803,14 @@ ULONG CBRScan2(PAST2300DRAMParam param)
return(data2);
}
-ULONG CBRTest3(PAST2300DRAMParam param)
+static ULONG CBRTest3(PAST2300DRAMParam param)
{
if(!MMCTestBurst(param, 0)) return(0);
if(!MMCTestSingle(param, 0)) return(0);
return(1);
}
-ULONG CBRScan3(PAST2300DRAMParam param)
+static ULONG CBRScan3(PAST2300DRAMParam param)
{
ULONG patcnt, loop;
UCHAR *mmiobase;
@@ -1464,7 +1831,7 @@ ULONG CBRScan3(PAST2300DRAMParam param)
return(1);
}
-Bool finetuneDQI_L(PAST2300DRAMParam param)
+static Bool finetuneDQI_L(PAST2300DRAMParam param)
{
ULONG gold_sadj[2], dllmin[16], dllmax[16], dlli, data, cnt, mask, passcnt, retry = 0;
UCHAR *mmiobase;
@@ -1570,7 +1937,7 @@ FINETUNE_DONE:
} /* finetuneDQI_L */
-void finetuneDQSI(PAST2300DRAMParam param)
+static void finetuneDQSI(PAST2300DRAMParam param)
{
ULONG dlli, dqsip, dqidly, cnt;
ULONG reg_mcr18, reg_mcr0c, passcnt[2], diff;
@@ -1672,7 +2039,7 @@ void finetuneDQSI(PAST2300DRAMParam par
MOutdwm(mmiobase, 0x1E6E0018, reg_mcr18);
} /* finetuneDQSI */
-Bool CBRDLL2(PAST2300DRAMParam param)
+static Bool CBRDLL2(PAST2300DRAMParam param)
{
ULONG dllmin[2], dllmax[2], dlli, data, data2, passcnt, retry=0;
UCHAR *mmiobase;
@@ -1734,7 +2101,7 @@ CBR_DONE2:
} /* CBRDLL2 */
-void GetDDR2Info(PAST2300DRAMParam param)
+static void GetDDR2Info(PAST2300DRAMParam param)
{
UCHAR *mmiobase;
ULONG trap, TRAP_AC2, TRAP_MRS;
@@ -1982,7 +2349,7 @@ void GetDDR2Info(PAST2300DRAMParam param
}
-void GetDDR3Info(PAST2300DRAMParam param)
+static void GetDDR3Info(PAST2300DRAMParam param)
{
UCHAR *mmiobase;
ULONG trap, TRAP_AC2, TRAP_MRS;
@@ -2225,7 +2592,7 @@ void GetDDR3Info(PAST2300DRAMParam param
}
-void DDR2_Init(PAST2300DRAMParam param)
+static void DDR2_Init(PAST2300DRAMParam param)
{
ULONG data, data2, retry = 0;
UCHAR *mmiobase;
@@ -2355,7 +2722,7 @@ DDR2_Init_Start:
#endif
}
-void DDR3_Init(PAST2300DRAMParam param)
+static void DDR3_Init(PAST2300DRAMParam param)
{
ULONG data, data2, retry = 0;
UCHAR *mmiobase;
@@ -2481,7 +2848,7 @@ DDR3_Init_Start:
#endif
}
-void vInitAST2300DRAMReg(ScrnInfoPtr pScrn)
+static void vInitAST2300DRAMReg(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST = ASTPTR(pScrn);
AST2300DRAMParam param;
@@ -2541,12 +2908,12 @@ void vInitAST2300DRAMReg(ScrnInfoPtr pSc
} /* vInitAST2300DRAMReg */
-void vGetDefaultSettings(ScrnInfoPtr pScrn)
+void static 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;
@@ -2578,11 +2945,114 @@ void vGetDefaultSettings(ScrnInfoPtr pSc
} /* vGetDefaultSettings */
+static Bool InitDVO(ScrnInfoPtr pScrn)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ ULONG ulData;
+ UCHAR jReg;
+
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0x12000) = 0x1688A8A8;
+
+ GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg);
+ if (!(jReg & 0x80)) /* Init SCU DVO Settings */
+ {
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x12008); /* delay phase */
+ ulData &= 0xfffff8ff;
+ ulData |= 0x00000500;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0x12008) = ulData;
+
+ if (pAST->jChipType == AST2300)
+ {
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x12084); /* multi-pins for DVO single-edge */
+ ulData |= 0xfffe0000;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0x12084) = ulData;
+
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x12088); /* multi-pins for DVO single-edge */
+ ulData |= 0x000fffff;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0x12088) = ulData;
+
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x12090); /* multi-pins for DVO single-edge */
+ ulData &= 0xffffffcf;
+ ulData |= 0x00000020;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0x12090) = ulData;
+ }
+ else /* AST2400 */
+ {
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x12088); /* multi-pins for DVO single-edge */
+ ulData |= 0x30000000;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0x12088) = ulData;
+
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1208c); /* multi-pins for DVO single-edge */
+ ulData |= 0x000000cf;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0x1208c) = ulData;
+
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x120a4); /* multi-pins for DVO single-edge */
+ ulData |= 0xffff0000;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0x120a4) = ulData;
+
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x120a8); /* multi-pins for DVO single-edge */
+ ulData |= 0x0000000f;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0x120a8) = ulData;
+
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x12094); /* multi-pins for DVO single-edge */
+ ulData |= 0x00000002;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0x12094) = ulData;
+ }
+ }
+
+ /* Force to DVO */
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1202c);
+ ulData &= 0xfffbffff;
+ *(ULONG *) (pAST->MMIOVirtualAddr + 0x1202c) = ulData;
+
+ /* Init VGA DVO Settings */
+ SetIndexRegMask(CRTC_PORT, 0xA3, 0xCF, 0x80); /* enable DVO, single-edge */
+
+ return TRUE;
+} /* InitDVO */
+
+static void vInit3rdTX(ScrnInfoPtr pScrn)
+{
+ ASTRecPtr pAST = ASTPTR(pScrn);
+ ULONG ulData;
+ UCHAR jReg;
+
+ /* Only support on AST2300/2400 */
+ if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
+ {
+ GetIndexRegMask(CRTC_PORT, 0xD1, 0xFF, jReg); /* D[1]: DVO Enable */
+ switch (jReg & 0x0E) /* D[11:9] */
+ {
+ case 0x04: /* Sil164 */
+ InitDVO(pScrn);
+ break;
+ case 0x08: /* DP501 with VBIOS launch FW */
+ LaunchM68K(pScrn);
+ case 0x0C: /* DP501 with BMC launch FW */
+ InitDVO(pScrn);
+ break;
+ default: /* Force to VGA */
+ if (pAST->jTxChipType == Tx_Sil164)
+ InitDVO(pScrn);
+ else
+ {
+ *(ULONG *)(pAST->MMIOVirtualAddr + 0x12000) = 0x1688A8A8;
+ ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1202c);
+ ulData &= 0xfffcffff;
+ *(ULONG *)(pAST->MMIOVirtualAddr) = ulData;
+ }
+ }
+ }
+
+} /* vInit3rdTX */
+
/*
* Flags: 0: POST init
* 1: resume from power management
*/
-Bool InitVGA(ScrnInfoPtr pScrn, ULONG Flags)
+Bool ASTInitVGA(ScrnInfoPtr pScrn, ULONG Flags)
{
ASTRecPtr pAST;
uint32_t ulData;
@@ -2604,11 +3074,12 @@ Bool InitVGA(ScrnInfoPtr pScrn, ULONG Fl
if (Flags == 0)
vGetDefaultSettings(pScrn);
- if (pAST->jChipType == AST2300)
+ if ((pAST->jChipType == AST2300) || (pAST->jChipType == AST2400))
vInitAST2300DRAMReg(pScrn);
else
vInitDRAMReg(pScrn);
+ vInit3rdTX(pScrn);
}
return (TRUE);
@@ -2810,7 +3281,7 @@ ReceiveI2CDataByte(ASTRecPtr pAST)
}
Bool
-GetVGAEDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer)
+ASTGetVGAEDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer)
{
ASTRecPtr pAST;
UCHAR *pjDstEDID;
@@ -2876,9 +3347,9 @@ GetVGAEDID(ScrnInfoPtr pScrn, unsigned c
return (TRUE);
-} /* GetVGAEDID */
+} /* ASTGetVGAEDID */
-Bool bInitAST1180(ScrnInfoPtr pScrn)
+Bool bASTInitAST1180(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST;
uint32_t ulData;
@@ -2913,9 +3384,9 @@ Bool bInitAST1180(ScrnInfoPtr pScrn)
return (TRUE);
-} /* bInitAST1180 */
+} /* bASTInitAST1180 */
-void GetAST1180DRAMInfo(ScrnInfoPtr pScrn)
+void ASTGetAST1180DRAMInfo(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST = ASTPTR(pScrn);
ULONG ulData;
@@ -2968,9 +3439,9 @@ void GetAST1180DRAMInfo(ScrnInfoPtr pScr
/* MCLK */
pAST->ulMCLK = 200;
-} /* GetAST1180DRAMInfo */
+} /* ASTGetAST1180DRAMInfo */
-void vEnableASTVGAMMIO(ScrnInfoPtr pScrn)
+void vASTEnableVGAMMIO(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST = ASTPTR(pScrn);
uint32_t ulData;
Index: xsrc/external/mit/xf86-video-cirrus/dist/src/lg_driver.c
diff -u xsrc/external/mit/xf86-video-cirrus/dist/src/lg_driver.c:1.6 xsrc/external/mit/xf86-video-cirrus/dist/src/lg_driver.c:1.7
--- xsrc/external/mit/xf86-video-cirrus/dist/src/lg_driver.c:1.6 Sun Jun 2 21:38:59 2013
+++ xsrc/external/mit/xf86-video-cirrus/dist/src/lg_driver.c Mon Jul 20 00:10:28 2015
@@ -382,9 +382,11 @@ LgPreInit(ScrnInfoPtr pScrn, int flags)
/* Find the PCI info for this screen */
pCir->PciInfo = xf86GetPciInfoForEntity(pCir->pEnt->index);
+#ifndef XSERVER_LIBPCIACCESS
pCir->PciTag = pciTag(PCI_DEV_BUS(pCir->PciInfo),
PCI_DEV_DEV(pCir->PciInfo),
PCI_DEV_FUNC(pCir->PciInfo));
+#endif
if (xf86LoadSubModule(pScrn, "int10")) {
xf86Int10InfoPtr int10InfoPtr;
Index: xsrc/external/mit/xf86-video-geode/dist/src/geode_msr.c
diff -u xsrc/external/mit/xf86-video-geode/dist/src/geode_msr.c:1.4 xsrc/external/mit/xf86-video-geode/dist/src/geode_msr.c:1.5
--- xsrc/external/mit/xf86-video-geode/dist/src/geode_msr.c:1.4 Thu Mar 20 06:57:26 2014
+++ xsrc/external/mit/xf86-video-geode/dist/src/geode_msr.c Mon Jul 20 00:10:28 2015
@@ -33,18 +33,36 @@
#include <fcntl.h>
#include <sys/types.h>
#include <errno.h>
+
+#ifdef __OpenBSD__
+#include <sys/ioctl.h>
+#include <machine/amdmsr.h>
+#endif
+
#include "os.h"
#include "geode.h"
+#ifdef __OpenBSD__
+#define _PATH_MSRDEV "/dev/amdmsr"
+#define X_PRIVSEP
+#else
+#define _PATH_MSRDEV "/dev/cpu/0/msr"
+#endif
+
static int
_msr_open(void)
{
static int msrfd = 0;
if (msrfd == 0) {
- msrfd = open("/dev/cpu/0/msr", O_RDWR);
+#ifdef X_PRIVSEP
+ msrfd = priv_open_device(_PATH_MSRDEV);
+#else
+ msrfd = open(_PATH_MSRDEV, O_RDWR);
+#endif
if (msrfd == -1)
- ErrorF("Unable to open /dev/cpu/0/msr: %d\n", errno);
+ FatalError("Unable to open %s: %s\n", _PATH_MSRDEV,
+ strerror(errno));
}
return msrfd;
@@ -53,6 +71,19 @@ _msr_open(void)
int
GeodeReadMSR(unsigned long addr, unsigned long *lo, unsigned long *hi)
{
+#ifdef __OpenBSD__
+ struct amdmsr_req req;
+ int fd = _msr_open();
+
+ req.addr = addr;
+
+ if (ioctl(fd, RDMSR, &req) == -1)
+ FatalError("Unable to read MSR at address %0x06x: %s\n", addr,
+ strerror(errno));
+
+ *hi = req.val >> 32;
+ *lo = req.val & 0xffffffff;
+#else
unsigned int data[2];
int fd = _msr_open();
int ret;
@@ -72,13 +103,24 @@ GeodeReadMSR(unsigned long addr, unsigne
*hi = data[1];
*lo = data[0];
-
+#endif
return 0;
}
int
GeodeWriteMSR(unsigned long addr, unsigned long lo, unsigned long hi)
{
+#ifdef __OpenBSD__
+ struct amdmsr_req req;
+ int fd = _msr_open();
+
+ req.addr = addr;
+ req.val = (u_int64_t) hi << 32 | (u_int64_t)lo;
+
+ if (ioctl(fd, WRMSR, &req) == -1)
+ FatalError("Unable to write MSR at address 0x%06x: %s\n", addr,
+ strerror(errno));
+#else
unsigned int data[2];
int fd = _msr_open();
@@ -93,6 +135,6 @@ GeodeWriteMSR(unsigned long addr, unsign
if (write(fd, (void *) data, 8) != 8)
return -1;
-
+#endif
return 0;
}
Index: xsrc/external/mit/xf86-video-mach64/dist/src/atimach64render.c
diff -u xsrc/external/mit/xf86-video-mach64/dist/src/atimach64render.c:1.2 xsrc/external/mit/xf86-video-mach64/dist/src/atimach64render.c:1.3
--- xsrc/external/mit/xf86-video-mach64/dist/src/atimach64render.c:1.2 Tue Nov 12 23:09:32 2013
+++ xsrc/external/mit/xf86-video-mach64/dist/src/atimach64render.c Mon Jul 20 00:10:28 2015
@@ -339,15 +339,13 @@ Mach64GetOrder(int val, int *shift)
static Bool
Mach64CheckTexture(PicturePtr pPict)
{
- int h, w;
+ int h,w;
int l2w, l2h, level, i;
- if (pPict->pDrawable == NULL)
- return FALSE;
-
+ if (pPict->pDrawable == NULL)
+ return FALSE;
w = pPict->pDrawable->width;
h = pPict->pDrawable->height;
-
for (i = 0; i < MACH64_NR_TEX_FORMATS; i++) {
if (Mach64TexFormats[i].pictFormat == pPict->format)
break;
Index: xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c
diff -u xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c:1.4 xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c:1.5
--- xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c:1.4 Sun Jun 2 08:29:33 2013
+++ xsrc/external/mit/xf86-video-mach64/dist/src/atipreinit.c Mon Jul 20 00:10:28 2015
@@ -540,9 +540,8 @@ ATIPreInit
#ifndef AVOID_CPIO_
- xf86Int10InfoPtr pInt10Info = NULL;
vbeInfoPtr pVBE = NULL;
- pointer pInt10Module, pDDCModule = NULL, pVBEModule = NULL;
+ pointer pVBEModule = NULL;
#endif /* AVOID_CPIO */
@@ -665,42 +664,21 @@ ATIPreInit
#endif /* TV_OUT */
/*
- * If there is an ix86-style BIOS, ensure its initialisation entry point
- * has been executed, and retrieve DDC and VBE information from it.
+ * If VBE setup works, grab DDC from it
*/
- if (!(pInt10Module = xf86LoadSubModule(pScreenInfo, "int10")))
- {
- xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING,
- "Unable to load int10 module.\n");
- }
- else if (!(pInt10Info = xf86InitInt10(pATI->iEntity)))
- {
- xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING,
- "Unable to initialise int10 interface.\n");
+ if (!(pVBEModule = xf86LoadSubModule(pScreenInfo, "vbe"))) {
+ xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING,
+ "Unable to load vbe module.\n");
}
else
{
- if (!(pDDCModule = xf86LoadSubModule(pScreenInfo, "ddc")))
- {
- xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING,
- "Unable to load ddc module.\n");
- }
- else
- if (!(pVBEModule = xf86LoadSubModule(pScreenInfo, "vbe")))
- {
- xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING,
- "Unable to load vbe module.\n");
- }
- else
- {
- if ((pVBE = VBEInit(pInt10Info, pATI->iEntity)))
- {
- ConfiguredMonitor = vbeDoEDID(pVBE, pDDCModule);
- }
- }
+ if ((pVBE = VBEInit(NULL, pATI->iEntity)))
+ ConfiguredMonitor = vbeDoEDID(pVBE, NULL);
- if (!(flags & PROBE_DETECT))
+ if (pVBE && !(flags & PROBE_DETECT))
{
+ xf86Int10InfoPtr pInt10Info = pVBE->pInt10;
+
/* Validate, then make a private copy of, the initialised BIOS */
CARD8 *pBIOS = xf86int10Addr(pInt10Info, pInt10Info->BIOSseg << 4);
@@ -723,15 +701,9 @@ ATIPreInit
/* De-activate VBE */
vbeFree(pVBE);
xf86UnloadSubModule(pVBEModule);
-
- /* De-activate int10 */
- xf86FreeInt10(pInt10Info);
- xf86UnloadSubModule(pInt10Module);
#else
- pATI->pInt10 = pInt10Info;
pATI->pVBE = pVBE;
pVBE = NULL;
- pInt10Info = NULL;
#endif /* TV_OUT */
#endif /* AVOID_CPIO */
#ifdef __NetBSD__
@@ -757,10 +729,7 @@ ATIPreInit
xf86SetDDCproperties(pScreenInfo, ConfiguredMonitor);
}
-#ifndef AVOID_CPIO
- /* DDC module is no longer needed at this point */
- xf86UnloadSubModule(pDDCModule);
-#endif
+#endif /* AVOID_CPIO */
if (flags & PROBE_DETECT)
{
@@ -1140,12 +1109,14 @@ ATIPreInit
}
}
+#ifndef XSERVER_LIBPCIACCESS
if (!xf86LinearVidMem())
{
xf86DrvMsg(pScreenInfo->scrnIndex, X_ERROR,
"A linear aperture is not available.\n");
goto bail;
}
+#endif
/*
* Set colour weights.
Index: xsrc/external/mit/xf86-video-savage/dist/src/savage_dri.c
diff -u xsrc/external/mit/xf86-video-savage/dist/src/savage_dri.c:1.4 xsrc/external/mit/xf86-video-savage/dist/src/savage_dri.c:1.5
--- xsrc/external/mit/xf86-video-savage/dist/src/savage_dri.c:1.4 Mon Jun 3 08:50:48 2013
+++ xsrc/external/mit/xf86-video-savage/dist/src/savage_dri.c Mon Jul 20 00:10:28 2015
@@ -875,9 +875,6 @@ Bool SAVAGEDRIScreenInit( ScreenPtr pScr
psav->coreWakeupHandler = pDRIInfo->wrap.WakeupHandler;
pDRIInfo->wrap.WakeupHandler = SAVAGEWakeupHandler;
- pDRIInfo->wrap.ValidateTree = NULL;
- pDRIInfo->wrap.PostValidateTree = NULL;
-
pDRIInfo->createDummyCtx = TRUE;
pDRIInfo->createDummyCtxPriv = FALSE;
Index: xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi.h
diff -u xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi.h:1.4 xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi.h:1.5
--- xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi.h:1.4 Tue Feb 4 09:56:25 2014
+++ xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi.h Mon Jul 20 00:10:28 2015
@@ -37,7 +37,6 @@ authorization from the XFree86 Project a
#include "xf86.h"
#include "xf86_OSproc.h"
-#include "xf86PciInfo.h"
#include "xf86Pci.h"
#include "xf86Cursor.h"
#include "vgaHW.h"
@@ -74,6 +73,15 @@ authorization from the XFree86 Project a
#define __BIG_ENDIAN BIG_ENDIAN
#endif
+#define PCI_VENDOR_SMI 0x126F
+#define PCI_CHIP_SMI910 0x0910
+#define PCI_CHIP_SMI810 0x0810
+#define PCI_CHIP_SMI820 0x0820
+#define PCI_CHIP_SMI710 0x0710
+#define PCI_CHIP_SMI712 0x0712
+#define PCI_CHIP_SMI720 0x0720
+#define PCI_CHIP_SMI731 0x0730
+
#ifndef SMI_DEBUG
#define SMI_DEBUG 0
#endif
@@ -227,7 +235,7 @@ typedef struct
CARD8 * DataPortBase; /* Base of data port */
int DataPortSize; /* Size of data port */
CARD8 * IOBase; /* Base of MMIO VGA ports */
- IOADDRESS PIOBase; /* Base of I/O ports */
+ unsigned int PIOBase; /* Base of I/O ports */
unsigned char * FBBase; /* Base of FB */
CARD32 fbMapOffset; /* offset for fb mapping */
CARD32 FBOffset; /* Current visual FB starting
@@ -274,8 +282,7 @@ typedef struct
Bool interlaced; /* True: Interlaced Video */
XF86VideoAdaptorPtr ptrAdaptor; /* Pointer to VideoAdapter
structure */
- void (*BlockHandler)(int i, pointer blockData, pointer pTimeout,
- pointer pReadMask);
+ void (*BlockHandler)(BLOCKHANDLER_ARGS_DECL);
#if SMI501_CLI_DEBUG
/* SMI 501/502 Command List Interpreter */
Bool batch_active;
@@ -371,7 +378,7 @@ Bool SMI_I2CInit(ScrnInfoPtr pScrn);
/* smi_accel.c */
void SMI_AccelSync(ScrnInfoPtr pScrn);
-void SMI_GEReset(ScrnInfoPtr pScrn, int from_timeout, int line, char *file);
+void SMI_GEReset(ScrnInfoPtr pScrn, int from_timeout, int line, const char *file);
void SMI_EngineReset(ScrnInfoPtr);
void SMI_SetClippingRectangle(ScrnInfoPtr, int, int, int, int);
void SMI_DisableClipping(ScrnInfoPtr);
@@ -389,8 +396,8 @@ Bool SMI_HWCursorInit(ScreenPtr pScrn);
/* smi_driver.c */
Bool SMI_MapMem(ScrnInfoPtr pScrn);
void SMI_UnmapMem(ScrnInfoPtr pScrn);
-void SMI_AdjustFrame(int scrnIndex, int x, int y, int flags);
-Bool SMI_SwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
+void SMI_AdjustFrame(ADJUST_FRAME_ARGS_DECL);
+Bool SMI_SwitchMode(SWITCH_MODE_ARGS_DECL);
void SMI_LoadPalette(ScrnInfoPtr pScrn, int numColors, int *indicies,
LOCO *colors, VisualPtr pVisual);
xf86MonPtr SMI_ddc1(ScrnInfoPtr pScrn);
Index: xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi_driver.c
diff -u xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi_driver.c:1.3 xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi_driver.c:1.4
--- xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi_driver.c:1.3 Mon Jun 3 08:50:48 2013
+++ xsrc/external/mit/xf86-video-siliconmotion/dist/src/smi_driver.c Mon Jul 20 00:10:28 2015
@@ -1002,7 +1002,7 @@ SMI_LeaveVT(VT_FUNC_ARGS_DECL)
static void
SMI_DetectPanelSize(ScrnInfoPtr pScrn)
{
- char *s;
+ const char *s;
int width, height;
SMIPtr pSmi = SMIPTR(pScrn);
@@ -1753,8 +1753,6 @@ SMI_ScreenInit(SCREEN_INIT_ARGS_DECL)
"Done writing mode. Register dump:\n");
SMI_PrintRegs(pScrn);
- miInitializeBackingStore(pScreen);
-
#ifdef HAVE_XMODES
xf86DiDGAInit(pScreen, (unsigned long)(pSmi->FBBase + pScrn->fbOffset));
#endif
@@ -1904,9 +1902,10 @@ SMI_SaveScreen(ScreenPtr pScreen, int mo
}
void
-SMI_AdjustFrame(int scrnIndex, int x, int y, int flags)
+SMI_AdjustFrame(ADJUST_FRAME_ARGS_DECL)
{
- xf86CrtcConfigPtr crtcConf = XF86_CRTC_CONFIG_PTR(xf86Screens[scrnIndex]);
+ SCRN_INFO_PTR(arg);
+ xf86CrtcConfigPtr crtcConf = XF86_CRTC_CONFIG_PTR(pScrn);
xf86CrtcPtr compat_crtc = crtcConf->output[crtcConf->compat_output]->crtc;
ENTER();
@@ -1917,10 +1916,10 @@ SMI_AdjustFrame(int scrnIndex, int x, in
}
Bool
-SMI_SwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+SMI_SwitchMode(SWITCH_MODE_ARGS_DECL)
{
Bool ret;
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
SMIPtr pSmi = SMIPTR(pScrn);
ENTER();
Index: xsrc/external/mit/xf86-video-siliconmotion/dist/src/smilynx_hw.c
diff -u xsrc/external/mit/xf86-video-siliconmotion/dist/src/smilynx_hw.c:1.3 xsrc/external/mit/xf86-video-siliconmotion/dist/src/smilynx_hw.c:1.4
--- xsrc/external/mit/xf86-video-siliconmotion/dist/src/smilynx_hw.c:1.3 Mon Jun 3 08:50:48 2013
+++ xsrc/external/mit/xf86-video-siliconmotion/dist/src/smilynx_hw.c Mon Jul 20 00:10:28 2015
@@ -575,6 +575,12 @@ SMILynx_ddc1Read(ScrnInfoPtr pScrn)
LEAVE(ret);
}
+static void
+SMILynx_ddc1SetSpeed(ScrnInfoPtr pScrn, xf86ddcSpeed speed)
+{
+ vgaHWddc1SetSpeed(pScrn, speed);
+}
+
xf86MonPtr
SMILynx_ddc1(ScrnInfoPtr pScrn)
{
@@ -588,7 +594,7 @@ SMILynx_ddc1(ScrnInfoPtr pScrn)
VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x72, tmp | 0x20);
pMon = xf86PrintEDID(xf86DoEDID_DDC1(XF86_SCRN_ARG(pScrn),
- vgaHWddc1SetSpeedWeak(),
+ SMILynx_ddc1SetSpeed,
SMILynx_ddc1Read));
VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x72, tmp);