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

📄 radeon_probe.c

📁 ati driver
💻 C
📖 第 1 页 / 共 2 页
字号:
    { PCI_CHIP_R300_AF, PCI_CHIP_R300_AF, RES_SHARED_VGA },    { PCI_CHIP_R300_AG, PCI_CHIP_R300_AG, RES_SHARED_VGA },    { PCI_CHIP_R300_ND, PCI_CHIP_R300_ND, RES_SHARED_VGA },    { PCI_CHIP_R300_NE, PCI_CHIP_R300_NE, RES_SHARED_VGA },    { PCI_CHIP_R300_NF, PCI_CHIP_R300_NF, RES_SHARED_VGA },    { PCI_CHIP_R300_NG, PCI_CHIP_R300_NG, RES_SHARED_VGA },    { PCI_CHIP_RV350_AP, PCI_CHIP_RV350_AP, RES_SHARED_VGA },    { PCI_CHIP_RV350_AQ, PCI_CHIP_RV350_AQ, RES_SHARED_VGA },    { PCI_CHIP_RV360_AR, PCI_CHIP_RV360_AR, RES_SHARED_VGA },    { PCI_CHIP_RV350_AS, PCI_CHIP_RV350_AS, RES_SHARED_VGA },    { PCI_CHIP_RV350_AT, PCI_CHIP_RV350_AT, RES_SHARED_VGA },    { PCI_CHIP_RV350_AV, PCI_CHIP_RV350_AV, RES_SHARED_VGA },    { PCI_CHIP_RV350_NP, PCI_CHIP_RV350_NP, RES_SHARED_VGA },    { PCI_CHIP_RV350_NQ, PCI_CHIP_RV350_NQ, RES_SHARED_VGA },    { PCI_CHIP_RV350_NR, PCI_CHIP_RV350_NR, RES_SHARED_VGA },    { PCI_CHIP_RV350_NS, PCI_CHIP_RV350_NS, RES_SHARED_VGA },    { PCI_CHIP_RV350_NT, PCI_CHIP_RV350_NT, RES_SHARED_VGA },    { PCI_CHIP_RV350_NV, PCI_CHIP_RV350_NV, RES_SHARED_VGA },    { PCI_CHIP_R350_AH, PCI_CHIP_R350_AH, RES_SHARED_VGA },    { PCI_CHIP_R350_AI, PCI_CHIP_R350_AI, RES_SHARED_VGA },    { PCI_CHIP_R350_AJ, PCI_CHIP_R350_AJ, RES_SHARED_VGA },    { PCI_CHIP_R350_AK, PCI_CHIP_R350_AK, RES_SHARED_VGA },    { PCI_CHIP_R350_NH, PCI_CHIP_R350_NH, RES_SHARED_VGA },    { PCI_CHIP_R350_NI, PCI_CHIP_R350_NI, RES_SHARED_VGA },    { PCI_CHIP_R350_NK, PCI_CHIP_R350_NK, RES_SHARED_VGA },    { PCI_CHIP_R360_NJ, PCI_CHIP_R360_NJ, RES_SHARED_VGA },    { -1,                 -1,                 RES_UNDEFINED }};int gRADEONEntityIndex = -1;/* Return the options for supported chipset 'n'; NULL otherwise */const OptionInfoRec *RADEONAvailableOptions(int chipid, int busid){    int  i;    /*     * Return options defined in the radeon submodule which will have been     * loaded by this point.     */    if ((chipid >> 16) == PCI_VENDOR_ATI)	chipid -= PCI_VENDOR_ATI << 16;    for (i = 0; RADEONPciChipsets[i].PCIid > 0; i++) {	if (chipid == RADEONPciChipsets[i].PCIid)	    return RADEONOptions;    }    return NULL;}/* Return the string name for supported chipset 'n'; NULL otherwise. */voidRADEONIdentify(int flags){    xf86PrintChipsets(RADEON_NAME,		      "Driver for ATI Radeon chipsets",		      RADEONChipsets);}/* Return TRUE if chipset is present; FALSE otherwise. */BoolRADEONProbe(DriverPtr drv, int flags){    int      numUsed;    int      numDevSections, nATIGDev, nRadeonGDev;    int     *usedChips;    GDevPtr *devSections, *ATIGDevs, *RadeonGDevs;    Bool     foundScreen = FALSE;    int      i;    if (!xf86GetPciVideoInfo()) return FALSE;    /* Collect unclaimed device sections for both driver names */    nATIGDev    = xf86MatchDevice(ATI_NAME, &ATIGDevs);    nRadeonGDev = xf86MatchDevice(RADEON_NAME, &RadeonGDevs);    if (!(numDevSections = nATIGDev + nRadeonGDev)) return FALSE;    if (!ATIGDevs) {	if (!(devSections = RadeonGDevs)) numDevSections = 1;	else                              numDevSections = nRadeonGDev;    } if (!RadeonGDevs) {	devSections    = ATIGDevs;	numDevSections = nATIGDev;    } else {	/* Combine into one list */	devSections = xnfalloc((numDevSections + 1) * sizeof(GDevPtr));	(void)memcpy(devSections,		     ATIGDevs, nATIGDev * sizeof(GDevPtr));	(void)memcpy(devSections + nATIGDev,		     RadeonGDevs, nRadeonGDev * sizeof(GDevPtr));	devSections[numDevSections] = NULL;	xfree(ATIGDevs);	xfree(RadeonGDevs);    }    numUsed = xf86MatchPciInstances(RADEON_NAME,				    PCI_VENDOR_ATI,				    RADEONChipsets,				    RADEONPciChipsets,				    devSections,				    numDevSections,				    drv,				    &usedChips);    if (numUsed <= 0) return FALSE;    if (flags & PROBE_DETECT) {	foundScreen = TRUE;    } else {	for (i = 0; i < numUsed; i++) {	    ScrnInfoPtr    pScrn = NULL;	    EntityInfoPtr  pEnt;	    pEnt = xf86GetEntityInfo(usedChips[i]);	    if ((pScrn = xf86ConfigPciEntity(pScrn, 0, usedChips[i],					     RADEONPciChipsets, 0, 0, 0,					     0, 0))) {#ifdef XFree86LOADER		if (!xf86LoadSubModule(pScrn, "radeon")) {		    xf86Msg(X_ERROR, RADEON_NAME			    ":  Failed to load \"radeon\" module.\n");		    xf86DeleteScreen(pScrn->scrnIndex, 0);		    continue;		}		xf86LoaderReqSymLists(RADEONSymbols, NULL);#endif		pScrn->driverVersion = RADEON_VERSION_CURRENT;		pScrn->driverName    = RADEON_DRIVER_NAME;		pScrn->name          = RADEON_NAME;		pScrn->Probe         = RADEONProbe;		pScrn->PreInit       = RADEONPreInit;		pScrn->ScreenInit    = RADEONScreenInit;		pScrn->SwitchMode    = RADEONSwitchMode;#ifdef X_XF86MiscPassMessage		pScrn->HandleMessage = RADEONHandleMessage;#endif		pScrn->AdjustFrame   = RADEONAdjustFrame;		pScrn->EnterVT       = RADEONEnterVT;		pScrn->LeaveVT       = RADEONLeaveVT;		pScrn->FreeScreen    = RADEONFreeScreen;		pScrn->ValidMode     = RADEONValidMode;		foundScreen          = TRUE;	    }	    pEnt = xf86GetEntityInfo(usedChips[i]);            /* create a RADEONEntity for all chips, even with                old single head Radeon, need to use pRADEONEnt                for new monitor detection routines            */               {		DevUnion   *pPriv;		RADEONEntPtr pRADEONEnt;		xf86SetEntitySharable(usedChips[i]);		if (gRADEONEntityIndex == -1)		    gRADEONEntityIndex = xf86AllocateEntityPrivateIndex();		pPriv = xf86GetEntityPrivate(pEnt->index,					     gRADEONEntityIndex);		if (!pPriv->ptr) {		    int j;		    int instance = xf86GetNumEntityInstances(pEnt->index);		    for (j = 0; j < instance; j++)			xf86SetEntityInstanceForScreen(pScrn, pEnt->index, j);		    pPriv->ptr = xnfcalloc(sizeof(RADEONEntRec), 1);		    pRADEONEnt = pPriv->ptr;		    pRADEONEnt->HasSecondary = FALSE;		    pRADEONEnt->IsSecondaryRestored = FALSE;		} else {		    pRADEONEnt = pPriv->ptr;		    pRADEONEnt->HasSecondary = TRUE;		}	    }	    xfree(pEnt);	}    }    xfree(usedChips);    xfree(devSections);    return foundScreen;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -