diff options
Diffstat (limited to 'src/ast_vgatool.c')
-rw-r--r-- | src/ast_vgatool.c | 996 |
1 files changed, 498 insertions, 498 deletions
diff --git a/src/ast_vgatool.c b/src/ast_vgatool.c index 964b826..04d311c 100644 --- a/src/ast_vgatool.c +++ b/src/ast_vgatool.c @@ -78,11 +78,11 @@ void GetAST1180DRAMInfo(ScrnInfoPtr pScrn); void vASTOpenKey(ScrnInfoPtr pScrn) -{ +{ ASTRecPtr pAST = ASTPTR(pScrn); - - SetIndexReg(CRTC_PORT,0x80, 0xA8); - + + SetIndexReg(CRTC_PORT,0x80, 0xA8); + } Bool @@ -97,34 +97,34 @@ bASTRegInit(ScrnInfoPtr pScrn) #if defined(__sparc__) SetIndexRegMask(CRTC_PORT,0xA2, 0xFF, 0x80); #endif - + return (TRUE); - + } void GetDRAMInfo(ScrnInfoPtr pScrn) { ASTRecPtr pAST = ASTPTR(pScrn); - ULONG ulRefPLL, ulDeNumerator, ulNumerator, ulDivider; + ULONG ulRefPLL, ulDeNumerator, ulNumerator, ulDivider; ULONG ulData, ulData2; - + *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000; *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; - + *(ULONG *) (pAST->MMIOVirtualAddr + 0x10000) = 0xFC600309; do { - ; + ; } while (*(volatile ULONG *) (pAST->MMIOVirtualAddr + 0x10000) != 0x01); - + ulData = *(volatile ULONG *) (pAST->MMIOVirtualAddr + 0x10004); - + /* Get BusWidth */ if (ulData & 0x40) pAST->ulDRAMBusWidth = 16; - else + else pAST->ulDRAMBusWidth = 32; - + /* Get DRAM Type */ if (pAST->jChipType == AST2300) { @@ -132,67 +132,67 @@ GetDRAMInfo(ScrnInfoPtr pScrn) { case 0x00: pAST->jDRAMType = DRAMTYPE_512Mx16; - break; - default: + break; + default: case 0x01: pAST->jDRAMType = DRAMTYPE_1Gx16; - break; + break; case 0x02: pAST->jDRAMType = DRAMTYPE_2Gx16; - break; - case 0x03: + break; + case 0x03: pAST->jDRAMType = DRAMTYPE_4Gx16; - break; - } + break; + } } else { switch (ulData & 0x0C) { - case 0x00: + case 0x00: case 0x04: pAST->jDRAMType = DRAMTYPE_512Mx16; - break; - + break; + case 0x08: if (ulData & 0x40) /* 16bits */ pAST->jDRAMType = DRAMTYPE_1Gx16; else /* 32bits */ pAST->jDRAMType = DRAMTYPE_512Mx32; break; - + case 0x0C: pAST->jDRAMType = DRAMTYPE_1Gx32; break; } - } - + } + /* Get MCLK */ - ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x10120); - ulData2 = *(ULONG *) (pAST->MMIOVirtualAddr + 0x10170); + ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x10120); + ulData2 = *(ULONG *) (pAST->MMIOVirtualAddr + 0x10170); if (ulData2 & 0x2000) ulRefPLL = 14318; else ulRefPLL = 12000; - + ulDeNumerator = ulData & 0x1F; ulNumerator = (ulData & 0x3FE0) >> 5; - - ulData = (ulData & 0xC000) >> 14; + + ulData = (ulData & 0xC000) >> 14; switch (ulData) { case 0x03: ulDivider = 0x04; break; case 0x02: - case 0x01: + case 0x01: ulDivider = 0x02; break; default: - ulDivider = 0x01; - } - pAST->ulMCLK = ulRefPLL * (ulNumerator + 2) / ((ulDeNumerator + 2) * ulDivider * 1000); - + ulDivider = 0x01; + } + pAST->ulMCLK = ulRefPLL * (ulNumerator + 2) / ((ulDeNumerator + 2) * ulDivider * 1000); + } /* GetDRAMInfo */ ULONG @@ -203,22 +203,22 @@ GetVRAMInfo(ScrnInfoPtr pScrn) vASTOpenKey(pScrn); - GetIndexRegMask(CRTC_PORT, 0xAA, 0xFF, jReg); + GetIndexRegMask(CRTC_PORT, 0xAA, 0xFF, jReg); switch (jReg & 0x03) { case 0x00: - return (VIDEOMEM_SIZE_08M); + return (VIDEOMEM_SIZE_08M); case 0x01: - return (VIDEOMEM_SIZE_16M); + return (VIDEOMEM_SIZE_16M); case 0x02: - return (VIDEOMEM_SIZE_32M); - case 0x03: - return (VIDEOMEM_SIZE_64M); - } - + return (VIDEOMEM_SIZE_32M); + case 0x03: + return (VIDEOMEM_SIZE_64M); + } + return (DEFAULT_VIDEOMEM_SIZE); - + } ULONG @@ -230,32 +230,32 @@ GetMaxDCLK(ScrnInfoPtr pScrn) ULONG ulDCLK; ulMCLK = pAST->ulMCLK; - ulDRAMBusWidth = pAST->ulDRAMBusWidth; - + ulDRAMBusWidth = pAST->ulDRAMBusWidth; + /* Get Bandwidth */ /* 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) - DRAMEfficiency = 400; + DRAMEfficiency = 400; ulDRAMBandwidth = ulMCLK * ulDRAMBusWidth * 2 / 8; ActualDRAMBandwidth = ulDRAMBandwidth * DRAMEfficiency / 1000; - + /* Get Max DCLK */ if (pAST->jChipType == AST1180) { ulDCLK = ActualDRAMBandwidth / ((pScrn->bitsPerPixel+1) / 8); } else - { - /* Fixed Fixed KVM + CRT threshold issue on AST2100 8bpp modes, ycchen@100708 */ - GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg); - if ((jReg & 0x08) && (pAST->jChipType == AST2000)) - ulDCLK = ActualDRAMBandwidth / ((pScrn->bitsPerPixel+1+16) / 8); + { + /* Fixed Fixed KVM + CRT threshold issue on AST2100 8bpp modes, ycchen@100708 */ + GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg); + if ((jReg & 0x08) && (pAST->jChipType == AST2000)) + ulDCLK = ActualDRAMBandwidth / ((pScrn->bitsPerPixel+1+16) / 8); else if ((jReg & 0x08) && (pScrn->bitsPerPixel == 8)) - ulDCLK = ActualDRAMBandwidth / ((pScrn->bitsPerPixel+1+24) / 8); - else - ulDCLK = ActualDRAMBandwidth / ((pScrn->bitsPerPixel+1) / 8); + ulDCLK = ActualDRAMBandwidth / ((pScrn->bitsPerPixel+1+24) / 8); + else + ulDCLK = ActualDRAMBandwidth / ((pScrn->bitsPerPixel+1) / 8); } /* Add for AST2100, ycchen@061807 */ @@ -265,11 +265,11 @@ GetMaxDCLK(ScrnInfoPtr pScrn) } else { - if (ulDCLK > 165) ulDCLK = 165; + if (ulDCLK > 165) ulDCLK = 165; } - + return(ulDCLK); - + } void @@ -278,30 +278,30 @@ GetChipType(ScrnInfoPtr pScrn) ASTRecPtr pAST = ASTPTR(pScrn); ULONG ulData; UCHAR jReg; - + pAST->jChipType = AST2100; *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000; - *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; - ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1207c); + *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; + ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1207c); switch (ulData & 0x0300) { case 0x0200: xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AST1100 Detected.\n"); - pAST->jChipType = AST1100; + pAST->jChipType = AST1100; break; case 0x0100: - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AST2200 Detected.\n"); - pAST->jChipType = AST2200; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AST2200 Detected.\n"); + pAST->jChipType = AST2200; break; case 0x0000: - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AST2150 Detected.\n"); - pAST->jChipType = AST2150; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AST2150 Detected.\n"); + pAST->jChipType = AST2150; break; - default: - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AST2100 Detected.\n"); + default: + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AST2100 Detected.\n"); pAST->jChipType = AST2100; - } + } } @@ -311,18 +311,18 @@ GetScratchOptions(ScrnInfoPtr pScrn) ASTRecPtr pAST = ASTPTR(pScrn); ULONG ulData; UCHAR jReg; - - /* VGA2 Clone Support */ + + /* 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; + break; case AST2000: pAST->SupportWideScreen = FALSE; break; @@ -330,7 +330,7 @@ GetScratchOptions(ScrnInfoPtr pScrn) GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg); if (!(jReg & 0x80)) pAST->SupportWideScreen = TRUE; - else if (jReg & 0x01) + else if (jReg & 0x01) pAST->SupportWideScreen = TRUE; else { @@ -338,34 +338,34 @@ GetScratchOptions(ScrnInfoPtr pScrn) if (pAST->jChipType == AST2300) /* for AST1300 */ { *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000; - *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; - ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1207c); + *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; + ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1207c); if ((ulData & 0x0300) == 0) /* AST1300 */ - pAST->SupportWideScreen = TRUE; - } - } + pAST->SupportWideScreen = TRUE; + } + } } /* switch case */ - + } /* GetScratchOptions */ void vSetStartAddressCRT1(ASTRecPtr pAST, ULONG base) { ULONG addr; - + if (pAST->jChipType == AST1180) { addr = pAST->ulVRAMBase + base; - WriteAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_STARTADDR, addr); + WriteAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_STARTADDR, addr); } else { addr = base >> 2; /* DW unit */ - + SetIndexReg(CRTC_PORT,0x0D, (UCHAR) (addr & 0xFF)); SetIndexReg(CRTC_PORT,0x0C, (UCHAR) ((addr >> 8) & 0xFF)); SetIndexReg(CRTC_PORT,0xAF, (UCHAR) ((addr >> 16) & 0xFF)); - } + } } @@ -373,14 +373,14 @@ void vAST1000DisplayOff(ASTRecPtr pAST) { ULONG ulData; - + if (pAST->jChipType == AST1180) { - ReadAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulData); - ulData |= 0x00100000; - WriteAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulData); + ReadAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulData); + ulData |= 0x00100000; + WriteAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulData); } - else + else SetIndexRegMask(SEQ_PORT,0x01, 0xDF, 0x20); } @@ -389,38 +389,38 @@ void vAST1000DisplayOn(ASTRecPtr pAST) { ULONG ulData; - + if (pAST->jChipType == AST1180) { - ReadAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulData); - ulData &= 0xFFEFFFFF; - WriteAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulData); + ReadAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulData); + ulData &= 0xFFEFFFFF; + WriteAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulData); } else SetIndexRegMask(SEQ_PORT,0x01, 0xDF, 0x00); -} +} void ASTBlankScreen(ScrnInfoPtr pScrn, Bool unblack) { ASTRecPtr pAST; pAST = ASTPTR(pScrn); - + if (unblack) vAST1000DisplayOn(pAST); else - vAST1000DisplayOff(pAST); -} + vAST1000DisplayOff(pAST); +} void vASTLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors, VisualPtr pVisual) { - + ASTRecPtr pAST = ASTPTR(pScrn); int i, j, index; UCHAR DACIndex, DACR, DACG, DACB; - + switch (pScrn->bitsPerPixel) { case 15: for(i=0; i<numColors; i++) { @@ -430,12 +430,12 @@ vASTLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors, DACR = colors[index].red << (8- pScrn->rgbBits); DACG = colors[index].green << (8- pScrn->rgbBits); DACB = colors[index].blue << (8- pScrn->rgbBits); - - VGA_LOAD_PALETTE_INDEX (DACIndex, DACR, DACG, DACB); + + VGA_LOAD_PALETTE_INDEX (DACIndex, DACR, DACG, DACB); } } break; - + case 16: for(i=0; i<numColors; i++) { index = indices[i]; @@ -444,12 +444,12 @@ vASTLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors, DACR = colors[index/2].red << (8- pScrn->rgbBits); DACG = colors[index].green << (8- pScrn->rgbBits); DACB = colors[index/2].blue << (8- pScrn->rgbBits); - - VGA_LOAD_PALETTE_INDEX (DACIndex, DACR, DACG, DACB); + + VGA_LOAD_PALETTE_INDEX (DACIndex, DACR, DACG, DACB); } } break; - + case 24: for(i=0; i<numColors; i++) { index = indices[i]; @@ -457,11 +457,11 @@ vASTLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors, DACR = colors[index].red; DACG = colors[index].green; DACB = colors[index].blue; - - VGA_LOAD_PALETTE_INDEX (DACIndex, DACR, DACG, DACB); - } + + VGA_LOAD_PALETTE_INDEX (DACIndex, DACR, DACG, DACB); + } break; - + default: for(i=0; i<numColors; i++) { index = indices[i]; @@ -469,12 +469,12 @@ vASTLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors, DACR = colors[index].red >> (8 - pScrn->rgbBits); DACG = colors[index].green >> (8 - pScrn->rgbBits); DACB = colors[index].blue >> (8 - pScrn->rgbBits); - - VGA_LOAD_PALETTE_INDEX (DACIndex, DACR, DACG, DACB); - } + + VGA_LOAD_PALETTE_INDEX (DACIndex, DACR, DACG, DACB); + } } /* end of switch */ - + } /* end of vASTLoadPalette */ void @@ -483,7 +483,7 @@ ASTDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, int fla ASTRecPtr pAST; UCHAR SEQ01, CRB6; ULONG ulData, ulTemp; - + pAST = ASTPTR(pScrn); SEQ01=CRB6=0; ulData = 0; @@ -501,34 +501,34 @@ ASTDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, int fla /* Screen: Off; HSync: Off, VSync: On */ SEQ01 = 0x20; CRB6 = 0x01; - ulData = 0x00140000; + ulData = 0x00140000; break; case DPMSModeSuspend: /* Screen: Off; HSync: On, VSync: Off */ SEQ01 = 0x20; CRB6 = 0x02; - ulData = 0x00180000; + ulData = 0x00180000; break; case DPMSModeOff: /* Screen: Off; HSync: Off, VSync: Off */ SEQ01 = 0x20; CRB6 = 0x03; - ulData = 0x001C0000; + ulData = 0x001C0000; break; } if (pAST->jChipType == AST1180) { - ReadAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulTemp); - ulTemp &= 0xFFE3FFFF; - ulTemp |= ulData; - WriteAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulTemp); + ReadAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulTemp); + ulTemp &= 0xFFE3FFFF; + ulTemp |= ulData; + WriteAST1180SOC(AST1180_GFX_BASE + AST1180_VGA1_CTRL, ulTemp); } else - { + { SetIndexRegMask(SEQ_PORT,0x01, 0xDF, SEQ01); SetIndexRegMask(CRTC_PORT,0xB6, 0xFC, CRB6); - } + } } @@ -545,11 +545,11 @@ Bool GetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer) { ASTRecPtr pAST = ASTPTR(pScrn); - ULONG i, ulData; + ULONG i, ulData; UCHAR *pjEDID; ULONG base, deviceaddr; UCHAR *offset; - + pjEDID = pEDIDBuffer; if (pAST->jChipType == AST1180) @@ -563,16 +563,16 @@ GetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer) base = I2C_BASE; offset = pAST->MMIOVirtualAddr + 0x10000 + I2C_OFFSET; deviceaddr = I2C_DEVICEADDR; - + /* SCU settings */ *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000; *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; usleep(10000); - - *(ULONG *) (pAST->MMIOVirtualAddr + 0x12000) = 0x1688A8A8; + + *(ULONG *) (pAST->MMIOVirtualAddr + 0x12000) = 0x1688A8A8; ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x12004); ulData &= 0xfffffffb; - *(ULONG *) (pAST->MMIOVirtualAddr + 0x12004) = ulData; + *(ULONG *) (pAST->MMIOVirtualAddr + 0x12004) = ulData; usleep(10000); } @@ -580,7 +580,7 @@ GetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer) *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = base; *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; usleep(10000); - + /* I2C Start */ *(ULONG *) (offset + 0x00) = 0x0; *(ULONG *) (offset + 0x04) = 0x77777355; @@ -603,11 +603,11 @@ GetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer) } while (!(ulData & 0x01)); *(ULONG *) (offset + 0x10) = 0xffffffff; *(ULONG *) (offset + 0x20) = deviceaddr + 1; - *(ULONG *) (offset + 0x14) = 0x03; + *(ULONG *) (offset + 0x14) = 0x03; do { ulData = *(volatile ULONG *) (offset + 0x10); } while (!(ulData & 0x01)); - + /* I2C Read */ for (i=0; i<127; i++) { @@ -618,7 +618,7 @@ GetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer) ulData = *(volatile ULONG *) (offset + 0x10); } while (!(ulData & 0x04)); *(ULONG *) (offset + 0x10) = 0xffffffff; - *(UCHAR *) (pjEDID++) = (UCHAR) ((*(ULONG *) (offset + 0x20) & 0xFF00) >> 8); + *(UCHAR *) (pjEDID++) = (UCHAR) ((*(ULONG *) (offset + 0x20) & 0xFF00) >> 8); } /* Read Last Byte */ @@ -629,7 +629,7 @@ GetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer) ulData = *(volatile ULONG *) (offset + 0x10); } while (!(ulData & 0x04)); *(ULONG *) (offset + 0x10) = 0xffffffff; - *(UCHAR *) (pjEDID++) = (UCHAR) ((*(ULONG *) (offset + 0x20) & 0xFF00) >> 8); + *(UCHAR *) (pjEDID++) = (UCHAR) ((*(ULONG *) (offset + 0x20) & 0xFF00) >> 8); /* I2C Stop */ *(ULONG *) (offset + 0x10) = 0xffffffff; @@ -637,9 +637,9 @@ GetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer) do { ulData = *(volatile ULONG *) (offset + 0x10); } while (!(ulData & 0x10)); - *(ULONG *) (offset + 0x0C) &= 0xffffffef; + *(ULONG *) (offset + 0x0C) &= 0xffffffef; *(ULONG *) (offset + 0x10) = 0xffffffff; - + return (TRUE); } /* GetVGA2EDID */ @@ -650,44 +650,44 @@ Bool bIsVGAEnabled(ScrnInfoPtr pScrn) ASTRecPtr pAST; UCHAR ch; ULONG ulData; - + pAST = ASTPTR(pScrn); if (pAST->jChipType == AST1180) { WriteAST1180SOC(AST1180_MMC_BASE+0x00, 0xFC600309); /* unlock */ ReadAST1180SOC(AST1180_MMC_BASE+0x08, ulData); - return (ulData); - } - else + return (ulData); + } + else { - + ch = GetReg(VGA_ENABLE_PORT); if (ch) { - + vASTOpenKey(pScrn); - - GetIndexRegMask(CRTC_PORT, 0xB6, 0xFF, ch); - + + GetIndexRegMask(CRTC_PORT, 0xB6, 0xFF, ch); + return (ch & 0x04); } } - - return (0); -} + + return (0); +} void vEnableVGA(ScrnInfoPtr pScrn) { ASTRecPtr pAST; - + pAST = ASTPTR(pScrn); SetReg(VGA_ENABLE_PORT, 0x01); - SetReg(MISC_PORT_WRITE, 0x01); - -} + SetReg(MISC_PORT_WRITE, 0x01); + +} UCHAR ExtRegInfo[] = { 0x0F, @@ -714,7 +714,7 @@ void vSetDefExtReg(ScrnInfoPtr pScrn) { ASTRecPtr pAST; UCHAR i, jIndex, jReg, *pjExtRegInfo; - + pAST = ASTPTR(pScrn); /* Reset Scratch */ @@ -729,8 +729,8 @@ void vSetDefExtReg(ScrnInfoPtr pScrn) if (PCI_DEV_REVISION(pAST->PciInfo) > 0x20) pjExtRegInfo = ExtRegInfo_AST2300; else - pjExtRegInfo = ExtRegInfo_AST2300A0; - } + pjExtRegInfo = ExtRegInfo_AST2300A0; + } else pjExtRegInfo = ExtRegInfo; @@ -744,18 +744,18 @@ void vSetDefExtReg(ScrnInfoPtr pScrn) /* disable standard IO/MEM decode if secondary */ if (!xf86IsPrimaryPci(pAST->PciInfo)) - SetIndexRegMask(CRTC_PORT,0xA1, 0xFF, 0x03); + SetIndexRegMask(CRTC_PORT,0xA1, 0xFF, 0x03); /* Set Ext. Default */ - SetIndexRegMask(CRTC_PORT,0x8C, 0x00, 0x01); - SetIndexRegMask(CRTC_PORT,0xB7, 0x00, 0x00); - + SetIndexRegMask(CRTC_PORT,0x8C, 0x00, 0x01); + SetIndexRegMask(CRTC_PORT,0xB7, 0x00, 0x00); + /* Enable RAMDAC for A1, ycchen@113005 */ jReg = 0x04; if (pAST->jChipType == AST2300) jReg |= 0x20; - SetIndexRegMask(CRTC_PORT,0xB6, 0xFF, jReg); - + SetIndexRegMask(CRTC_PORT,0xB6, 0xFF, jReg); + } __inline ULONG MIndwm(UCHAR *mmiobase, ULONG r) @@ -764,15 +764,15 @@ __inline ULONG MIndwm(UCHAR *mmiobase, ULONG r) *(ULONG *) (mmiobase + 0xF000) = 0x1; return ( *(volatile ULONG *) (mmiobase + 0x10000 + (r & 0x0000FFFF)) ); - + } __inline void MOutdwm(UCHAR *mmiobase, ULONG r, ULONG v) { - + *(ULONG *) (mmiobase + 0xF004) = r & 0xFFFF0000; *(ULONG *) (mmiobase + 0xF000) = 0x1; - + *(volatile ULONG *) (mmiobase + 0x10000 + (r & 0x0000FFFF)) = v; } @@ -810,7 +810,7 @@ typedef struct _AST2150DRAMParam { ULONG MMCTestBurst2_AST2150(PAST2150DRAMParam param, ULONG datagen) { ULONG data, timeout; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -842,7 +842,7 @@ ULONG MMCTestBurst2_AST2150(PAST2150DRAMParam param, ULONG datagen) ULONG MMCTestSingle2_AST2150(PAST2150DRAMParam param, ULONG datagen) { ULONG data, timeout; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -863,7 +863,7 @@ ULONG MMCTestSingle2_AST2150(PAST2150DRAMParam param, ULONG datagen) int CBRTest_AST2150(PAST2150DRAMParam param) { - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -882,7 +882,7 @@ int CBRTest_AST2150(PAST2150DRAMParam param) int CBRScan_AST2150(PAST2150DRAMParam param, int busw) { ULONG patcnt, loop; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -904,7 +904,7 @@ int CBRScan_AST2150(PAST2150DRAMParam param, int busw) void CBRDLLI_AST2150(PAST2150DRAMParam param, int busw) { ULONG dllmin[4], dllmax[4], dlli, data, passcnt; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -938,22 +938,22 @@ void CBRDLLI_AST2150(PAST2150DRAMParam param, int busw) } typedef struct _AST_DRAMStruct { - + USHORT Index; ULONG Data; - -} AST_DRAMStruct, *PAST_DRAMStruct; + +} AST_DRAMStruct, *PAST_DRAMStruct; AST_DRAMStruct AST2000DRAMTableData[] = { { 0x0108, 0x00000000 }, { 0x0120, 0x00004a21 }, - { 0xFF00, 0x00000043 }, + { 0xFF00, 0x00000043 }, { 0x0000, 0xFFFFFFFF }, { 0x0004, 0x00000089 }, { 0x0008, 0x22331353 }, { 0x000C, 0x0d07000b }, { 0x0010, 0x11113333 }, - { 0x0020, 0x00110350 }, + { 0x0020, 0x00110350 }, { 0x0028, 0x1e0828f0 }, { 0x0024, 0x00000001 }, { 0x001C, 0x00000000 }, @@ -972,7 +972,7 @@ AST_DRAMStruct AST2000DRAMTableData[] = { { 0xFFFF, 0xFFFFFFFF } }; -AST_DRAMStruct AST1100DRAMTableData[] = { +AST_DRAMStruct AST1100DRAMTableData[] = { { 0x2000, 0x1688a8a8 }, { 0x2020, 0x000041f0 }, { 0xFF00, 0x00000043 }, @@ -1025,7 +1025,7 @@ AST_DRAMStruct AST1100DRAMTableData[] = { { 0xffff, 0xffffffff }, }; -AST_DRAMStruct AST2100DRAMTableData[] = { +AST_DRAMStruct AST2100DRAMTableData[] = { { 0x2000, 0x1688a8a8 }, { 0x2020, 0x00004120 }, { 0xFF00, 0x00000043 }, @@ -1086,71 +1086,71 @@ void vInitDRAMReg(ScrnInfoPtr pScrn) UCHAR jReg; AST2150DRAMParam param; - GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg); - + GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg); + if ((jReg & 0x80) == 0) /* VGA only */ { if (pAST->jChipType == AST2000) { pjDRAMRegInfo = AST2000DRAMTableData; - + *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000; - *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; + *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; *(ULONG *) (pAST->MMIOVirtualAddr + 0x10100) = 0xa8; do { - ; + ; } while (*(volatile ULONG *) (pAST->MMIOVirtualAddr + 0x10100) != 0xa8); - + } - else /* AST2100/1100 */ - { + else /* AST2100/1100 */ + { if ((pAST->jChipType == AST2100) || (pAST->jChipType == AST2200)) pjDRAMRegInfo = AST2100DRAMTableData; else pjDRAMRegInfo = AST1100DRAMTableData; - + *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000; *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; - + *(ULONG *) (pAST->MMIOVirtualAddr + 0x12000) = 0x1688A8A8; do { - ; + ; } while (*(volatile ULONG *) (pAST->MMIOVirtualAddr + 0x12000) != 0x01); - + *(ULONG *) (pAST->MMIOVirtualAddr + 0x10000) = 0xFC600309; do { - ; + ; } while (*(volatile ULONG *) (pAST->MMIOVirtualAddr + 0x10000) != 0x01); } - + while (pjDRAMRegInfo->Index != 0xFFFF) { if (pjDRAMRegInfo->Index == 0xFF00) /* Delay function */ { - for (i=0; i<15; i++) + for (i=0; i<15; i++) usleep(pjDRAMRegInfo->Data); } else if ( (pjDRAMRegInfo->Index == 0x0004) && (pAST->jChipType != AST2000) ) { ulData = pjDRAMRegInfo->Data; - + if (pAST->jDRAMType == DRAMTYPE_1Gx16) ulData = 0x00000d89; else if (pAST->jDRAMType == DRAMTYPE_1Gx32) ulData = 0x00000c8d; - + ulTemp = *(ULONG *) (pAST->MMIOVirtualAddr + 0x12070); ulTemp &= 0x0000000C; - ulTemp <<= 2; - *(ULONG *) (pAST->MMIOVirtualAddr + 0x10000 + pjDRAMRegInfo->Index) = (ulData | ulTemp); - } + ulTemp <<= 2; + *(ULONG *) (pAST->MMIOVirtualAddr + 0x10000 + pjDRAMRegInfo->Index) = (ulData | ulTemp); + } else - { + { *(ULONG *) (pAST->MMIOVirtualAddr + 0x10000 + pjDRAMRegInfo->Index) = pjDRAMRegInfo->Data; } - pjDRAMRegInfo++; + pjDRAMRegInfo++; } /* AST2100/2150 DRAM Calibration, ycchen@021511 */ @@ -1161,37 +1161,37 @@ void vInitDRAMReg(ScrnInfoPtr pScrn) ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x10004); if (ulData & 0x40) CBRDLLI_AST2150(¶m, 16); /* 16bits */ - else + else CBRDLLI_AST2150(¶m, 32); /* 32bits */ - } + } switch (pAST->jChipType) { case AST2000: *(ULONG *) (pAST->MMIOVirtualAddr + 0x10140) |= 0x40; break; - + case AST1100: case AST2100: case AST2200: - case AST2150: + case AST2150: ulTemp = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1200c); *(ULONG *) (pAST->MMIOVirtualAddr + 0x1200c) = (ulTemp & 0xFFFFFFFD); *(ULONG *) (pAST->MMIOVirtualAddr + 0x12040) |= 0x40; break; } - + } /* Init DRAM */ - + /* wait ready */ do { - GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg); + GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg); } while ((jReg & 0x40) == 0); - + } /* vInitDRAMReg */ -/* +/* * AST2300 DRAM settings modules */ #define DDR3 0 @@ -1208,7 +1208,7 @@ typedef struct _AST2300DRAMParam { ULONG RODT; ULONG DRAM_CONFIG; - ULONG REG_PERIOD; + ULONG REG_PERIOD; ULONG REG_MADJ; ULONG REG_SADJ; ULONG REG_MRS; @@ -1216,13 +1216,13 @@ typedef struct _AST2300DRAMParam { ULONG REG_AC1; ULONG REG_AC2; ULONG REG_DQSIC; - ULONG REG_DRV; + ULONG REG_DRV; ULONG REG_IOZ; ULONG REG_DQIDLY; ULONG REG_FREQ; ULONG MADJ_MAX; ULONG DLL2_FINETUNE_STEP; - + } AST2300DRAMParam, *PAST2300DRAMParam; /* @@ -1250,10 +1250,10 @@ ULONG pattern[8] ={ int MMCTestBurst(PAST2300DRAMParam param, ULONG datagen) { ULONG data, timeout; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; - + MOutdwm(mmiobase, 0x1E6E0070, 0x00000000); MOutdwm(mmiobase, 0x1E6E0070, 0x000000C1 | (datagen << 3)); timeout = 0; @@ -1274,7 +1274,7 @@ int MMCTestBurst(PAST2300DRAMParam param, ULONG datagen) int MMCTestBurst2(PAST2300DRAMParam param, ULONG datagen) { ULONG data, timeout; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -1297,7 +1297,7 @@ int MMCTestBurst2(PAST2300DRAMParam param, ULONG datagen) int MMCTestSingle(PAST2300DRAMParam param, ULONG datagen) { ULONG data, timeout; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -1321,7 +1321,7 @@ int MMCTestSingle(PAST2300DRAMParam param, ULONG datagen) int MMCTestSingle2(PAST2300DRAMParam param, ULONG datagen) { ULONG data, timeout; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -1344,7 +1344,7 @@ int MMCTestSingle2(PAST2300DRAMParam param, ULONG datagen) int CBRTest(PAST2300DRAMParam param) { ULONG data; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -1359,14 +1359,14 @@ int CBRTest(PAST2300DRAMParam param) data |= MMCTestBurst2(param, 07); if((data & 0xff) && (data & 0xff00)) return(0); if(!data) return(3); else if(data & 0xff) return(2); - + return(1); } int CBRScan(PAST2300DRAMParam param) { ULONG data, data2, patcnt, loop; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -1392,7 +1392,7 @@ int CBRScan(PAST2300DRAMParam param) ULONG CBRTest2(PAST2300DRAMParam param) { ULONG data; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -1404,7 +1404,7 @@ ULONG CBRTest2(PAST2300DRAMParam param) ULONG CBRScan2(PAST2300DRAMParam param) { ULONG data, data2, patcnt, loop; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -1430,7 +1430,7 @@ ULONG CBRScan2(PAST2300DRAMParam param) void finetuneDQI(PAST2300DRAMParam param) { ULONG gold_sadj[2], dllmin[16], dllmax[16], dlli, data, cnt, mask, passcnt; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -1527,7 +1527,7 @@ void finetuneDQI(PAST2300DRAMParam param) Bool finetuneDQI_L(PAST2300DRAMParam param) { ULONG gold_sadj[2], dllmin[16], dllmax[16], dlli, data, cnt, mask, passcnt, retry = 0; - UCHAR *mmiobase; + UCHAR *mmiobase; Bool status = FALSE; mmiobase = param->pjMMIOVirtualAddress; @@ -1582,8 +1582,8 @@ Bool finetuneDQI_L(PAST2300DRAMParam param) goto FINETUNE_START; } status = TRUE; - -FINETUNE_DONE: + +FINETUNE_DONE: gold_sadj[0] = gold_sadj[0] >> 4; gold_sadj[1] = gold_sadj[0]; @@ -1635,13 +1635,13 @@ FINETUNE_DONE: MOutdwm(mmiobase, 0x1E6E0084, data); return status; - + } /* finetuneDQI_L */ void finetuneDQI_L2(PAST2300DRAMParam param) { ULONG gold_sadj[2], dllmin[16], dllmax[16], dlli, data, cnt, mask, passcnt, data2; - UCHAR *mmiobase; + UCHAR *mmiobase; mmiobase = param->pjMMIOVirtualAddress; @@ -1767,13 +1767,13 @@ void finetuneDQI_L2(PAST2300DRAMParam param) data |= data2 << 21; } MOutdwm(mmiobase, 0x1E6E0084, data); - + } /* finetuneDQI_L2 */ Bool CBRDLL2(PAST2300DRAMParam param) { ULONG dllmin[2], dllmax[2], dlli, data, data2, passcnt, retry=0; - UCHAR *mmiobase; + UCHAR *mmiobase; BOOL status = FALSE; mmiobase = param->pjMMIOVirtualAddress; @@ -1829,7 +1829,7 @@ Bool CBRDLL2(PAST2300DRAMParam param) goto CBR_START2; } status = TRUE; - + CBR_DONE2: dlli = (dllmin[1] + dllmax[1]) >> 1; dlli <<= 8; @@ -1852,32 +1852,32 @@ CBR_DONE2: data = MIndwm(mmiobase, 0x1E6E0070); }while(!(data & 0x00001000)); MOutdwm(mmiobase, 0x1E6E0070, 0x00000000); - + return status; - + } /* CBRDLL2 */ void GetDDR2Info(PAST2300DRAMParam param) { UCHAR *mmiobase; ULONG trap, TRAP_AC2, TRAP_MRS; - + mmiobase = param->pjMMIOVirtualAddress; MOutdwm(mmiobase, 0x1E6E2000, 0x1688A8A8); - /* Ger trap info */ + /* Ger trap info */ trap = (MIndwm(mmiobase, 0x1E6E2070) >> 25) & 0x3; TRAP_AC2 = (trap << 20) | (trap << 16); TRAP_AC2 += 0x00110000; TRAP_MRS = 0x00000040 | (trap << 4); - - + + param->REG_MADJ = 0x00034C4C; param->REG_SADJ = 0x00001800; param->REG_DRV = 0x000000F0; param->REG_PERIOD = param->DRAM_Freq; param->RODT = 0; - + switch(param->DRAM_Freq){ case 264 : MOutdwm(mmiobase, 0x1E6E2020, 0x0130); param->WODT = 0; @@ -1906,24 +1906,24 @@ void GetDDR2Info(PAST2300DRAMParam param) param->REG_FREQ = 0x00004DC0; param->MADJ_MAX = 96; param->DLL2_FINETUNE_STEP = 3; - + switch (param->DRAM_ChipID) { - case DRAMTYPE_512Mx16: + case DRAMTYPE_512Mx16: param->REG_AC2 = 0xAA009012 | TRAP_AC2; break; - default: - case DRAMTYPE_1Gx16: + default: + case DRAMTYPE_1Gx16: param->REG_AC2 = 0xAA009016 | TRAP_AC2; break; - case DRAMTYPE_2Gx16: + case DRAMTYPE_2Gx16: param->REG_AC2 = 0xAA009023 | TRAP_AC2; break; - case DRAMTYPE_4Gx16: + case DRAMTYPE_4Gx16: param->REG_AC2 = 0xAA00903B | TRAP_AC2; - break; + break; } - + break; default: case 396 : MOutdwm(mmiobase, 0x1E6E2020, 0x03F1); @@ -1940,26 +1940,26 @@ void GetDDR2Info(PAST2300DRAMParam param) param->REG_FREQ = 0x000050C0; param->MADJ_MAX = 96; param->DLL2_FINETUNE_STEP = 4; - + switch (param->DRAM_ChipID) { - case DRAMTYPE_512Mx16: + case DRAMTYPE_512Mx16: param->REG_AC2 = 0xCC00B016 | TRAP_AC2; break; - default: - case DRAMTYPE_1Gx16: + default: + case DRAMTYPE_1Gx16: param->REG_AC2 = 0xCC00B01B | TRAP_AC2; break; - case DRAMTYPE_2Gx16: + case DRAMTYPE_2Gx16: param->REG_AC2 = 0xCC00B02B | TRAP_AC2; break; - case DRAMTYPE_4Gx16: + case DRAMTYPE_4Gx16: param->REG_AC2 = 0xCC00B03F | TRAP_AC2; - break; + break; } - + break; - + case 408 : MOutdwm(mmiobase, 0x1E6E2020, 0x01F0); param->WODT = 1; param->RODT = 0; @@ -1974,24 +1974,24 @@ void GetDDR2Info(PAST2300DRAMParam param) param->REG_FREQ = 0x000050C0; param->MADJ_MAX = 96; param->DLL2_FINETUNE_STEP = 4; - + switch (param->DRAM_ChipID) { - case DRAMTYPE_512Mx16: + case DRAMTYPE_512Mx16: param->REG_AC2 = 0xCC00B016 | TRAP_AC2; break; - default: - case DRAMTYPE_1Gx16: + default: + case DRAMTYPE_1Gx16: param->REG_AC2 = 0xCC00B01B | TRAP_AC2; break; - case DRAMTYPE_2Gx16: + case DRAMTYPE_2Gx16: param->REG_AC2 = 0xCC00B02B | TRAP_AC2; break; - case DRAMTYPE_4Gx16: + case DRAMTYPE_4Gx16: param->REG_AC2 = 0xCC00B03F | TRAP_AC2; - break; + break; } - + break; case 456 : MOutdwm(mmiobase, 0x1E6E2020, 0x0230); param->WODT = 0; @@ -2071,24 +2071,24 @@ void GetDDR2Info(PAST2300DRAMParam param) switch (param->DRAM_ChipID) { - case DRAMTYPE_512Mx16: + case DRAMTYPE_512Mx16: param->DRAM_CONFIG = 0x100; break; - default: - case DRAMTYPE_1Gx16: + default: + case DRAMTYPE_1Gx16: param->DRAM_CONFIG = 0x121; break; - case DRAMTYPE_2Gx16: + case DRAMTYPE_2Gx16: param->DRAM_CONFIG = 0x122; break; - case DRAMTYPE_4Gx16: + case DRAMTYPE_4Gx16: param->DRAM_CONFIG = 0x123; - break; + break; }; /* switch size */ - + switch (param->VRAM_Size) { - default: + default: case VIDEOMEM_SIZE_08M: param->DRAM_CONFIG |= 0x00; break; @@ -2100,16 +2100,16 @@ void GetDDR2Info(PAST2300DRAMParam param) break; case VIDEOMEM_SIZE_64M: param->DRAM_CONFIG |= 0x0c; - break; + break; } - + } void GetDDR3Info(PAST2300DRAMParam param) { UCHAR *mmiobase; ULONG trap, TRAP_AC2, TRAP_MRS; - + mmiobase = param->pjMMIOVirtualAddress; MOutdwm(mmiobase, 0x1E6E2000, 0x1688A8A8); @@ -2119,7 +2119,7 @@ void GetDDR3Info(PAST2300DRAMParam param) TRAP_AC2 |= 0x00300000 +((trap & 0x2) << 19); TRAP_MRS = 0x00000010 + (trap << 4); TRAP_MRS |= ((trap & 0x2) << 18); - + param->REG_MADJ = 0x00034C4C; param->REG_SADJ = 0x00001800; param->REG_DRV = 0x000000F0; @@ -2139,22 +2139,22 @@ void GetDDR3Info(PAST2300DRAMParam param) param->REG_FREQ = 0x00004DC0; param->MADJ_MAX = 96; param->DLL2_FINETUNE_STEP = 3; - + switch (param->DRAM_ChipID) { - default: + default: case DRAMTYPE_512Mx16: - case DRAMTYPE_1Gx16: + case DRAMTYPE_1Gx16: param->REG_AC2 = 0xAA007613 | TRAP_AC2; break; - case DRAMTYPE_2Gx16: + case DRAMTYPE_2Gx16: param->REG_AC2 = 0xAA00761c | TRAP_AC2; break; - case DRAMTYPE_4Gx16: + case DRAMTYPE_4Gx16: param->REG_AC2 = 0xAA007636 | TRAP_AC2; - break; + break; } - + break; default: case 396 : MOutdwm(mmiobase, 0x1E6E2020, 0x03F1); @@ -2165,29 +2165,29 @@ void GetDDR3Info(PAST2300DRAMParam param) param->REG_MRS = 0x04001600 | TRAP_MRS; param->REG_EMRS = 0x00000000; param->REG_IOZ = 0x00000034; - param->REG_DRV = 0x000000FA; + param->REG_DRV = 0x000000FA; param->REG_DQIDLY = 0x00000089; param->REG_FREQ = 0x000050C0; param->MADJ_MAX = 96; param->DLL2_FINETUNE_STEP = 4; - + switch (param->DRAM_ChipID) { - default: - case DRAMTYPE_512Mx16: - case DRAMTYPE_1Gx16: + default: + case DRAMTYPE_512Mx16: + case DRAMTYPE_1Gx16: param->REG_AC2 = 0xCC009617 | TRAP_AC2; break; - case DRAMTYPE_2Gx16: + case DRAMTYPE_2Gx16: param->REG_AC2 = 0xCC009622 | TRAP_AC2; break; - case DRAMTYPE_4Gx16: + case DRAMTYPE_4Gx16: param->REG_AC2 = 0xCC00963F | TRAP_AC2; - break; + break; } - + break; - + case 408 : MOutdwm(mmiobase, 0x1E6E2020, 0x01F0); param->WODT = 1; param->REG_AC1 = 0x33302825; @@ -2196,27 +2196,27 @@ void GetDDR3Info(PAST2300DRAMParam param) param->REG_MRS = 0x04001600 | TRAP_MRS; param->REG_EMRS = 0x00000000; param->REG_IOZ = 0x00000034; - param->REG_DRV = 0x000000FA; + param->REG_DRV = 0x000000FA; param->REG_DQIDLY = 0x00000089; param->REG_FREQ = 0x000050C0; param->MADJ_MAX = 96; param->DLL2_FINETUNE_STEP = 4; - + switch (param->DRAM_ChipID) { - default: - case DRAMTYPE_512Mx16: - case DRAMTYPE_1Gx16: + default: + case DRAMTYPE_512Mx16: + case DRAMTYPE_1Gx16: param->REG_AC2 = 0xCC009617 | TRAP_AC2; break; - case DRAMTYPE_2Gx16: + case DRAMTYPE_2Gx16: param->REG_AC2 = 0xCC009622 | TRAP_AC2; break; - case DRAMTYPE_4Gx16: + case DRAMTYPE_4Gx16: param->REG_AC2 = 0xCC00963F | TRAP_AC2; - break; + break; } - + break; case 456 : MOutdwm(mmiobase, 0x1E6E2020, 0x0230); param->WODT = 0; @@ -2237,7 +2237,7 @@ void GetDDR3Info(PAST2300DRAMParam param) param->REG_AC2 = 0xDE44A61D; param->REG_DQSIC = 0x00000117; param->REG_MRS = 0x00081A30; - param->REG_EMRS = 0x00000000; + param->REG_EMRS = 0x00000000; param->REG_IOZ = 0x070000BB; param->REG_DQIDLY = 0x000000A0; param->REG_FREQ = 0x000054C0; @@ -2252,7 +2252,7 @@ void GetDDR3Info(PAST2300DRAMParam param) param->REG_DQSIC = 0x00000125; param->REG_MRS = 0x00081A30; param->REG_EMRS = 0x00000040; - param->REG_DRV = 0x000000F5; + param->REG_DRV = 0x000000F5; param->REG_IOZ = 0x00000023; param->REG_DQIDLY = 0x00000088; param->REG_FREQ = 0x000055C0; @@ -2269,7 +2269,7 @@ void GetDDR3Info(PAST2300DRAMParam param) param->REG_DQSIC = 0x0000013F; param->REG_MRS = 0x00101A50; param->REG_EMRS = 0x00000040; - param->REG_DRV = 0x000000FA; + param->REG_DRV = 0x000000FA; param->REG_IOZ = 0x00000023; param->REG_DQIDLY = 0x00000078; param->REG_FREQ = 0x000057C0; @@ -2278,7 +2278,7 @@ void GetDDR3Info(PAST2300DRAMParam param) break; case 600 : MOutdwm(mmiobase, 0x1E6E2020, 0x02E1); param->REG_MADJ = 0x00136868; - param->REG_SADJ = 0x00004534; + param->REG_SADJ = 0x00004534; param->WODT = 1; param->RODT = 1; param->REG_AC1 = 0x32302A37; @@ -2286,7 +2286,7 @@ void GetDDR3Info(PAST2300DRAMParam param) param->REG_DQSIC = 0x0000014D; param->REG_MRS = 0x00101A50; param->REG_EMRS = 0x00000004; - param->REG_DRV = 0x000000F5; + param->REG_DRV = 0x000000F5; param->REG_IOZ = 0x00000023; param->REG_DQIDLY = 0x00000078; param->REG_FREQ = 0x000058C0; @@ -2295,7 +2295,7 @@ void GetDDR3Info(PAST2300DRAMParam param) break; case 624 : MOutdwm(mmiobase, 0x1E6E2020, 0x0160); param->REG_MADJ = 0x00136868; - param->REG_SADJ = 0x00004534; + param->REG_SADJ = 0x00004534; param->WODT = 1; param->RODT = 1; param->REG_AC1 = 0x32302A37; @@ -2303,7 +2303,7 @@ void GetDDR3Info(PAST2300DRAMParam param) param->REG_DQSIC = 0x0000015A; param->REG_MRS = 0x02101A50; param->REG_EMRS = 0x00000004; - param->REG_DRV = 0x000000F5; + param->REG_DRV = 0x000000F5; param->REG_IOZ = 0x00000034; param->REG_DQIDLY = 0x00000078; param->REG_FREQ = 0x000059C0; @@ -2314,24 +2314,24 @@ void GetDDR3Info(PAST2300DRAMParam param) switch (param->DRAM_ChipID) { - case DRAMTYPE_512Mx16: + case DRAMTYPE_512Mx16: param->DRAM_CONFIG = 0x130; break; - default: - case DRAMTYPE_1Gx16: + default: + case DRAMTYPE_1Gx16: param->DRAM_CONFIG = 0x131; break; - case DRAMTYPE_2Gx16: + case DRAMTYPE_2Gx16: param->DRAM_CONFIG = 0x132; break; - case DRAMTYPE_4Gx16: + case DRAMTYPE_4Gx16: param->DRAM_CONFIG = 0x133; - break; + break; }; /* switch size */ switch (param->VRAM_Size) { - default: + default: case VIDEOMEM_SIZE_08M: param->DRAM_CONFIG |= 0x00; break; @@ -2343,22 +2343,22 @@ void GetDDR3Info(PAST2300DRAMParam param) break; case VIDEOMEM_SIZE_64M: param->DRAM_CONFIG |= 0x0c; - break; + break; } - + } void DDR2_Init(PAST2300DRAMParam param) { ULONG data, data2, retry = 0; UCHAR *mmiobase; - + mmiobase = param->pjMMIOVirtualAddress; -DDR2_Init_Start: +DDR2_Init_Start: MOutdwm(mmiobase, 0x1E6E0000, 0xFC600309); MOutdwm(mmiobase, 0x1E6E0064, 0x00000000); - MOutdwm(mmiobase, 0x1E6E0034, 0x00000000); + MOutdwm(mmiobase, 0x1E6E0034, 0x00000000); MOutdwm(mmiobase, 0x1E6E0018, 0x00000100); MOutdwm(mmiobase, 0x1E6E0024, 0x00000000); MOutdwm(mmiobase, 0x1E6E0064, param->REG_MADJ); @@ -2376,7 +2376,7 @@ DDR2_Init_Start: MOutdwm(mmiobase, 0x1E6E0084, 0x00FFFFFF); MOutdwm(mmiobase, 0x1E6E0088, param->REG_DQIDLY); MOutdwm(mmiobase, 0x1E6E0018, 0x4040A130); - MOutdwm(mmiobase, 0x1E6E0018, 0x20402330); + MOutdwm(mmiobase, 0x1E6E0018, 0x20402330); MOutdwm(mmiobase, 0x1E6E0038, 0x00000000); MOutdwm(mmiobase, 0x1E6E0040, 0xFF808000); MOutdwm(mmiobase, 0x1E6E0044, 0x88848466); @@ -2398,7 +2398,7 @@ DDR2_Init_Start: }while(!(data & 0x08000000)); MOutdwm(mmiobase, 0x1E6E0034, 0x00000001); MOutdwm(mmiobase, 0x1E6E000C, 0x00005C04); - usleep(10); + usleep(10); MOutdwm(mmiobase, 0x1E6E000C, 0x00000000); MOutdwm(mmiobase, 0x1E6E0034, 0x00000000); data = MIndwm(mmiobase, 0x1E6E001C); @@ -2431,7 +2431,7 @@ DDR2_Init_Start: MOutdwm(mmiobase, 0x1E6E0034, 0x00000001); MOutdwm(mmiobase, 0x1E6E000C, 0x00005C04); - usleep(10); + usleep(10); MOutdwm(mmiobase, 0x1E6E000C, 0x00000000); MOutdwm(mmiobase, 0x1E6E0034, 0x00000000); data = MIndwm(mmiobase, 0x1E6E001C); @@ -2439,7 +2439,7 @@ DDR2_Init_Start: } data = MIndwm(mmiobase, 0x1E6E0018) | 0xC00; MOutdwm(mmiobase, 0x1E6E0018, data); - + MOutdwm(mmiobase, 0x1E6E0034, 0x00000001); MOutdwm(mmiobase, 0x1E6E000C, 0x00000000); usleep(50); @@ -2499,13 +2499,13 @@ void DDR3_Init(PAST2300DRAMParam param) { ULONG data, data2, retry = 0; UCHAR *mmiobase; - + mmiobase = param->pjMMIOVirtualAddress; DDR3_Init_Start: MOutdwm(mmiobase, 0x1E6E0000, 0xFC600309); MOutdwm(mmiobase, 0x1E6E0064, 0x00000000); - MOutdwm(mmiobase, 0x1E6E0034, 0x00000000); + MOutdwm(mmiobase, 0x1E6E0034, 0x00000000); MOutdwm(mmiobase, 0x1E6E0018, 0x00000100); MOutdwm(mmiobase, 0x1E6E0024, 0x00000000); usleep(10); @@ -2546,7 +2546,7 @@ DDR3_Init_Start: }while(!(data & 0x08000000)); MOutdwm(mmiobase, 0x1E6E0034, 0x00000001); MOutdwm(mmiobase, 0x1E6E000C, 0x00005C04); - usleep(10); + usleep(10); MOutdwm(mmiobase, 0x1E6E000C, 0x00000000); MOutdwm(mmiobase, 0x1E6E0034, 0x00000000); data = MIndwm(mmiobase, 0x1E6E001C); @@ -2579,7 +2579,7 @@ DDR3_Init_Start: MOutdwm(mmiobase, 0x1E6E0034, 0x00000001); MOutdwm(mmiobase, 0x1E6E000C, 0x00005C04); - usleep(10); + usleep(10); MOutdwm(mmiobase, 0x1E6E000C, 0x00000000); MOutdwm(mmiobase, 0x1E6E0034, 0x00000000); data = MIndwm(mmiobase, 0x1E6E001C); @@ -2645,64 +2645,64 @@ void vInitAST2300DRAMReg(ScrnInfoPtr pScrn) ULONG i, ulTemp; UCHAR jReg; - GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg); - + GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg); + if ((jReg & 0x80) == 0) /* VGA only */ { *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000; *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1; - + *(ULONG *) (pAST->MMIOVirtualAddr + 0x12000) = 0x1688A8A8; do { - ; + ; } while (*(volatile ULONG *) (pAST->MMIOVirtualAddr + 0x12000) != 0x01); - + *(ULONG *) (pAST->MMIOVirtualAddr + 0x10000) = 0xFC600309; do { - ; + ; } while (*(volatile ULONG *) (pAST->MMIOVirtualAddr + 0x10000) != 0x01); /* Slow down CPU/AHB CLK in VGA only mode */ ulTemp = *(ULONG *) (pAST->MMIOVirtualAddr + 0x12008); ulTemp |= 0x73; *(ULONG *) (pAST->MMIOVirtualAddr + 0x12008) = ulTemp; - + param.pjMMIOVirtualAddress = pAST->MMIOVirtualAddr; param.DRAM_Type = DDR3; /* DDR3 */ - ulTemp = MIndwm(param.pjMMIOVirtualAddress, 0x1E6E2070); + ulTemp = MIndwm(param.pjMMIOVirtualAddress, 0x1E6E2070); if (ulTemp & 0x01000000) param.DRAM_Type = DDR2; /* DDR2 */ param.DRAM_ChipID = (ULONG) pAST->jDRAMType; param.DRAM_Freq = pAST->ulMCLK; param.VRAM_Size = pAST->ulVRAMSize; - + if (param.DRAM_Type == DDR3) { - GetDDR3Info(¶m); + GetDDR3Info(¶m); DDR3_Init(¶m); } else { GetDDR2Info(¶m); - DDR2_Init(¶m); + DDR2_Init(¶m); } - - ulTemp = MIndwm(param.pjMMIOVirtualAddress, 0x1E6E2040); + + ulTemp = MIndwm(param.pjMMIOVirtualAddress, 0x1E6E2040); MOutdwm(param.pjMMIOVirtualAddress, 0x1E6E2040, ulTemp | 0x40); } /* wait ready */ do { - GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg); + GetIndexRegMask(CRTC_PORT, 0xD0, 0xFF, jReg); } while ((jReg & 0x40) == 0); - -} /* vInitAST2300DRAMReg */ + +} /* vInitAST2300DRAMReg */ void vGetDefaultSettings(ScrnInfoPtr pScrn) { ASTRecPtr pAST = ASTPTR(pScrn); - ULONG ulData; - + ULONG ulData; + if (pAST->jChipType == AST2300) { *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000; @@ -2711,29 +2711,29 @@ void vGetDefaultSettings(ScrnInfoPtr pScrn) switch (ulData & 0x18000000) { case 0x00000000: - pAST->jDRAMType = DRAMTYPE_512Mx16; - break; + pAST->jDRAMType = DRAMTYPE_512Mx16; + break; case 0x08000000: - pAST->jDRAMType = DRAMTYPE_1Gx16; + pAST->jDRAMType = DRAMTYPE_1Gx16; break; case 0x10000000: - pAST->jDRAMType = DRAMTYPE_2Gx16; - break; + pAST->jDRAMType = DRAMTYPE_2Gx16; + break; case 0x18000000: - pAST->jDRAMType = DRAMTYPE_4Gx16; - break; - } - } + pAST->jDRAMType = DRAMTYPE_4Gx16; + break; + } + } else if ((pAST->jChipType == AST2100) || (pAST->jChipType == AST2200)) { - pAST->jDRAMType = DRAMTYPE_512Mx32; + pAST->jDRAMType = DRAMTYPE_512Mx32; } else if ((pAST->jChipType == AST1100) || (pAST->jChipType == AST2150)) { - pAST->jDRAMType = DRAMTYPE_1Gx16; - } - -} /* vGetDefaultSettings */ + pAST->jDRAMType = DRAMTYPE_1Gx16; + } + +} /* vGetDefaultSettings */ /* * Flags: 0: POST init @@ -2750,34 +2750,34 @@ Bool InitVGA(ScrnInfoPtr pScrn, ULONG Flags) /* Enable PCI */ PCI_READ_LONG(pAST->PciInfo, &ulData, 0x04); ulData |= 0x03; - PCI_WRITE_LONG(pAST->PciInfo, ulData, 0x04); + PCI_WRITE_LONG(pAST->PciInfo, ulData, 0x04); /* Enable VGA */ vEnableVGA(pScrn); - + vASTOpenKey(pScrn); vSetDefExtReg(pScrn); if (Flags == 0) vGetDefaultSettings(pScrn); - + if (pAST->jChipType == AST2300) vInitAST2300DRAMReg(pScrn); else - vInitDRAMReg(pScrn); - + vInitDRAMReg(pScrn); + } - return (TRUE); + return (TRUE); } /* Init VGA */ /* Get EDID */ -void +void I2CWriteClock(ASTRecPtr pAST, UCHAR data) { UCHAR ujCRB7, jtemp; ULONG i; - + for (i=0;i<0x10000; i++) { ujCRB7 = ((data & 0x01) ? 0:1); /* low active */ @@ -2785,44 +2785,44 @@ I2CWriteClock(ASTRecPtr pAST, UCHAR data) GetIndexRegMask(CRTC_PORT, 0xB7, 0x01, jtemp); if (ujCRB7 == jtemp) break; } - + } -void +void I2CWriteData(ASTRecPtr pAST, UCHAR data) { UCHAR volatile ujCRB7, jtemp; ULONG i; - + for (i=0;i<0x1000; i++) - { + { ujCRB7 = ((data & 0x01) ? 0:1) << 2; /* low active */ SetIndexRegMask(CRTC_PORT, 0xB7, 0xFB, ujCRB7); GetIndexRegMask(CRTC_PORT, 0xB7, 0x04, jtemp); - if (ujCRB7 == jtemp) break; + if (ujCRB7 == jtemp) break; } - + } -Bool +Bool I2CReadClock(ASTRecPtr pAST) -{ +{ UCHAR volatile ujCRB7; - + GetIndexRegMask(CRTC_PORT, 0xB7, 0x10, ujCRB7); ujCRB7 >>= 4; - + return ((ujCRB7 & 0x01) ? 1:0); } -Bool +Bool I2CReadData(ASTRecPtr pAST) -{ +{ UCHAR volatile ujCRB7; - + GetIndexRegMask(CRTC_PORT, 0xB7, 0x20, ujCRB7); ujCRB7 >>= 5; - + return ((ujCRB7 & 0x01) ? 1:0); } @@ -2833,88 +2833,88 @@ I2CDelay(ASTRecPtr pAST) { ULONG i; UCHAR jtemp; - + for (i=0;i<150;i++) jtemp = GetReg(SEQ_PORT); - + } - -void + +void I2CStart(ASTRecPtr pAST) -{ +{ I2CWriteClock(pAST, 0x00); /* Set Clk Low */ I2CDelay(pAST); I2CWriteData(pAST, 0x01); /* Set Data High */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteClock(pAST, 0x01); /* Set Clk High */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteData(pAST, 0x00); /* Set Data Low */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteClock(pAST, 0x01); /* Set Clk High */ - I2CDelay(pAST); -} + I2CDelay(pAST); +} -void +void I2CStop(ASTRecPtr pAST) { I2CWriteClock(pAST, 0x00); /* Set Clk Low */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteData(pAST, 0x00); /* Set Data Low */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteClock(pAST, 0x01); /* Set Clk High */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteData(pAST, 0x01); /* Set Data High */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteClock(pAST, 0x01); /* Set Clk High */ - I2CDelay(pAST); - + I2CDelay(pAST); + } -Bool +Bool CheckACK(ASTRecPtr pAST) { UCHAR Data; I2CWriteClock(pAST, 0x00); /* Set Clk Low */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteData(pAST, 0x01); /* Set Data High */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteClock(pAST, 0x01); /* Set Clk High */ - I2CDelay(pAST); + I2CDelay(pAST); Data = (UCHAR) I2CReadData(pAST); /* Set Data High */ - - return ((Data & 0x01) ? 0:1); - + + return ((Data & 0x01) ? 0:1); + } -void +void SendACK(ASTRecPtr pAST) { I2CWriteClock(pAST, 0x00); /* Set Clk Low */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteData(pAST, 0x00); /* Set Data low */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteClock(pAST, 0x01); /* Set Clk High */ - I2CDelay(pAST); - + I2CDelay(pAST); + } -void +void SendNACK(ASTRecPtr pAST) { I2CWriteClock(pAST, 0x00); /* Set Clk Low */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteData(pAST, 0x01); /* Set Data high */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteClock(pAST, 0x01); /* Set Clk High */ - I2CDelay(pAST); - + I2CDelay(pAST); + } -void +void SendI2CDataByte(ASTRecPtr pAST, UCHAR data) { UCHAR jData; @@ -2923,143 +2923,143 @@ SendI2CDataByte(ASTRecPtr pAST, UCHAR data) for (i=7;i>=0;i--) { I2CWriteClock(pAST, 0x00); /* Set Clk Low */ - I2CDelay(pAST); - + I2CDelay(pAST); + jData = ((data >> i) & 0x01) ? 1:0; I2CWriteData(pAST, jData); /* Set Data Low */ - I2CDelay(pAST); - + I2CDelay(pAST); + I2CWriteClock(pAST, 0x01); /* Set Clk High */ - I2CDelay(pAST); - } + I2CDelay(pAST); + } } -UCHAR +UCHAR ReceiveI2CDataByte(ASTRecPtr pAST) { - UCHAR jData=0, jTempData; + UCHAR jData=0, jTempData; LONG i, j; for (i=7;i>=0;i--) { I2CWriteClock(pAST, 0x00); /* Set Clk Low */ - I2CDelay(pAST); - + I2CDelay(pAST); + I2CWriteData(pAST, 0x01); /* Set Data High */ - I2CDelay(pAST); - + I2CDelay(pAST); + I2CWriteClock(pAST, 0x01); /* Set Clk High */ - I2CDelay(pAST); - + I2CDelay(pAST); + for (j=0; j<0x1000; j++) - { + { if (I2CReadClock(pAST)) break; - } - + } + jTempData = I2CReadData(pAST); - jData |= ((jTempData & 0x01) << i); + jData |= ((jTempData & 0x01) << i); I2CWriteClock(pAST, 0x0); /* Set Clk Low */ - I2CDelay(pAST); - } - - return ((UCHAR)jData); -} + I2CDelay(pAST); + } + + return ((UCHAR)jData); +} Bool GetVGAEDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer) { - ASTRecPtr pAST; + ASTRecPtr pAST; UCHAR *pjDstEDID; UCHAR jData; ULONG i; - pAST = ASTPTR(pScrn); + pAST = ASTPTR(pScrn); pjDstEDID = (UCHAR *) pEDIDBuffer; - + /* Force to DDC2 */ I2CWriteClock(pAST, 0x01); /* Set Clk High */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteClock(pAST, 0x00); /* Set Clk Low */ - I2CDelay(pAST); + I2CDelay(pAST); I2CWriteClock(pAST, 0x01); /* Set Clk High */ - I2CDelay(pAST); + I2CDelay(pAST); /* Validate SCL */ if (I2CReadClock(pAST) == 0) /* chk SCL failed */ { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[GetVGAEDID] Check SCL Failed \n"); - return (FALSE); - } - + return (FALSE); + } + I2CStart(pAST); - + SendI2CDataByte(pAST, 0xA0); if (!CheckACK(pAST)) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[GetVGAEDID] Check ACK Failed \n"); return (FALSE); - } - + } + SendI2CDataByte(pAST, 0x00); if (!CheckACK(pAST)) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[GetVGAEDID] Check ACK Failed \n"); return (FALSE); - } - + } + I2CStart(pAST); - + SendI2CDataByte(pAST, 0xA1); if (!CheckACK(pAST)) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[GetVGAEDID] Check ACK Failed \n"); return (FALSE); - } - + } + for (i=0; i<127; i++) { jData = ReceiveI2CDataByte(pAST); SendACK(pAST); - - *pjDstEDID++ = jData; + + *pjDstEDID++ = jData; } - + jData = ReceiveI2CDataByte(pAST); SendNACK(pAST); - *pjDstEDID = jData; - + *pjDstEDID = jData; + I2CStop(pAST); - + return (TRUE); - + } /* GetVGAEDID */ Bool bInitAST1180(ScrnInfoPtr pScrn) { - ASTRecPtr pAST; + ASTRecPtr pAST; uint32_t ulData; - pAST = ASTPTR(pScrn); + pAST = ASTPTR(pScrn); /* Enable PCI */ PCI_READ_LONG(pAST->PciInfo, &ulData, 0x04); ulData |= 0x03; - PCI_WRITE_LONG(pAST->PciInfo, ulData, 0x04); - + PCI_WRITE_LONG(pAST->PciInfo, ulData, 0x04); + /* init DRAM if no F/W */ /* TODO */ WriteAST1180SOC(AST1180_MMC_BASE+0x00, 0xFC600309); /* unlock */ WriteAST1180SOC(AST1180_SCU_BASE+0x00, 0x1688a8a8); /* unlock */ usleep(100); - - WriteAST1180SOC(AST1180_MMC_BASE+0x08, 0x000011e3); /* req. */ - + + WriteAST1180SOC(AST1180_MMC_BASE+0x08, 0x000011e3); /* req. */ + /* init SCU */ #if 0 ReadAST1180SOC(AST1180_SCU_BASE+0x08, ulData); /* delay compensation */ - ulData &= 0xFFFFE0FF; + ulData &= 0xFFFFE0FF; ulData |= 0x00000C00; WriteAST1180SOC(AST1180_SCU_BASE+0x08, ulData); #endif @@ -3067,38 +3067,38 @@ Bool bInitAST1180(ScrnInfoPtr pScrn) ReadAST1180SOC(AST1180_SCU_BASE+0x0c, ulData); /* 2d clk */ ulData &= 0xFFFFFFFD; WriteAST1180SOC(AST1180_SCU_BASE+0x0c, ulData); - + return (TRUE); - + } /* bInitAST1180 */ - + void GetAST1180DRAMInfo(ScrnInfoPtr pScrn) { ASTRecPtr pAST = ASTPTR(pScrn); ULONG ulData; - + WriteAST1180SOC(AST1180_MMC_BASE+0x00, 0xFC600309); /* unlock */ ReadAST1180SOC(AST1180_MMC_BASE+0x04, ulData); pAST->ulDRAMBusWidth = 32; if (ulData & 0x40) pAST->ulDRAMBusWidth = 16; - - /* DRAM size */ + + /* DRAM size */ switch (ulData & 0x0C) { case 0x00: pAST->ulDRAMSize = DRAM_SIZE_032M; - break; + break; case 0x04: pAST->ulDRAMSize = DRAM_SIZE_064M; - break; + break; case 0x08: pAST->ulDRAMSize = DRAM_SIZE_128M; - break; - case 0x0c: + break; + case 0x0c: pAST->ulDRAMSize = DRAM_SIZE_256M; - break; - } + break; + } /* Get framebuffer size */ switch (ulData & 0x30) @@ -3108,23 +3108,23 @@ void GetAST1180DRAMInfo(ScrnInfoPtr pScrn) break; case 0x10: pAST->ulVRAMSize = DRAM_SIZE_032M; - break; + break; case 0x20: pAST->ulVRAMSize = DRAM_SIZE_064M; - break; + break; case 0x30: pAST->ulVRAMSize = DRAM_SIZE_128M; - break; - } + break; + } /* VRAM base */ if (pAST->ulVRAMSize >= pAST->ulDRAMSize) - pAST->ulVRAMSize = pAST->ulDRAMSize; + pAST->ulVRAMSize = pAST->ulDRAMSize; pAST->ulVRAMBase = pAST->ulDRAMSize - pAST->ulVRAMSize; - + /* MCLK */ pAST->ulMCLK = 200; - + } /* GetAST1180DRAMInfo */ void vEnableASTVGAMMIO(ScrnInfoPtr pScrn) @@ -3132,7 +3132,7 @@ void vEnableASTVGAMMIO(ScrnInfoPtr pScrn) ASTRecPtr pAST = ASTPTR(pScrn); ULONG ulData; UCHAR jReg; - + if (!xf86IsPrimaryPci(pAST->PciInfo)) { /* Enable PCI */ @@ -3141,14 +3141,14 @@ void vEnableASTVGAMMIO(ScrnInfoPtr pScrn) PCI_WRITE_LONG(pAST->PciInfo, ulData, 0x04); outb(pAST->RelocateIO + 0x43, 0x01); - outb(pAST->RelocateIO + 0x42, 0x01); - } - + outb(pAST->RelocateIO + 0x42, 0x01); + } + jReg = GetReg(VGA_ENABLE_PORT); if (jReg == 0xFF) /* MMIO Access is disabled */ { outw(pAST->RelocateIO + 0x54, 0xa880); - outw(pAST->RelocateIO + 0x54, 0x04a1); + outw(pAST->RelocateIO + 0x54, 0x04a1); } - + } /* vEnableASTVGAMMIO */ |