mirror of
https://github.com/X11Libre/xf86-video-ast.git
synced 2026-03-24 01:24:41 +00:00
Support DP501 Display Output
This commit is contained in:
17
src/ast.h
17
src/ast.h
@@ -71,6 +71,13 @@ typedef enum _CHIP_ID {
|
||||
AST1180
|
||||
} CHIP_ID;
|
||||
|
||||
typedef enum _TX_CHIPTYPE {
|
||||
Tx_NONE,
|
||||
Tx_Sil164,
|
||||
Tx_Ite66121,
|
||||
Tx_DP501
|
||||
} TX_CHIPTYPE;
|
||||
|
||||
/* AST REC Info */
|
||||
#define AST_NAME "AST"
|
||||
#define AST_DRIVER_NAME "ast"
|
||||
@@ -88,6 +95,10 @@ typedef enum _CHIP_ID {
|
||||
#define CMD_QUEUE_GUARD_BAND 0x00000020
|
||||
#define DEFAULT_HWC_NUM 0x00000002
|
||||
|
||||
/* Customized Info. for DVO */
|
||||
#define HDMI_I2C_CHANNEL 1
|
||||
#define HDMI_TX_I2C_SLAVE_ADDR 0x98
|
||||
|
||||
/* Patch Info */
|
||||
#define ABI_VIDEODRV_VERSION_PATCH SET_ABI_VERSION(0, 5)
|
||||
|
||||
@@ -240,7 +251,7 @@ typedef struct _ASTRec {
|
||||
Bool VGA2Clone;
|
||||
Bool SupportWideScreen;
|
||||
|
||||
ULONG FBPhysAddr; /* Frame buffer physical address */
|
||||
ULONG FBPhysAddr; /* Frame buffer physical address */
|
||||
ULONG MMIOPhysAddr; /* MMIO region physical address */
|
||||
ULONG BIOSPhysAddr; /* BIOS physical address */
|
||||
|
||||
@@ -269,6 +280,10 @@ typedef struct _ASTRec {
|
||||
int mon_h_active; /* Monitor Info. */
|
||||
int mon_v_active;
|
||||
|
||||
UCHAR jTxChipType; /* 3rd TX */
|
||||
UCHAR DP501_MaxVCLK;
|
||||
UCHAR *pDP501FWBufferVirtualAddress;
|
||||
|
||||
#ifdef AstVideo
|
||||
XF86VideoAdaptorPtr adaptor;
|
||||
Atom xvBrightness, xvContrast, xvColorKey, xvHue, xvSaturation;
|
||||
|
||||
@@ -85,6 +85,9 @@ extern Bool bInitAST1180(ScrnInfoPtr pScrn);
|
||||
extern void GetAST1180DRAMInfo(ScrnInfoPtr pScrn);
|
||||
extern void vEnableASTVGAMMIO(ScrnInfoPtr pScrn);
|
||||
|
||||
extern Bool ReadEDID_M68K(ScrnInfoPtr pScrn, BYTE *pEDIDData);
|
||||
extern UCHAR GetLinkMaxCLK(ScrnInfoPtr pScrn);
|
||||
|
||||
extern Bool bInitCMDQInfo(ScrnInfoPtr pScrn, ASTRecPtr pAST);
|
||||
extern Bool bEnableCMDQ(ScrnInfoPtr pScrn, ASTRecPtr pAST);
|
||||
extern void vDisable2D(ScrnInfoPtr pScrn, ASTRecPtr pAST);
|
||||
@@ -1286,10 +1289,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;
|
||||
}
|
||||
@@ -1554,6 +1561,12 @@ ASTProbeDDC(ScrnInfoPtr pScrn, int index)
|
||||
{
|
||||
if (pAST->jChipType == AST1180)
|
||||
Flags = GetVGA2EDID(pScrn, DDC_data);
|
||||
else if (pAST->jTxChipType == Tx_DP501)
|
||||
{
|
||||
Flags = ReadEDID_M68K(pScrn, DDC_data);
|
||||
if (Flags == FALSE)
|
||||
Flags = GetVGAEDID(pScrn, DDC_data);
|
||||
}
|
||||
else
|
||||
Flags = GetVGAEDID(pScrn, DDC_data);
|
||||
|
||||
@@ -1598,6 +1611,14 @@ ASTDoDDC(ScrnInfoPtr pScrn, int index)
|
||||
{
|
||||
if (pAST->jChipType == AST1180)
|
||||
Flags = GetVGA2EDID(pScrn, DDC_data);
|
||||
else if (pAST->jTxChipType == Tx_DP501)
|
||||
{
|
||||
pAST->DP501_MaxVCLK = 0xFF;
|
||||
Flags = ReadEDID_M68K(pScrn, DDC_data);
|
||||
if (Flags) pAST->DP501_MaxVCLK = GetLinkMaxCLK(pScrn);
|
||||
else
|
||||
Flags = GetVGAEDID(pScrn, DDC_data);
|
||||
}
|
||||
else
|
||||
Flags = GetVGAEDID(pScrn, DDC_data);
|
||||
|
||||
|
||||
@@ -413,8 +413,8 @@ VBIOS_DAC_INFO DAC_VGA[] = {
|
||||
/* extern. function */
|
||||
extern void vASTOpenKey(ScrnInfoPtr pScrn);
|
||||
extern Bool bASTRegInit(ScrnInfoPtr pScrn);
|
||||
extern void vAST1000DisplayOn(ASTRecPtr pAST);
|
||||
extern void vAST1000DisplayOff(ASTRecPtr pAST);
|
||||
extern void vAST1000DisplayOn(ScrnInfoPtr pScrn);
|
||||
extern void vAST1000DisplayOff(ScrnInfoPtr pScrn);
|
||||
|
||||
extern Bool bEnable2D(ScrnInfoPtr pScrn, ASTRecPtr pAST);
|
||||
extern void vDisable2D(ScrnInfoPtr pScrn, ASTRecPtr pAST);
|
||||
@@ -465,6 +465,8 @@ ASTSetMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
|
||||
vASTOpenKey(pScrn);
|
||||
bASTRegInit(pScrn);
|
||||
|
||||
vAST1000DisplayOff(pScrn);
|
||||
|
||||
vSetStdReg(pScrn, mode, &vgamodeinfo);
|
||||
vSetCRTCReg(pScrn, mode, &vgamodeinfo);
|
||||
vSetOffsetReg(pScrn, mode, &vgamodeinfo);
|
||||
@@ -472,6 +474,8 @@ ASTSetMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
|
||||
vSetExtReg(pScrn, mode, &vgamodeinfo);
|
||||
vSetSyncReg(pScrn, mode, &vgamodeinfo);
|
||||
bSetDACReg(pScrn, mode, &vgamodeinfo);
|
||||
|
||||
vAST1000DisplayOn(pScrn);
|
||||
}
|
||||
|
||||
/* post set mode */
|
||||
@@ -491,7 +495,6 @@ ASTSetMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
vAST1000DisplayOn(pAST);
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
4049
src/ast_vgatool.c
4049
src/ast_vgatool.c
File diff suppressed because it is too large
Load Diff
@@ -166,3 +166,7 @@
|
||||
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; \
|
||||
*(ULONG *) (pAST->MMIOVirtualAddr + 0x10000 + ((addr) & 0x0000FFFF)) = (data); \
|
||||
}
|
||||
|
||||
/* Delay */
|
||||
#define DelayUS(x) usleep(x)
|
||||
#define DelayMS(x) DelayUS(1000*x)
|
||||
|
||||
Reference in New Issue
Block a user