⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atiprint.c

📁 x.org上有关ati系列显卡最新驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
                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 + -