📄 atiprint.c
字号:
GENS1(ColourIOBase)); } else { if (pATI->Chip == ATI_CHIP_264LT) { lcd_gen_ctrl = inr(LCD_GEN_CTRL); outr(LCD_GEN_CTRL, lcd_gen_ctrl & ~SHADOW_RW_EN); ATIPrintIndexedRegisters(CRTX(MonochromeIOBase), 0, 64, "Non-shadow monochrome CRT controller", 0); outr(LCD_GEN_CTRL, lcd_gen_ctrl | SHADOW_RW_EN); ATIPrintIndexedRegisters(CRTX(MonochromeIOBase), 0, 64, "Shadow monochrome CRT controller", 0); outr(LCD_GEN_CTRL, lcd_gen_ctrl); } else if ((pATI->Chip == ATI_CHIP_264LTPRO) || (pATI->Chip == ATI_CHIP_264XL) || (pATI->Chip == ATI_CHIP_MOBILITY)) { lcd_index = inr(LCD_INDEX); lcd_gen_ctrl = ATIMach64GetLCDReg(LCD_GEN_CNTL); ATIMach64PutLCDReg(LCD_GEN_CNTL, lcd_gen_ctrl & ~(CRTC_RW_SELECT | SHADOW_RW_EN)); ATIPrintIndexedRegisters(CRTX(MonochromeIOBase), 0, 64, "Non-shadow monochrome CRT controller", 0); ATIMach64PutLCDReg(LCD_GEN_CNTL, (lcd_gen_ctrl & ~CRTC_RW_SELECT) | SHADOW_RW_EN); ATIPrintIndexedRegisters(CRTX(MonochromeIOBase), 0, 64, "Shadow monochrome CRT controller", 0); ATIMach64PutLCDReg(LCD_GEN_CNTL, lcd_gen_ctrl); outr(LCD_INDEX, lcd_index); } else { ATIPrintIndexedRegisters(CRTX(MonochromeIOBase), 0, 64, "Monochrome CRT controller", 0); } ATIPrintIndexedRegisters(ATTRX, 0, 32, "Attribute controller", GENS1(MonochromeIOBase)); } ATIPrintIndexedRegisters(GRAX, 0, 16, "Graphics controller", 0); ATIPrintIndexedRegisters(SEQX, 0, 8, "Sequencer", 0); if (pATI->CPIO_VGAWonder) ATIPrintIndexedRegisters(pATI->CPIO_VGAWonder, xf86ServerIsOnlyProbing() ? 0x80U : pATI->VGAOffset, 0xC0U, "ATI extended VGA", 0); } if (pATI->ChipHasSUBSYS_CNTL) { xf86ErrorFVerb(4, "\n 8514/A register values:"); for (Index = 0x02E8U; Index <= 0x0FEE8; Index += 0x0400U) { if (!((Index - 0x02E8U) & 0x0C00U)) xf86ErrorFVerb(4, "\n 0x%04X: ", Index); xf86ErrorFVerb(4, " %04X", inw(Index)); } if (pATI->Adapter >= ATI_ADAPTER_MACH8) { xf86ErrorFVerb(4, "\n\n Mach8/Mach32 register values:"); for (Index = 0x02EEU; Index <= 0x0FEEE; Index += 0x0400U) { if (!((Index - 0x02EEU) & 0x0C00U)) xf86ErrorFVerb(4, "\n 0x%04X: ", Index); xf86ErrorFVerb(4, " %04X", inw(Index)); } } xf86ErrorFVerb(4, "\n"); } else#endif /* AVOID_CPIO */ if (pATI->Chip == ATI_CHIP_264LT) { lcd_gen_ctrl = inr(LCD_GEN_CTRL); outr(LCD_GEN_CTRL, lcd_gen_ctrl & ~SHADOW_RW_EN); ATIMach64PrintRegisters(pATI, &crtc, "non-shadow"); outr(LCD_GEN_CTRL, lcd_gen_ctrl | SHADOW_RW_EN); ATIMach64PrintRegisters(pATI, &crtc, "shadow"); outr(LCD_GEN_CTRL, lcd_gen_ctrl); ATIMach64PrintPLLRegisters(pATI); } else if ((pATI->Chip == ATI_CHIP_264LTPRO) || (pATI->Chip == ATI_CHIP_264XL) || (pATI->Chip == ATI_CHIP_MOBILITY)) { lcd_index = inr(LCD_INDEX); lcd_gen_ctrl = ATIMach64GetLCDReg(LCD_GEN_CNTL); ATIMach64PutLCDReg(LCD_GEN_CNTL, lcd_gen_ctrl & ~(CRTC_RW_SELECT | SHADOW_RW_EN)); ATIMach64PrintRegisters(pATI, &crtc, "non-shadow"); ATIMach64PutLCDReg(LCD_GEN_CNTL, (lcd_gen_ctrl & ~CRTC_RW_SELECT) | SHADOW_RW_EN); ATIMach64PrintRegisters(pATI, &crtc, "shadow"); if (pATI->Chip != ATI_CHIP_264XL) { ATIMach64PutLCDReg(LCD_GEN_CNTL, lcd_gen_ctrl | CRTC_RW_SELECT); ATIMach64PrintRegisters(pATI, &crtc, "secondary"); } ATIMach64PutLCDReg(LCD_GEN_CNTL, lcd_gen_ctrl); ATIMach64PrintPLLRegisters(pATI); xf86ErrorFVerb(4, "\n LCD register values:"); for (Index = 0; Index < 64; Index++) { if (!(Index & 3)) xf86ErrorFVerb(4, "\n 0x%02X: ", Index); xf86ErrorFVerb(4, " %08X", ATIMach64GetLCDReg(Index)); } outr(LCD_INDEX, lcd_index); tv_out_index = inr(TV_OUT_INDEX); xf86ErrorFVerb(4, "\n\n TV_OUT register values:"); for (Index = 0; Index < 256; Index++) { if (!(Index & 3)) xf86ErrorFVerb(4, "\n 0x%02X: ", Index); xf86ErrorFVerb(4, " %08X", ATIMach64GetTVReg(Index)); } outr(TV_OUT_INDEX, tv_out_index); xf86ErrorFVerb(4, "\n"); } else#ifndef AVOID_CPIO if (pATI->Chip >= ATI_CHIP_88800GXC)#endif /* AVOID_CPIO */ {#ifdef AVOID_CPIO ATIMach64PrintRegisters(pATI, &crtc, "MMIO");#else /* AVOID_CPIO */ ATIMach64PrintRegisters(pATI, &crtc, (pATI->CPIODecoding == SPARSE_IO) ? "sparse" : "block");#endif /* AVOID_CPIO */ if (pATI->Chip >= ATI_CHIP_264CT) ATIMach64PrintPLLRegisters(pATI); if (pATI->DAC == ATI_DAC_IBMRGB514) ATIRGB514PrintRegisters(pATI); }#ifdef AVOID_CPIO dac_read = in8(M64_DAC_READ); DACDelay; dac_write = in8(M64_DAC_WRITE); DACDelay; dac_mask = in8(M64_DAC_MASK); DACDelay; xf86ErrorFVerb(4, "\n" " DAC read index: 0x%02X\n" " DAC write index: 0x%02X\n" " DAC mask: 0x%02X\n\n" " DAC colour lookup table:", dac_read, dac_write, dac_mask); out8(M64_DAC_MASK, 0xFFU); DACDelay; out8(M64_DAC_READ, 0x00U); DACDelay; for (Index = 0; Index < 256; Index++) { if (!(Index & 3)) xf86ErrorFVerb(4, "\n 0x%02X:", Index); xf86ErrorFVerb(4, " %02X", in8(M64_DAC_DATA)); DACDelay; xf86ErrorFVerb(4, " %02X", in8(M64_DAC_DATA)); DACDelay; xf86ErrorFVerb(4, " %02X", in8(M64_DAC_DATA)); DACDelay; } out8(M64_DAC_MASK, dac_mask); DACDelay; out8(M64_DAC_READ, dac_read); DACDelay;#else /* AVOID_CPIO */ ATISetDACIOPorts(pATI, crtc); /* Temporarily turn off CLKDIV2 while reading DAC's LUT */ if (pATI->Adapter == ATI_ADAPTER_NONISA) { seq1 = GetReg(SEQX, 0x01U); if (seq1 & 0x08U) PutReg(SEQX, 0x01U, seq1 & ~0x08U); } dac_read = inb(pATI->CPIO_DAC_READ); DACDelay; dac_write = inb(pATI->CPIO_DAC_WRITE); DACDelay; dac_mask = inb(pATI->CPIO_DAC_MASK); DACDelay; xf86ErrorFVerb(4, "\n" " DAC read index: 0x%02X\n" " DAC write index: 0x%02X\n" " DAC mask: 0x%02X\n\n" " DAC colour lookup table:", dac_read, dac_write, dac_mask); outb(pATI->CPIO_DAC_MASK, 0xFFU); DACDelay; outb(pATI->CPIO_DAC_READ, 0x00U); DACDelay; for (Index = 0; Index < 256; Index++) { if (!(Index & 3)) xf86ErrorFVerb(4, "\n 0x%02X:", Index); xf86ErrorFVerb(4, " %02X", inb(pATI->CPIO_DAC_DATA)); DACDelay; xf86ErrorFVerb(4, " %02X", inb(pATI->CPIO_DAC_DATA)); DACDelay; xf86ErrorFVerb(4, " %02X", inb(pATI->CPIO_DAC_DATA)); DACDelay; } outb(pATI->CPIO_DAC_MASK, dac_mask); DACDelay; outb(pATI->CPIO_DAC_READ, dac_read); DACDelay; if ((pATI->Adapter == ATI_ADAPTER_NONISA) && (seq1 & 0x08U)) PutReg(SEQX, 0x01U, seq1);#endif /* AVOID_CPIO */ if ((pVideo = pATI->PCIInfo)) { pPCI = pVideo->thisCard; xf86ErrorFVerb(4, "\n\n PCI configuration register values:"); for (Index = 0; Index < 256; Index+= 4) { if (!(Index & 15)) xf86ErrorFVerb(4, "\n 0x%02X: ", Index); xf86ErrorFVerb(4, " 0x%08lX", (unsigned long)pciReadLong(pPCI->tag, Index)); } } xf86ErrorFVerb(4, "\n");#ifndef AVOID_CPIO if (pATI->pBank) xf86ErrorFVerb(4, "\n Banked aperture at 0x%0lX.", (unsigned long)pATI->pBank); else xf86ErrorFVerb(4, "\n No banked aperture."); if (pATI->pMemory == pATI->pBank) { xf86ErrorFVerb(4, "\n No linear aperture.\n"); } else#else /* AVOID_CPIO */ if (pATI->pMemory)#endif /* AVOID_CPIO */ { xf86ErrorFVerb(4, "\n Linear aperture at %p.\n", pATI->pMemory); } if (pATI->pBlock[0]) { xf86ErrorFVerb(4, " Block 0 aperture at %p.\n", pATI->pBlock[0]); if (inr(CONFIG_CHIP_ID) == pATI->config_chip_id) xf86ErrorFVerb(4, " MMIO registers are correctly mapped.\n"); else xf86ErrorFVerb(4, " MMIO mapping is in error!\n"); if (pATI->pBlock[1]) xf86ErrorFVerb(4, " Block 1 aperture at %p.\n", pATI->pBlock[1]); } else { xf86ErrorFVerb(4, " No MMIO aperture.\n"); } if (pATI->pCursorImage) xf86ErrorFVerb(4, " Hardware cursor image aperture at %p.\n", pATI->pCursorImage); else xf86ErrorFVerb(4, " No hardware cursor image aperture.\n"); xf86ErrorFVerb(4, "\n");}/* * A table to associate mode attributes with character strings. */static const SymTabRec ModeAttributeNames[] ={ {V_PHSYNC, "+hsync"}, {V_NHSYNC, "-hsync"}, {V_PVSYNC, "+vsync"}, {V_NVSYNC, "-vsync"}, {V_PCSYNC, "+csync"}, {V_NCSYNC, "-csync"}, {V_INTERLACE, "interlace"}, {V_DBLSCAN, "doublescan"}, {V_CSYNC, "composite"}, {V_DBLCLK, "dblclk"}, {V_CLKDIV2, "clkdiv2"}, {0, NULL}};/* * ATIPrintMode -- * * This function displays a mode's timing information. */voidATIPrintMode( DisplayModePtr pMode){ const SymTabRec *pSymbol = ModeAttributeNames; int flags = pMode->Flags; double mClock, hSync, vRefresh; mClock = (double)pMode->SynthClock; if (pMode->HSync > 0.0) hSync = pMode->HSync; else hSync = mClock / pMode->HTotal; if (pMode->VRefresh > 0.0) { vRefresh = pMode->VRefresh; } else { vRefresh = (hSync * 1000.0) / pMode->VTotal; if (flags & V_INTERLACE) vRefresh *= 2.0; if (flags & V_DBLSCAN) vRefresh /= 2.0; if (pMode->VScan > 1) vRefresh /= pMode->VScan; } xf86ErrorFVerb(4, " Dot clock: %7.3f MHz\n", mClock / 1000.0); xf86ErrorFVerb(4, " Horizontal sync: %7.3f kHz\n", hSync); xf86ErrorFVerb(4, " Vertical refresh: %7.3f Hz (%s)\n", vRefresh, (flags & V_INTERLACE) ? "I" : "NI"); if ((pMode->ClockIndex >= 0) && (pMode->ClockIndex < MAXCLOCKS)) xf86ErrorFVerb(4, " Clock index: %d\n", pMode->ClockIndex); xf86ErrorFVerb(4, " Horizontal timings: %4d %4d %4d %4d\n" " Vertical timings: %4d %4d %4d %4d\n", pMode->HDisplay, pMode->HSyncStart, pMode->HSyncEnd, pMode->HTotal, pMode->VDisplay, pMode->VSyncStart, pMode->VSyncEnd, pMode->VTotal); if (flags & V_HSKEW) { flags &= ~V_HSKEW; xf86ErrorFVerb(4, " Horizontal skew: %4d\n", pMode->HSkew); } if (pMode->VScan >= 1) xf86ErrorFVerb(4, " Vertical scan: %4d\n", pMode->VScan); xf86ErrorFVerb(4, " Flags: "); for (; pSymbol->token; pSymbol++) { if (flags & pSymbol->token) { xf86ErrorFVerb(4, " %s", pSymbol->name); flags &= ~pSymbol->token; if (!flags) break; } } xf86ErrorFVerb(4, "\n");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -