[PATCH] xserver: remove all of RAC and access code
Tiago Vignatti
tiago.vignatti at nokia.com
Thu Jul 23 04:41:35 PDT 2009
Cool! The patch is fine for me. Worth to note the monkey work that we will
have to do on driver's side. For instance, attached is the smi modification
that I cooked.
I didn't tested the remaining entity stuff to see if it's somehow broken
though. Well I'd say to just make this upstream and then we fix the remaining
:)
Signed-off-by: Tiago Vignatti <tiago.vignatti at nokia.com>
On Thu, Jul 23, 2009 at 04:32:02AM +0200, Dave Airlie wrote:
> this is a major API + ABI break, we'll be adding back vga arb support after
> this hopefully.
> ---
> hw/xfree86/common/Makefile.am | 9 +-
> hw/xfree86/common/xf86.h | 20 +-
> hw/xfree86/common/xf86Bus.c | 1816 +---------------------------
> hw/xfree86/common/xf86Bus.h | 41 +-
> hw/xfree86/common/xf86Configure.c | 2 -
> hw/xfree86/common/xf86DGA.c | 5 -
> hw/xfree86/common/xf86Events.c | 3 -
> hw/xfree86/common/xf86Helper.c | 37 +-
> hw/xfree86/common/xf86Init.c | 7 -
> hw/xfree86/common/xf86PM.c | 4 +-
> hw/xfree86/common/xf86Priv.h | 3 -
> hw/xfree86/common/xf86RAC.c | 1171 ------------------
> hw/xfree86/common/xf86RAC.h | 17 -
> hw/xfree86/common/xf86Resources.h | 137 ---
> hw/xfree86/common/xf86fbBus.c | 8 -
> hw/xfree86/common/xf86noBus.c | 8 -
> hw/xfree86/common/xf86pciBus.c | 425 +-------
> hw/xfree86/common/xf86pciBus.h | 4 -
> hw/xfree86/common/xf86str.h | 150 ---
> hw/xfree86/loader/sdksyms.sh | 2 -
> hw/xfree86/os-support/bsd/Makefile.am | 3 -
> hw/xfree86/os-support/bus/linuxPci.c | 55 -
> hw/xfree86/os-support/hurd/Makefile.am | 1 -
> hw/xfree86/os-support/linux/Makefile.am | 1 -
> hw/xfree86/os-support/shared/stdResource.c | 110 --
> hw/xfree86/os-support/solaris/Makefile.am | 1 -
> hw/xfree86/os-support/xf86_OSproc.h | 9 -
> 27 files changed, 25 insertions(+), 4024 deletions(-)
> delete mode 100644 hw/xfree86/common/xf86RAC.c
> delete mode 100644 hw/xfree86/common/xf86RAC.h
> delete mode 100644 hw/xfree86/common/xf86Resources.h
> delete mode 100644 hw/xfree86/os-support/shared/stdResource.c
>
> diff --git a/hw/xfree86/common/Makefile.am b/hw/xfree86/common/Makefile.am
> index fbd052c..f3e201b 100644
> --- a/hw/xfree86/common/Makefile.am
> +++ b/hw/xfree86/common/Makefile.am
> @@ -37,20 +37,20 @@ libcommon_la_SOURCES = xf86Configure.c xf86ShowOpts.c xf86Bus.c xf86Config.c \
> xf86Events.c xf86Globals.c xf86AutoConfig.c \
> xf86Option.c xf86Init.c \
> xf86VidMode.c xf86fbman.c xf86cmap.c \
> - xf86Helper.c xf86PM.c xf86RAC.c xf86Xinput.c xisb.c \
> + xf86Helper.c xf86PM.c xf86Xinput.c xisb.c \
> xf86Mode.c xorgHelper.c \
> $(XVSOURCES) $(BUSSOURCES) $(RANDRSOURCES)
> nodist_libcommon_la_SOURCES = xf86DefModeSet.c xf86Build.h
>
> INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
> - -I$(srcdir)/../loader -I$(srcdir)/../rac -I$(srcdir)/../parser \
> + -I$(srcdir)/../loader -I$(srcdir)/../parser \
> -I$(srcdir)/../vbe -I$(srcdir)/../int10 \
> -I$(srcdir)/../vgahw -I$(srcdir)/../dixmods/extmod \
> -I$(srcdir)/../modes -I$(srcdir)/../ramdac
>
> sdk_HEADERS = compiler.h fourcc.h xf86.h xf86Module.h xf86Opt.h \
> - xf86PciInfo.h xf86Priv.h xf86Privstr.h xf86Resources.h \
> - xf86cmap.h xf86fbman.h xf86str.h xf86RAC.h xf86Xinput.h xisb.h \
> + xf86PciInfo.h xf86Priv.h xf86Privstr.h \
> + xf86cmap.h xf86fbman.h xf86str.h xf86Xinput.h xisb.h \
> $(XVSDKINCS) $(XF86VMODE_SDK) xorgVersion.h \
> xf86sbusBus.h
>
> @@ -71,7 +71,6 @@ EXTRA_DIST = \
> xf86PciInfo.h \
> xf86Priv.h \
> xf86Privstr.h \
> - xf86Resources.h \
> xf86Xinput.h \
> xf86cmap.h \
> xf86fbman.h \
> diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h
> index f863840..edeadf8 100644
> --- a/hw/xfree86/common/xf86.h
> +++ b/hw/xfree86/common/xf86.h
> @@ -102,7 +102,6 @@ extern _X_EXPORT Bool xf86ParsePciBusString(const char *busID, int *bus, int *de
> int *func);
> extern _X_EXPORT Bool xf86ComparePciBusString(const char *busID, int bus, int device, int func);
> extern _X_EXPORT void xf86FormatPciBusNumber(int busnum, char *buffer);
> -extern _X_EXPORT resPtr xf86AddRangesToList(resPtr list, resRange *pRange, int entityIndex);
> extern _X_EXPORT int xf86GetFbInfoForScreen(int scrnIndex);
> extern _X_EXPORT int xf86ClaimFbSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
> extern _X_EXPORT int xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
> @@ -110,9 +109,6 @@ extern _X_EXPORT void xf86EnableAccess(ScrnInfoPtr pScrn);
> extern _X_EXPORT void xf86SetCurrentAccess(Bool Enable, ScrnInfoPtr pScrn);
> extern _X_EXPORT Bool xf86IsPrimaryPci(struct pci_device * pPci);
> /* new RAC */
> -extern _X_EXPORT resPtr xf86AddResToList(resPtr rlist, resRange *Range, int entityIndex);
> -extern _X_EXPORT void xf86FreeResList(resPtr rlist);
> -extern _X_EXPORT void xf86ClaimFixedResources(resList list, int entityIndex);
> extern _X_EXPORT Bool xf86DriverHasEntities(DriverPtr drvp);
> extern _X_EXPORT void xf86AddEntityToScreen(ScrnInfoPtr pScrn, int entityIndex);
> extern _X_EXPORT void xf86SetEntityInstanceForScreen(ScrnInfoPtr pScrn, int entityIndex,
> @@ -124,18 +120,10 @@ extern _X_EXPORT EntityInfoPtr xf86GetEntityInfo(int entityIndex);
> extern _X_EXPORT struct pci_device * xf86GetPciInfoForEntity(int entityIndex);
> extern _X_EXPORT Bool xf86SetEntityFuncs(int entityIndex, EntityProc init,
> EntityProc enter, EntityProc leave, pointer);
> -extern _X_EXPORT void xf86DeallocateResourcesForEntity(int entityIndex, unsigned long type);
> -extern _X_EXPORT resPtr xf86RegisterResources(int entityIndex, resList list,
> - unsigned long Access);
> extern _X_EXPORT Bool xf86CheckPciMemBase(struct pci_device * pPci, memType base);
> -extern _X_EXPORT void xf86SetAccessFuncs(EntityInfoPtr pEnt, xf86SetAccessFuncPtr funcs,
> - xf86SetAccessFuncPtr oldFuncs);
> extern _X_EXPORT Bool xf86IsEntityPrimary(int entityIndex);
> -extern _X_EXPORT resPtr xf86SetOperatingState(resList list, int entityIndex, int mask);
> extern _X_EXPORT void xf86EnterServerState(xf86State state);
> extern _X_EXPORT ScrnInfoPtr xf86FindScreenForEntity(int entityIndex);
> -extern _X_EXPORT Bool xf86NoSharedResources(int screenIndex, resType res);
> -extern _X_EXPORT resPtr xf86FindIntersectOfLists(resPtr l1, resPtr l2);
> extern _X_EXPORT void xf86RegisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func, pointer arg);
> extern _X_EXPORT Bool xf86DeregisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func);
>
> @@ -285,27 +273,29 @@ extern _X_EXPORT pointer xf86FindXvOptions(int scrnIndex, int adapt_index, char
> extern _X_EXPORT void xf86GetOS(const char **name, int *major, int *minor, int *teeny);
> extern _X_EXPORT ScrnInfoPtr xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag,
> int entityIndex,PciChipsets *p_chip,
> - resList res, EntityProc init,
> + EntityProc init,
> EntityProc enter, EntityProc leave,
> pointer private);
> extern _X_EXPORT ScrnInfoPtr xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag,
> int entityIndex, EntityProc init,
> EntityProc enter, EntityProc leave,
> pointer private);
> +
> /* Obsolete! don't use */
> extern _X_EXPORT Bool xf86ConfigActivePciEntity(ScrnInfoPtr pScrn,
> int entityIndex,PciChipsets *p_chip,
> - resList res, EntityProc init,
> + EntityProc init,
> EntityProc enter, EntityProc leave,
> pointer private);
> /* Obsolete! don't use */
> extern _X_EXPORT void xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
> - resList res, EntityProc init,
> + EntityProc init,
> EntityProc enter, EntityProc leave,
> pointer private);
> extern _X_EXPORT void xf86ConfigFbEntityInactive(EntityInfoPtr pEnt, EntityProc init,
> EntityProc enter, EntityProc leave,
> pointer private);
> +
> extern _X_EXPORT Bool xf86IsScreenPrimary(int scrnIndex);
> extern _X_EXPORT int xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type,
> int format, unsigned long len,
> diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
> index 0d732d0..7638ebe 100644
> --- a/hw/xfree86/common/xf86Bus.c
> +++ b/hw/xfree86/common/xf86Bus.c
> @@ -40,7 +40,6 @@
> #include "os.h"
> #include "xf86.h"
> #include "xf86Priv.h"
> -#include "xf86Resources.h"
>
> /* Bus-specific headers */
>
> @@ -50,7 +49,6 @@
> #define NEED_OS_RAC_PROTOS
> #include "xf86_OSproc.h"
>
> -#include "xf86RAC.h"
> #include "Pci.h"
>
> /* Entity data */
> @@ -62,31 +60,10 @@ BusAccPtr xf86BusAccInfo = NULL;
> static void
> noopEnableDisable(void *arg) { }
>
> -xf86AccessRec AccessNULL = { noopEnableDisable, noopEnableDisable, NULL };
> -
> -xf86CurrentAccessRec xf86CurrentAccess = {NULL,NULL};
> -
> BusRec primaryBus = { BUS_NONE, { 0 } };
>
> static Bool xf86ResAccessEnter = FALSE;
>
> -/* resource lists */
> -static resPtr Acc = NULL;
> -
> -/* predefined special resources */
> -resRange resVgaExclusive[] = {_VGA_EXCLUSIVE, _END};
> -resRange resVgaShared[] = {_VGA_SHARED, _END};
> -resRange resVgaMemShared[] = {_VGA_SHARED_MEM,_END};
> -resRange resVgaIoShared[] = {_VGA_SHARED_IO,_END};
> -resRange resVgaUnusedExclusive[] = {_VGA_EXCLUSIVE_UNUSED, _END};
> -resRange resVgaUnusedShared[] = {_VGA_SHARED_UNUSED, _END};
> -resRange resVgaSparseExclusive[] = {_VGA_EXCLUSIVE_SPARSE, _END};
> -resRange resVgaSparseShared[] = {_VGA_SHARED_SPARSE, _END};
> -resRange res8514Exclusive[] = {_8514_EXCLUSIVE, _END};
> -resRange res8514Shared[] = {_8514_SHARED, _END};
> -
> -/* Flag: do we need RAC ? */
> -static Bool needRAC = FALSE;
> static Bool doFramebufferMode = FALSE;
>
> /* state change notification callback list */
> @@ -151,17 +128,10 @@ void
> xf86EntityInit(void)
> {
> int i;
> - xf86AccessPtr pacc;
>
> for (i = 0; i < xf86NumEntities; i++)
> if (xf86Entities[i]->entityInit) {
> - if (xf86Entities[i]->access->busAcc)
> - ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
> - (xf86Entities[i]->access->busAcc);
> - pacc = xf86Entities[i]->access->fallback;
> - pacc->AccessEnable(pacc->arg);
> xf86Entities[i]->entityInit(i,xf86Entities[i]->private);
> - pacc->AccessDisable(pacc->arg);
> }
> }
>
> @@ -181,17 +151,10 @@ static void
> EntityEnter(void)
> {
> int i;
> - xf86AccessPtr pacc;
>
> for (i = 0; i < xf86NumEntities; i++)
> if (xf86Entities[i]->entityEnter) {
> - if (xf86Entities[i]->access->busAcc)
> - ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
> - (xf86Entities[i]->access->busAcc);
> - pacc = xf86Entities[i]->access->fallback;
> - pacc->AccessEnable(pacc->arg);
> xf86Entities[i]->entityEnter(i,xf86Entities[i]->private);
> - pacc->AccessDisable(pacc->arg);
> }
> }
>
> @@ -199,17 +162,10 @@ static void
> EntityLeave(void)
> {
> int i;
> - xf86AccessPtr pacc;
>
> for (i = 0; i < xf86NumEntities; i++)
> if (xf86Entities[i]->entityLeave) {
> - if (xf86Entities[i]->access->busAcc)
> - ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
> - (xf86Entities[i]->access->busAcc);
> - pacc = xf86Entities[i]->access->fallback;
> - pacc->AccessEnable(pacc->arg);
> xf86Entities[i]->entityLeave(i,xf86Entities[i]->private);
> - pacc->AccessDisable(pacc->arg);
> }
> }
>
> @@ -269,8 +225,6 @@ xf86AddEntityToScreen(ScrnInfoPtr pScrn, int entityIndex)
> pScrn->entityList = xnfrealloc(pScrn->entityList,
> pScrn->numEntities * sizeof(int));
> pScrn->entityList[pScrn->numEntities - 1] = entityIndex;
> - xf86Entities[entityIndex]->access->next = pScrn->access;
> - pScrn->access = xf86Entities[entityIndex]->access;
> xf86Entities[entityIndex]->inUse = TRUE;
> pScrn->entityInstanceList = xnfrealloc(pScrn->entityInstanceList,
> pScrn->numEntities * sizeof(int));
> @@ -320,26 +274,15 @@ void
> xf86RemoveEntityFromScreen(ScrnInfoPtr pScrn, int entityIndex)
> {
> int i;
> - EntityAccessPtr *ptr = (EntityAccessPtr *)&pScrn->access;
> - EntityAccessPtr peacc;
>
> for (i = 0; i < pScrn->numEntities; i++) {
> if (pScrn->entityList[i] == entityIndex) {
> - peacc = xf86Entities[pScrn->entityList[i]]->access;
> - (*ptr) = peacc->next;
> - /* disable entity: call disable func */
> - if (peacc->pAccess)
> - peacc->pAccess->AccessDisable(peacc->pAccess->arg);
> - /* also disable fallback - just in case */
> - if (peacc->fallback)
> - peacc->fallback->AccessDisable(peacc->fallback->arg);
> for (i++; i < pScrn->numEntities; i++)
> pScrn->entityList[i-1] = pScrn->entityList[i];
> pScrn->numEntities--;
> xf86Entities[entityIndex]->inUse = FALSE;
> break;
> }
> - ptr = &(xf86Entities[pScrn->entityList[i]]->access->next);
> }
> }
>
> @@ -351,7 +294,6 @@ void
> xf86ClearEntityListForScreen(int scrnIndex)
> {
> ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
> - EntityAccessPtr peacc;
> int i, entityIndex;
>
> if (pScrn->entityList == NULL || pScrn->numEntities == 0) return;
> @@ -360,43 +302,13 @@ xf86ClearEntityListForScreen(int scrnIndex)
> entityIndex = pScrn->entityList[i];
> xf86Entities[entityIndex]->inUse = FALSE;
> /* disable resource: call the disable function */
> - peacc = xf86Entities[entityIndex]->access;
> - if (peacc->pAccess)
> - peacc->pAccess->AccessDisable(peacc->pAccess->arg);
> - /* and the fallback function */
> - if (peacc->fallback)
> - peacc->fallback->AccessDisable(peacc->fallback->arg);
> - /* shared resources are only needed when entity is active: remove */
> - xf86DeallocateResourcesForEntity(entityIndex, ResShared);
> }
> xfree(pScrn->entityList);
> xfree(pScrn->entityInstanceList);
> - if (pScrn->CurrentAccess->pIoAccess == (EntityAccessPtr)pScrn->access)
> - pScrn->CurrentAccess->pIoAccess = NULL;
> - if (pScrn->CurrentAccess->pMemAccess == (EntityAccessPtr)pScrn->access)
> - pScrn->CurrentAccess->pMemAccess = NULL;
> pScrn->entityList = NULL;
> pScrn->entityInstanceList = NULL;
> }
>
> -void
> -xf86DeallocateResourcesForEntity(int entityIndex, unsigned long type)
> -{
> - resPtr *pprev_next = &Acc;
> - resPtr res = Acc;
> -
> - while (res) {
> - if (res->entityIndex == entityIndex &&
> - (type & ResAccMask & res->res_type))
> - {
> - (*pprev_next) = res->next;
> - xfree(res);
> - } else
> - pprev_next = &(res->next);
> - res = (*pprev_next);
> - }
> -}
> -
> /*
> * Add an extra device section (GDevPtr) to an entity.
> */
> @@ -439,7 +351,6 @@ xf86GetEntityInfo(int entityIndex)
> pEnt->location = xf86Entities[entityIndex]->bus;
> pEnt->active = xf86Entities[entityIndex]->active;
> pEnt->chipset = xf86Entities[entityIndex]->chipset;
> - pEnt->resources = xf86Entities[entityIndex]->resources;
> pEnt->driver = xf86Entities[entityIndex]->driver;
> if ( (xf86Entities[entityIndex]->devices) &&
> (xf86Entities[entityIndex]->devices[0]) ) {
> @@ -483,72 +394,12 @@ xf86GetDevFromEntity(int entityIndex, int instance)
> }
>
> /*
> - * general generic disable function.
> - */
> -static void
> -disableAccess(void)
> -{
> - int i;
> - xf86AccessPtr pacc;
> - EntityAccessPtr peacc;
> -
> - /* call disable funcs and reset current access pointer */
> - /* the entity specific access funcs are in an enabled */
> - /* state - driver must restore their state explicitely */
> - for (i = 0; i < xf86NumScreens; i++) {
> - peacc = xf86Screens[i]->CurrentAccess->pIoAccess;
> - while (peacc) {
> - if (peacc->pAccess)
> - peacc->pAccess->AccessDisable(peacc->pAccess->arg);
> - peacc = peacc->next;
> - }
> - xf86Screens[i]->CurrentAccess->pIoAccess = NULL;
> - peacc = xf86Screens[i]->CurrentAccess->pMemAccess;
> - while (peacc) {
> - if (peacc->pAccess)
> - peacc->pAccess->AccessDisable(peacc->pAccess->arg);
> - peacc = peacc->next;
> - }
> - xf86Screens[i]->CurrentAccess->pMemAccess = NULL;
> - }
> - /* then call the generic entity disable funcs */
> - for (i = 0; i < xf86NumEntities; i++) {
> - pacc = xf86Entities[i]->access->fallback;
> - pacc->AccessDisable(pacc->arg);
> - }
> -}
> -
> -static void
> -clearAccess(void)
> -{
> - int i;
> -
> - /* call disable funcs and reset current access pointer */
> - /* the entity specific access funcs are in an enabled */
> - /* state - driver must restore their state explicitely */
> - for (i = 0; i < xf86NumScreens; i++) {
> - xf86Screens[i]->CurrentAccess->pIoAccess = NULL;
> - xf86Screens[i]->CurrentAccess->pMemAccess = NULL;
> - }
> -
> -}
> -
> -/*
> - * Generic interface to bus specific code - add other buses here
> - */
> -
> -/*
> * xf86AccessInit() - set up everything needed for access control
> * called only once on first server generation.
> */
> void
> xf86AccessInit(void)
> {
> - initPciState();
> - initPciBusState();
> - DisablePciBusAccess();
> - DisablePciAccess();
> -
> xf86ResAccessEnter = TRUE;
> }
>
> @@ -566,10 +417,6 @@ xf86AccessEnter(void)
> * on enter we simply disable routing of special resources
> * to any bus and let the RAC code to "open" the right bridges.
> */
> - PciBusStateEnter();
> - DisablePciBusAccess();
> - PciStateEnter();
> - disableAccess();
> EntityEnter();
> notifyStateChange(NOTIFY_ENTER);
> xf86EnterServerState(SETUP);
> @@ -591,34 +438,9 @@ xf86AccessLeave(void)
> if (!xf86ResAccessEnter)
> return;
> notifyStateChange(NOTIFY_LEAVE);
> - disableAccess();
> - DisablePciBusAccess();
> EntityLeave();
> }
>
> -void
> -xf86AccessLeaveState(void)
> -{
> - if (!xf86ResAccessEnter)
> - return;
> - xf86ResAccessEnter = FALSE;
> - PciStateLeave();
> - PciBusStateLeave();
> -}
> -
> -/*
> - * xf86AccessRestoreState() - Restore the access registers to the
> - * state before X was started. This is handy for framebuffers.
> - */
> -static void
> -xf86AccessRestoreState(void)
> -{
> - if (!xf86ResAccessEnter)
> - return;
> - PciStateLeave();
> - PciBusStateLeave();
> -}
> -
> /*
> * xf86EnableAccess() -- enable access to controlled resources.
> * To reduce latency when switching access the ScrnInfoRec has
> @@ -637,879 +459,17 @@ xf86AccessRestoreState(void)
> void
> xf86EnableAccess(ScrnInfoPtr pScrn)
> {
> - register EntityAccessPtr peAcc = (EntityAccessPtr) pScrn->access;
> - register EntityAccessPtr pceAcc;
> - register xf86AccessPtr pAcc;
> - EntityAccessPtr tmp;
> -
> DebugF("Enable access %i\n",pScrn->scrnIndex);
>
> - /* Entity is not under access control or currently enabled */
> - if (!pScrn->access) {
> - if (pScrn->busAccess) {
> - ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
> - }
> - return;
> - }
> -
> - switch (pScrn->resourceType) {
> - case IO:
> - pceAcc = pScrn->CurrentAccess->pIoAccess;
> - if (peAcc == pceAcc) {
> - return;
> - }
> - if (pScrn->CurrentAccess->pMemAccess == pceAcc)
> - pScrn->CurrentAccess->pMemAccess = NULL;
> - while (pceAcc) {
> - pAcc = pceAcc->pAccess;
> - if (pAcc)
> - pAcc->AccessDisable(pAcc->arg);
> - pceAcc = pceAcc->next;
> - }
> - if (pScrn->busAccess)
> - ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
> - while (peAcc) {
> - pAcc = peAcc->pAccess;
> - if (pAcc)
> - pAcc->AccessEnable(pAcc->arg);
> - peAcc = peAcc->next;
> - }
> - pScrn->CurrentAccess->pIoAccess = (EntityAccessPtr) pScrn->access;
> - return;
> -
> - case MEM_IO:
> - pceAcc = pScrn->CurrentAccess->pIoAccess;
> - if (peAcc != pceAcc) { /* current Io != pAccess */
> - tmp = pceAcc;
> - while (pceAcc) {
> - pAcc = pceAcc->pAccess;
> - if (pAcc)
> - pAcc->AccessDisable(pAcc->arg);
> - pceAcc = pceAcc->next;
> - }
> - pceAcc = pScrn->CurrentAccess->pMemAccess;
> - if (peAcc != pceAcc /* current Mem != pAccess */
> - && tmp !=pceAcc) {
> - while (pceAcc) {
> - pAcc = pceAcc->pAccess;
> - if (pAcc)
> - pAcc->AccessDisable(pAcc->arg);
> - pceAcc = pceAcc->next;
> - }
> - }
> - } else { /* current Io == pAccess */
> - pceAcc = pScrn->CurrentAccess->pMemAccess;
> - if (pceAcc == peAcc) { /* current Mem == pAccess */
> - return;
> - }
> - while (pceAcc) { /* current Mem != pAccess */
> - pAcc = pceAcc->pAccess;
> - if (pAcc)
> - pAcc->AccessDisable(pAcc->arg);
> - pceAcc = pceAcc->next;
> - }
> - }
> - if (pScrn->busAccess)
> - ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
> - while (peAcc) {
> - pAcc = peAcc->pAccess;
> - if (pAcc)
> - pAcc->AccessEnable(pAcc->arg);
> - peAcc = peAcc->next;
> - }
> - pScrn->CurrentAccess->pMemAccess =
> - pScrn->CurrentAccess->pIoAccess = (EntityAccessPtr) pScrn->access;
> - return;
> -
> - case MEM:
> - pceAcc = pScrn->CurrentAccess->pMemAccess;
> - if (peAcc == pceAcc) {
> - return;
> - }
> - if (pScrn->CurrentAccess->pIoAccess == pceAcc)
> - pScrn->CurrentAccess->pIoAccess = NULL;
> - while (pceAcc) {
> - pAcc = pceAcc->pAccess;
> - if (pAcc)
> - pAcc->AccessDisable(pAcc->arg);
> - pceAcc = pceAcc->next;
> - }
> - if (pScrn->busAccess)
> - ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
> - while (peAcc) {
> - pAcc = peAcc->pAccess;
> - if (pAcc)
> - pAcc->AccessEnable(pAcc->arg);
> - peAcc = peAcc->next;
> - }
> - pScrn->CurrentAccess->pMemAccess = (EntityAccessPtr) pScrn->access;
> - return;
> -
> - case NONE:
> - if (pScrn->busAccess) {
> - ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
> - }
> - return;
> - }
> + return;
> }
>
> void
> xf86SetCurrentAccess(Bool Enable, ScrnInfoPtr pScrn)
> {
> - EntityAccessPtr pceAcc2 = NULL;
> - register EntityAccessPtr pceAcc = NULL;
> - register xf86AccessPtr pAcc;
> -
> -
> - switch(pScrn->resourceType) {
> - case IO:
> - pceAcc = pScrn->CurrentAccess->pIoAccess;
> - break;
> - case MEM:
> - pceAcc = pScrn->CurrentAccess->pMemAccess;
> - break;
> - case MEM_IO:
> - pceAcc = pScrn->CurrentAccess->pMemAccess;
> - pceAcc2 = pScrn->CurrentAccess->pIoAccess;
> - break;
> - default:
> - break;
> - }
> -
> - while (pceAcc) {
> - pAcc = pceAcc->pAccess;
> - if (pAcc) {
> - if (Enable) {
> - pAcc->AccessEnable(pAcc->arg);
> - } else {
> - pAcc->AccessDisable(pAcc->arg);
> - }
> - }
> - pceAcc = pceAcc->next;
> - if (!pceAcc) {
> - pceAcc = pceAcc2;
> - pceAcc2 = NULL;
> - }
> - }
> -}
> -
> -void
> -xf86SetAccessFuncs(EntityInfoPtr pEnt, xf86SetAccessFuncPtr funcs,
> - xf86SetAccessFuncPtr oldFuncs)
> -{
> - AccessFuncPtr rac;
> -
> - if (!xf86Entities[pEnt->index]->rac)
> - xf86Entities[pEnt->index]->rac = xnfcalloc(1,sizeof(AccessFuncRec));
> -
> - rac = xf86Entities[pEnt->index]->rac;
> -
> - rac->mem_new = funcs->mem;
> - rac->io_new = funcs->io;
> - rac->io_mem_new = funcs->io_mem;
> -
> - rac->old = oldFuncs;
> -}
> -
> -/*
> - * Conflict checking
> - */
> -
> -static memType
> -getMask(memType val)
> -{
> - memType mask = 0;
> - memType tmp = 0;
> -
> - mask=~mask;
> - tmp = ~((~tmp) >> 1);
> -
> - while (!(val & tmp)) {
> - mask = mask >> 1;
> - val = val << 1;
> - }
> - return mask;
> -}
> -
> -/*
> - * checkConflictBlock() -- check for conflicts of a block resource range.
> - * If conflict is found return end of conflicting range. Else return 0.
> - */
> -static memType
> -checkConflictBlock(resRange *range, resPtr pRes)
> -{
> - memType val,tmp,prev;
> - int i;
> -
> - switch (pRes->res_type & ResExtMask) {
> - case ResBlock:
> - if (range->rBegin < pRes->block_end &&
> - range->rEnd > pRes->block_begin) {
> - DebugF("b-b conflict w: %lx %lx\n",
> - pRes->block_begin,pRes->block_end);
> - return pRes->block_end < range->rEnd ?
> - pRes->block_end : range->rEnd;
> - }
> - return 0;
> - case ResSparse:
> - if (pRes->sparse_base > range->rEnd) return 0;
> -
> - val = (~pRes->sparse_mask | pRes->sparse_base) & getMask(range->rEnd);
> - DebugF("base = 0x%lx, mask = 0x%lx, begin = 0x%lx, end = 0x%lx ,"
> - "val = 0x%lx\n",
> - pRes->sparse_base, pRes->sparse_mask, range->rBegin,
> - range->rEnd, val);
> - i = sizeof(memType) * 8;
> - tmp = prev = pRes->sparse_base;
> -
> - while (i) {
> - tmp |= 1<< (--i) & val;
> - if (tmp > range->rEnd)
> - tmp = prev;
> - else
> - prev = tmp;
> - }
> - if (tmp >= range->rBegin) {
> - DebugF("conflict found at: 0x%lx\n",tmp);
> - DebugF("b-d conflict w: %lx %lx\n",
> - pRes->sparse_base,pRes->sparse_mask);
> - return tmp;
> - }
> - else
> - return 0;
> - }
> - return 0;
> -}
> -
> -/*
> - * checkConflictSparse() -- check for conflicts of a sparse resource range.
> - * If conflict is found return base of conflicting region. Else return 0.
> - */
> -#define mt_max ~(memType)0
> -#define length sizeof(memType) * 8
> -static memType
> -checkConflictSparse(resRange *range, resPtr pRes)
> -{
> - memType val, tmp, prev;
> - int i;
> -
> - switch (pRes->res_type & ResExtMask) {
> - case ResSparse:
> - tmp = pRes->sparse_mask & range->rMask;
> - if ((tmp & pRes->sparse_base) == (tmp & range->rBase)) {
> - DebugF("s-b conflict w: %lx %lx\n",
> - pRes->sparse_base,pRes->sparse_mask);
> - return pRes->sparse_mask;
> - }
> - return 0;
> -
> - case ResBlock:
> - if (pRes->block_end < range->rBase) return 0;
> -
> - val = (~range->rMask | range->rBase) & getMask(pRes->block_end);
> - i = length;
> - tmp = prev = range->rBase;
> -
> - while (i) {
> - DebugF("tmp = 0x%lx\n",tmp);
> - tmp |= 1<< (--i) & val;
> - if (tmp > pRes->block_end)
> - tmp = prev;
> - else
> - prev = tmp;
> - }
> - if (tmp < pRes->block_begin)
> - return 0;
> - else {
> - /*
> - * now we subdivide the block region in sparse regions
> - * with base values = 2^n and find the smallest mask.
> - * This might be done in a simpler way....
> - */
> - memType mask, m_mask = 0, base = pRes->block_begin;
> - int i;
> - while (base < pRes->block_end) {
> - for (i = 1; i < length; i++)
> - if ( base != (base & (mt_max << i))) break;
> - mask = mt_max >> (length - i);
> - do mask >>= 1;
> - while ((mask + base + 1) > pRes->block_end);
> - /* m_mask and are _inverted_ sparse masks */
> - m_mask = mask > m_mask ? mask : m_mask;
> - base = base + mask + 1;
> - }
> - DebugF("conflict found at: 0x%lx\n",tmp);
> - DebugF("b-b conflict w: %lx %lx\n",
> - pRes->block_begin,pRes->block_end);
> - return ~m_mask;
> - }
> - }
> - return 0;
> -}
> -#undef mt_max
> -#undef length
> -
> -/*
> - * needCheck() -- this function decides whether to check for conflicts
> - * depending on the types of the resource ranges and their locations
> - */
> -static Bool
> -needCheck(resPtr pRes, unsigned long type, int entityIndex, xf86State state)
> -{
> - /* the same entity shouldn't conflict with itself */
> - ScrnInfoPtr pScrn;
> - int i;
> - BusType loc = BUS_NONE;
> - BusType r_loc = BUS_NONE;
> -
> - if ((pRes->res_type & ResTypeMask) != (type & ResTypeMask))
> - return FALSE;
> -
> - /*
> - * Resources set by BIOS (ResBios) are allowed to conflict
> - * with resources marked (ResBios).
> - */
> - if (pRes->res_type & type & ResBios)
> - return FALSE;
> -
> - if (type & pRes->res_type & ResUnused)
> - return FALSE;
> -
> - if (state == OPERATING) {
> - if (type & ResDisableOpr || pRes->res_type & ResDisableOpr)
> - return FALSE;
> - if (type & pRes->res_type & ResUnusedOpr) return FALSE;
> - /*
> - * Maybe we should have ResUnused set The resUnusedOpr
> - * bit, too. This way we could avoid this confusion
> - */
> - if ((type & ResUnusedOpr && pRes->res_type & ResUnused) ||
> - (type & ResUnused && pRes->res_type & ResUnusedOpr))
> - return FALSE;
> - }
> -
> - if (entityIndex > -1)
> - loc = xf86Entities[entityIndex]->bus.type;
> - if (pRes->entityIndex > -1)
> - r_loc = xf86Entities[pRes->entityIndex]->bus.type;
> -
> - if ((type & ResAccMask) == ResShared &&
> - (pRes->res_type & ResAccMask) == ResShared)
> - return FALSE;
> -
> - if (pRes->entityIndex == entityIndex) return FALSE;
> -
> - if (pRes->entityIndex > -1 &&
> - (pScrn = xf86FindScreenForEntity(entityIndex))) {
> - for (i = 0; i < pScrn->numEntities; i++)
> - if (pScrn->entityList[i] == pRes->entityIndex) return FALSE;
> - }
> - return TRUE;
> -}
> -
> -/*
> - * checkConflict() - main conflict checking function which all other
> - * function call.
> - */
> -static memType
> -checkConflict(resRange *rgp, resPtr pRes, int entityIndex,
> - xf86State state, Bool ignoreIdentical)
> -{
> - memType ret;
> -
> - while(pRes) {
> - if (!needCheck(pRes,rgp->type, entityIndex ,state)) {
> - pRes = pRes->next;
> - continue;
> - }
> - switch (rgp->type & ResExtMask) {
> - case ResBlock:
> - if (rgp->rEnd < rgp->rBegin) {
> - xf86Msg(X_ERROR,"end of block range 0x%lx < begin 0x%lx\n",
> - (long)rgp->rEnd, (long)rgp->rBegin);
> - return 0;
> - }
> - if ((ret = checkConflictBlock(rgp, pRes))) {
> - if (!ignoreIdentical || (rgp->rBegin != pRes->block_begin)
> - || (rgp->rEnd != pRes->block_end))
> - return ret;
> - }
> - break;
> - case ResSparse:
> - if ((rgp->rBase & rgp->rMask) != rgp->rBase) {
> - xf86Msg(X_ERROR,"sparse io range (base: 0x%lx mask: 0x%lx)"
> - "doesn't satisfy (base & mask = mask)\n",
> - (long)rgp->rBase, (long)rgp->rMask);
> - return 0;
> - }
> - if ((ret = checkConflictSparse(rgp, pRes))) {
> - if (!ignoreIdentical || (rgp->rBase != pRes->sparse_base)
> - || (rgp->rMask != pRes->sparse_mask))
> - return ret;
> - }
> - break;
> - }
> - pRes = pRes->next;
> - }
> - return 0;
> -}
> -
> -/*
> - * xf86ChkConflict() - This function is the low level interface to
> - * the resource broker that gets exported. Tests all resources ie.
> - * performs test with SETUP flag.
> - */
> -static memType
> -xf86ChkConflict(resRange *rgp, int entityIndex)
> -{
> - return checkConflict(rgp, Acc, entityIndex, SETUP, FALSE);
> -}
> -
> -/*
> - * Resources List handling
> - */
> -
> -static resPtr
> -xf86JoinResLists(resPtr rlist1, resPtr rlist2)
> -{
> - resPtr pRes;
> -
> - if (!rlist1)
> - return rlist2;
> -
> - if (!rlist2)
> - return rlist1;
> -
> - for (pRes = rlist1; pRes->next; pRes = pRes->next)
> - ;
> - pRes->next = rlist2;
> - return rlist1;
> -}
> -
> -resPtr
> -xf86AddResToList(resPtr rlist, resRange *range, int entityIndex)
> -{
> - resPtr new;
> -
> - switch (range->type & ResExtMask) {
> - case ResBlock:
> - if (range->rEnd < range->rBegin) {
> - xf86Msg(X_ERROR,"end of block range 0x%lx < begin 0x%lx\n",
> - (long)range->rEnd, (long)range->rBegin);
> - return rlist;
> - }
> - break;
> - case ResSparse:
> - if ((range->rBase & range->rMask) != range->rBase) {
> - xf86Msg(X_ERROR,"sparse io range (base: 0x%lx mask: 0x%lx)"
> - "doesn't satisfy (base & mask = mask)\n",
> - (long)range->rBase, (long)range->rMask);
> - return rlist;
> - }
> - break;
> - }
> -
> - new = xnfalloc(sizeof(resRec));
> - /*
> - * Only background resources may be registered with ResBios
> - * and ResEstimated set. Other resources only set it for
> - * testing.
> - */
> - if (entityIndex != (-1))
> - range->type &= ~(ResBios | ResEstimated);
> - new->val = *range;
> - new->entityIndex = entityIndex;
> - new->next = rlist;
> - return new;
> -}
> -
> -void
> -xf86FreeResList(resPtr rlist)
> -{
> - resPtr pRes;
> -
> - if (!rlist)
> - return;
> -
> - for (pRes = rlist->next; pRes; rlist = pRes, pRes = pRes->next)
> - xfree(rlist);
> - xfree(rlist);
> -}
> -
> -static resPtr
> -xf86DupResList(const resPtr rlist)
> -{
> - resPtr pRes, ret, prev, new;
> -
> - if (!rlist)
> - return NULL;
> -
> - ret = xnfalloc(sizeof(resRec));
> - *ret = *rlist;
> - prev = ret;
> - for (pRes = rlist->next; pRes; pRes = pRes->next) {
> - new = xnfalloc(sizeof(resRec));
> - *new = *pRes;
> - prev->next = new;
> - prev = new;
> - }
> - return ret;
> -}
> -
> -static void
> -xf86PrintResList(int verb, resPtr list)
> -{
> - int i = 0;
> - const char *s, *r;
> - resPtr tmp = list;
> - unsigned long type;
> -
> - if (!list)
> - return;
> -
> - type = ResMem;
> - r = "M";
> - while (1) {
> - while (list) {
> - if ((list->res_type & ResPhysMask) == type) {
> - switch (list->res_type & ResExtMask) {
> - case ResBlock:
> - xf86ErrorFVerb(verb,
> - "\t[%d] %d\t%ld\t0x%08lx - 0x%08lx (0x%lx)",
> - i, list->entityIndex,
> - (list->res_type & ResDomain) >> 24,
> - (long)list->block_begin,
> - (long)list->block_end,
> - (long)(list->block_end -
> - list->block_begin + 1));
> - break;
> - case ResSparse:
> - xf86ErrorFVerb(verb, "\t[%d] %d\t%ld\t0x%08lx - 0x%08lx ",
> - i, list->entityIndex,
> - (list->res_type & ResDomain) >> 24,
> - (long)list->sparse_base,
> - (long)list->sparse_mask);
> - break;
> - default:
> - list = list->next;
> - continue;
> - }
> - xf86ErrorFVerb(verb, " %s", r);
> - switch (list->res_type & ResAccMask) {
> - case ResExclusive:
> - if (list->res_type & ResUnused)
> - s = "x";
> - else
> - s = "X";
> - break;
> - case ResShared:
> - if (list->res_type & ResUnused)
> - s = "s";
> - else
> - s = "S";
> - break;
> - default:
> - s = "?";
> - }
> - xf86ErrorFVerb(verb, "%s", s);
> - switch (list->res_type & ResExtMask) {
> - case ResBlock:
> - s = "[B]";
> - break;
> - case ResSparse:
> - s = "[S]";
> - break;
> - default:
> - s = "[?]";
> - }
> - xf86ErrorFVerb(verb, "%s", s);
> - if (list->res_type & ResInit)
> - xf86ErrorFVerb(verb, "t");
> - if (list->res_type & ResBios)
> - xf86ErrorFVerb(verb, "(B)");
> - if (list->res_type & ResBus)
> - xf86ErrorFVerb(verb, "(b)");
> - if (list->res_type & ResOprMask) {
> - switch (list->res_type & ResOprMask) {
> - case ResUnusedOpr:
> - s = "(OprU)";
> - break;
> - case ResDisableOpr:
> - s = "(OprD)";
> - break;
> - default:
> - s = "(Opr?)";
> - break;
> - }
> - xf86ErrorFVerb(verb, "%s", s);
> - }
> - xf86ErrorFVerb(verb, "\n");
> - i++;
> - }
> - list = list->next;
> - }
> - if (type == ResIo) break;
> - type = ResIo;
> - r = "I";
> - list = tmp;
> - }
> -}
> -
> -resPtr
> -xf86AddRangesToList(resPtr list, resRange *pRange, int entityIndex)
> -{
> - while(pRange && pRange->type != ResEnd) {
> - list = xf86AddResToList(list,pRange,entityIndex);
> - pRange++;
> - }
> - return list;
> -}
> -
> -void
> -xf86ResourceBrokerInit(void)
> -{
> - Acc = NULL;
> -
> - /* Get the ranges used exclusively by the system */
> - Acc = xf86AccResFromOS(Acc);
> - xf86MsgVerb(X_INFO, 3, "System resource ranges:\n");
> - xf86PrintResList(3, Acc);
> -}
> -
> -/*
> - * Resource registration
> - */
> -
> -static void
> -convertRange2Host(int entityIndex, resRange *pRange)
> -{
> - if (pRange->type & ResBus) {
> - switch (xf86Entities[entityIndex]->bus.type) {
> - case BUS_PCI:
> - pciConvertRange2Host(entityIndex,pRange);
> - break;
> - default:
> - break;
> - }
> -
> - pRange->type &= ~ResBus;
> - }
> -}
> -
> -static void
> -xf86ConvertListToHost(int entityIndex, resPtr list)
> -{
> - while (list) {
> - convertRange2Host(entityIndex, &list->val);
> - list = list->next;
> - }
> -}
> -
> -/*
> - * xf86RegisterResources() -- attempts to register listed resources.
> - * Returns a resPtr listing all resources not successfully registered, by
> - * which we mean, NULL.
> - */
> -
> -resPtr
> -xf86RegisterResources(int entityIndex, resList list, unsigned long access)
> -{
> - resRange range;
> - resList list_f = NULL;
> -
> - if (!list)
> - return NULL;
> -
> - while(list->type != ResEnd) {
> - range = *list;
> -
> - convertRange2Host(entityIndex,&range);
> -
> - if ((access != ResNone) && (access & ResAccMask)) {
> - range.type = (range.type & ~ResAccMask) | (access & ResAccMask);
> - }
> - range.type &= ~ResEstimated; /* Not allowed for drivers */
> - Acc = xf86AddResToList(Acc,&range,entityIndex);
> - list++;
> - }
> - if (list_f)
> - xfree(list_f);
> -
> -#ifdef DEBUG
> - xf86MsgVerb(X_INFO, 3,"Resources after driver initialization\n");
> - xf86PrintResList(3, Acc);
> -#endif
> - return NULL;
> -
> -}
> -
> -static void
> -busTypeSpecific(EntityPtr pEnt, xf86AccessPtr *acc_mem,
> - xf86AccessPtr *acc_io, xf86AccessPtr *acc_mem_io)
> -{
> - switch (pEnt->bus.type) {
> - case BUS_SBUS:
> - *acc_mem = *acc_io = *acc_mem_io = &AccessNULL;
> - break;
> - case BUS_PCI: {
> - struct pci_device *const dev = pEnt->bus.id.pci;
> -
> - if ((dev != NULL) && ((void *)dev->user_data != NULL)) {
> - pciAccPtr const paccp = (pciAccPtr) dev->user_data;
> -
> - *acc_io = & paccp->ioAccess;
> - *acc_mem = & paccp->memAccess;
> - *acc_mem_io = & paccp->io_memAccess;
> - }
> - else {
> - /* FIXME: This is an error path. We should probably have an
> - * FIXME: assertion here or something.
> - */
> - *acc_io = NULL;
> - *acc_mem = NULL;
> - *acc_mem_io = NULL;
> - }
> - break;
> - }
> - default:
> - *acc_mem = *acc_io = *acc_mem_io = NULL;
> - break;
> - }
> - return;
> + return;
> }
>
> -static void
> -setAccess(EntityPtr pEnt, xf86State state)
> -{
> -
> - xf86AccessPtr acc_mem, acc_io, acc_mem_io;
> - xf86AccessPtr org_mem = NULL, org_io = NULL, org_mem_io = NULL;
> - int prop;
> -
> - busTypeSpecific(pEnt, &acc_mem, &acc_io, &acc_mem_io);
> -
> - /* The replacement function needs to handle _all_ shared resources */
> - /* unless they are handeled locally and disabled otherwise */
> - if (pEnt->rac) {
> - if (pEnt->rac->io_new) {
> - org_io = acc_io;
> - acc_io = pEnt->rac->io_new;
> - }
> - if (pEnt->rac->mem_new) {
> - org_mem = acc_mem;
> - acc_mem = pEnt->rac->mem_new;
> - }
> - if (pEnt->rac->io_mem_new) {
> - org_mem_io = acc_mem_io;
> - acc_mem_io = pEnt->rac->io_mem_new;
> - }
> - }
> -
> - if (state == OPERATING) {
> - prop = pEnt->entityProp;
> - switch(pEnt->entityProp & NEED_SHARED) {
> - case NEED_SHARED:
> - pEnt->access->rt = MEM_IO;
> - break;
> - case NEED_IO_SHARED:
> - pEnt->access->rt = IO;
> - break;
> - case NEED_MEM_SHARED:
> - pEnt->access->rt = MEM;
> - break;
> - default:
> - pEnt->access->rt = NONE;
> - }
> - } else {
> - prop = NEED_SHARED | NEED_MEM | NEED_IO;
> - pEnt->access->rt = MEM_IO;
> - }
> -
> - switch(pEnt->access->rt) {
> - case IO:
> - pEnt->access->pAccess = acc_io;
> - break;
> - case MEM:
> - pEnt->access->pAccess = acc_mem;
> - break;
> - case MEM_IO:
> - pEnt->access->pAccess = acc_mem_io;
> - break;
> - default: /* no conflicts at all */
> - pEnt->access->pAccess = NULL; /* remove from RAC */
> - break;
> - }
> -
> - if (org_io) {
> - /* does the driver want the old access func? */
> - if (pEnt->rac->old) {
> - /* give it to the driver, leave state disabled */
> - pEnt->rac->old->io = org_io;
> - } else {
> - /* driver doesn't want it - enable generic access */
> - org_io->AccessEnable(org_io->arg);
> - }
> - }
> -
> - if (org_mem_io) {
> - /* does the driver want the old access func? */
> - if (pEnt->rac->old) {
> - /* give it to the driver, leave state disabled */
> - pEnt->rac->old->io_mem = org_mem_io;
> - } else {
> - /* driver doesn't want it - enable generic access */
> - org_mem_io->AccessEnable(org_mem_io->arg);
> - }
> - }
> -
> - if (org_mem) {
> - /* does the driver want the old access func? */
> - if (pEnt->rac->old) {
> - /* give it to the driver, leave state disabled */
> - pEnt->rac->old->mem = org_mem;
> - } else {
> - /* driver doesn't want it - enable generic access */
> - org_mem->AccessEnable(org_mem->arg);
> - }
> - }
> -
> - if (!(prop & NEED_MEM_SHARED)){
> - if (prop & NEED_MEM) {
> - if (acc_mem)
> - acc_mem->AccessEnable(acc_mem->arg);
> - } else {
> - if (acc_mem)
> - acc_mem->AccessDisable(acc_mem->arg);
> - }
> - }
> -
> - if (!(prop & NEED_IO_SHARED)) {
> - if (prop & NEED_IO) {
> - if (acc_io)
> - acc_io->AccessEnable(acc_io->arg);
> - } else {
> - if (acc_io)
> - acc_io->AccessDisable(acc_io->arg);
> - }
> - }
> -
> - /* disable shared resources */
> - if (pEnt->access->pAccess)
> - pEnt->access->pAccess->AccessDisable(pEnt->access->pAccess->arg);
> -
> - /*
> - * If device is not under access control it is enabled.
> - * If it needs bus routing do it here as it isn't bus
> - * type specific. Any conflicts should be checked at this
> - * stage
> - */
> - if (!pEnt->access->pAccess
> - && (pEnt->entityProp & (state == SETUP ? NEED_VGA_ROUTED_SETUP :
> - NEED_VGA_ROUTED)))
> - ((BusAccPtr)pEnt->busAcc)->set_f(pEnt->busAcc);
> -}
> -
> -
> /*
> * xf86EnterServerState() -- set state the server is in.
> */
> @@ -1534,11 +494,6 @@ SetSIGIOForState(xf86State state)
> void
> xf86EnterServerState(xf86State state)
> {
> - EntityPtr pEnt;
> - ScrnInfoPtr pScrn;
> - int i,j;
> - int needVGA = 0;
> - resType rt;
> /*
> * This is a good place to block SIGIO during SETUP state.
> * SIGIO should be blocked in SETUP state otherwise (u)sleep()
> @@ -1554,250 +509,8 @@ xf86EnterServerState(xf86State state)
> /* When servicing a dumb framebuffer we don't need to do anything */
> if (doFramebufferMode) return;
>
> - for (i=0; i<xf86NumScreens; i++) {
> - pScrn = xf86Screens[i];
> - j = pScrn->entityList[pScrn->numEntities - 1];
> - pScrn->access = xf86Entities[j]->access;
> -
> - for (j = 0; j<xf86Screens[i]->numEntities; j++) {
> - pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
> - if (pEnt->entityProp & (state == SETUP ? NEED_VGA_ROUTED_SETUP
> - : NEED_VGA_ROUTED))
> - xf86Screens[i]->busAccess = pEnt->busAcc;
> - }
> - if (xf86Screens[i]->busAccess)
> - needVGA ++;
> - }
> -
> - /*
> - * if we just have one screen we don't have RAC.
> - * Therefore just enable the screen and return.
> - */
> - if (!needRAC) {
> - xf86EnableAccess(xf86Screens[0]);
> - notifyStateChange(NOTIFY_ENABLE);
> - return;
> - }
> -
> - if (state == SETUP)
> - notifyStateChange(NOTIFY_SETUP_TRANSITION);
> - else
> - notifyStateChange(NOTIFY_OPERATING_TRANSITION);
> -
> - clearAccess();
> - for (i=0; i<xf86NumScreens;i++) {
> -
> - rt = NONE;
> -
> - for (j = 0; j<xf86Screens[i]->numEntities; j++) {
> - pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
> - setAccess(pEnt,state);
> -
> - if (pEnt->access->rt != NONE) {
> - if (rt != NONE && rt != pEnt->access->rt)
> - rt = MEM_IO;
> - else
> - rt = pEnt->access->rt;
> - }
> - }
> - xf86Screens[i]->resourceType = rt;
> - if (rt == NONE) {
> - xf86Screens[i]->access = NULL;
> - if (needVGA < 2)
> - xf86Screens[i]->busAccess = NULL;
> - }
> -
> - if (xf86Screens[i]->busAccess)
> - DebugF("Screen %i setting vga route\n",i);
> - switch (rt) {
> - case MEM_IO:
> - xf86MsgVerb(X_INFO, 3, "Screen %i shares mem & io resources\n",i);
> - break;
> - case IO:
> - xf86MsgVerb(X_INFO, 3, "Screen %i shares io resources\n",i);
> - break;
> - case MEM:
> - xf86MsgVerb(X_INFO, 3, "Screen %i shares mem resources\n",i);
> - break;
> - default:
> - xf86MsgVerb(X_INFO, 3, "Entity %i shares no resources\n",i);
> - break;
> - }
> - }
> - if (state == SETUP)
> - notifyStateChange(NOTIFY_SETUP);
> - else
> - notifyStateChange(NOTIFY_OPERATING);
> -}
> -
> -/*
> - * xf86SetOperatingState() -- Set ResOperMask for resources listed.
> - */
> -resPtr
> -xf86SetOperatingState(resList list, int entityIndex, int mask)
> -{
> - resPtr acc;
> - resPtr r_fail = NULL;
> - resRange range;
> -
> - while (list->type != ResEnd) {
> - range = *list;
> - convertRange2Host(entityIndex,&range);
> -
> - acc = Acc;
> - while (acc) {
> -#define MASK (ResTypeMask | ResExtMask)
> - if ((acc->entityIndex == entityIndex)
> - && (acc->val.a == range.a) && (acc->val.b == range.b)
> - && ((acc->val.type & MASK) == (range.type & MASK)))
> - break;
> -#undef MASK
> - acc = acc->next;
> - }
> - if (acc)
> - acc->val.type = (acc->val.type & ~ResOprMask)
> - | (mask & ResOprMask);
> - else {
> - r_fail = xf86AddResToList(r_fail,&range,entityIndex);
> - }
> - list ++;
> - }
> -
> - return r_fail;
> -}
> -
> -/*
> - * Stage specific code
> - */
> -
> -/*
> - * xf86ClaimFixedResources() is used to allocate non-relocatable resources.
> - * This should only be done by a driver's Probe() function.
> - */
> -void
> -xf86ClaimFixedResources(resList list, int entityIndex)
> -{
> - resPtr ptr = NULL;
> - resRange range;
> -
> - if (!list) return;
> -
> - while (list->type !=ResEnd) {
> - range = *list;
> -
> - convertRange2Host(entityIndex,&range);
> -
> - range.type &= ~ResEstimated; /* Not allowed for drivers */
> - switch (range.type & ResAccMask) {
> - case ResExclusive:
> - if (!xf86ChkConflict(&range, entityIndex)) {
> - Acc = xf86AddResToList(Acc, &range, entityIndex);
> - } else FatalError("xf86ClaimFixedResources conflict\n");
> - break;
> - case ResShared:
> - /* at this stage the resources are just added to the
> - * EntityRec. After the Probe() phase this list is checked by
> - * xf86PostProbe(). All resources which don't
> - * conflict with already allocated ones are allocated
> - * and removed from the EntityRec. Thus a non-empty resource
> - * list in the EntityRec indicates resource conflicts the
> - * driver should either handle or fail.
> - */
> - if (xf86Entities[entityIndex]->active)
> - ptr = xf86AddResToList(ptr,&range,entityIndex);
> - break;
> - }
> - list++;
> - }
> - xf86Entities[entityIndex]->resources =
> - xf86JoinResLists(xf86Entities[entityIndex]->resources,ptr);
> - xf86MsgVerb(X_INFO, 3,
> - "resource ranges after xf86ClaimFixedResources() call:\n");
> - xf86PrintResList(3,Acc);
> -#ifdef DEBUG
> - if (ptr) {
> - xf86MsgVerb(X_INFO, 3, "to be registered later:\n");
> - xf86PrintResList(3,ptr);
> - }
> -#endif
> -}
> -
> -static void
> -checkRoutingForScreens(xf86State state)
> -{
> - resList list = resVgaUnusedExclusive;
> - resPtr pResVGA = NULL;
> - resPtr pResVGAHost;
> - pointer vga = NULL;
> - int i,j;
> - int entityIndex;
> - EntityPtr pEnt;
> - resPtr pAcc;
> - resRange range;
> -
> - /*
> - * find devices that need VGA routed: ie the ones that have
> - * registered VGA resources without ResUnused. ResUnused
> - * doesn't conflict with itself therefore use it here.
> - */
> - while (list->type != ResEnd) { /* create resPtr from resList for VGA */
> - range = *list;
> - range.type &= ~(ResBios | ResEstimated); /* if set remove them */
> - pResVGA = xf86AddResToList(pResVGA, &range, -1);
> - list++;
> - }
> -
> - for (i = 0; i < xf86NumScreens; i++) {
> - for (j = 0; j < xf86Screens[i]->numEntities; j++) {
> - entityIndex = xf86Screens[i]->entityList[j];
> - pEnt = xf86Entities[entityIndex];
> - pAcc = Acc;
> - vga = NULL;
> - pResVGAHost = xf86DupResList(pResVGA);
> - xf86ConvertListToHost(entityIndex,pResVGAHost);
> - while (pAcc) {
> - if (pAcc->entityIndex == entityIndex)
> - if (checkConflict(&pAcc->val, pResVGAHost,
> - entityIndex, state, FALSE)) {
> - if (vga && vga != pEnt->busAcc) {
> - xf86Msg(X_ERROR, "Screen %i needs vga routed to"
> - "different buses - deleting\n",i);
> - xf86DeleteScreen(i--,0);
> - }
> -#ifdef DEBUG
> - {
> - resPtr rlist = xf86AddResToList(NULL,&pAcc->val,
> - pAcc->entityIndex);
> - xf86MsgVerb(X_INFO,3,"====== %s\n",
> - state == OPERATING ? "OPERATING"
> - : "SETUP");
> - xf86MsgVerb(X_INFO,3,"%s Resource:\n",
> - (pAcc->val.type) & ResMem ? "Mem" :"Io");
> - xf86PrintResList(3,rlist);
> - xf86FreeResList(rlist);
> - xf86MsgVerb(X_INFO,3,"Conflicts with:\n");
> - xf86PrintResList(3,pResVGAHost);
> - xf86MsgVerb(X_INFO,3,"=====\n");
> - }
> -#endif
> - vga = pEnt->busAcc;
> - pEnt->entityProp |= (state == SETUP
> - ? NEED_VGA_ROUTED_SETUP : NEED_VGA_ROUTED);
> - if (state == OPERATING) {
> - if (pAcc->val.type & ResMem)
> - pEnt->entityProp |= NEED_VGA_MEM;
> - else
> - pEnt->entityProp |= NEED_VGA_IO;
> - }
> - }
> - pAcc = pAcc->next;
> - }
> - if (vga)
> - xf86MsgVerb(X_INFO, 3,"Setting vga for screen %i.\n",i);
> - xf86FreeResList(pResVGAHost);
> - }
> - }
> - xf86FreeResList(pResVGA);
> + notifyStateChange(NOTIFY_ENABLE);
> + return;
> }
>
> /*
> @@ -1807,10 +520,6 @@ checkRoutingForScreens(xf86State state)
> void
> xf86PostProbe(void)
> {
> - memType val;
> - int i,j;
> - resPtr resp, acc, tmp, resp_x;
> -
> if (fbSlotClaimed) {
> if (pciSlotClaimed
> #if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
> @@ -1822,519 +531,34 @@ xf86PostProbe(void)
> return;
> } else {
> xf86Msg(X_INFO,"Running in FRAMEBUFFER Mode\n");
> - xf86AccessRestoreState();
> notifyStateChange(NOTIFY_ENABLE);
> doFramebufferMode = TRUE;
>
> return;
> }
> }
> - acc = tmp = xf86DupResList(Acc);
> -
> - for (i=0; i<xf86NumEntities; i++) {
> - resp = xf86Entities[i]->resources;
> - xf86Entities[i]->resources = NULL;
> - resp_x = NULL;
> - while (resp) {
> - if (! (val = checkConflict(&resp->val,acc,i,SETUP,FALSE))) {
> - resp->res_type &= ~(ResBios); /* just used for chkConflict() */
> - tmp = resp_x;
> - resp_x = resp;
> - resp = resp->next;
> - resp_x->next = tmp;
> - } else {
> - xf86MsgVerb(X_INFO, 3, "Found conflict at: 0x%lx\n",
> - (long)val);
> - resp->res_type &= ~ResEstimated;
> - tmp = xf86Entities[i]->resources;
> - xf86Entities[i]->resources = resp;
> - resp = resp->next;
> - xf86Entities[i]->resources->next = tmp;
> - }
> - }
> - xf86JoinResLists(Acc,resp_x);
> - }
> - xf86FreeResList(acc);
> -
> - xf86MsgVerb(X_INFO, 3, "resource ranges after probing:\n");
> - xf86PrintResList(3, Acc);
> - checkRoutingForScreens(SETUP);
> -
> - for (i = 0; i < xf86NumScreens; i++) {
> - for (j = 0; j<xf86Screens[i]->numEntities; j++) {
> - EntityPtr pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
> - if ((pEnt->entityProp & NEED_VGA_ROUTED_SETUP) &&
> - ((xf86Screens[i]->busAccess = pEnt->busAcc)))
> - break;
> - }
> - }
> -}
> -
> -static void
> -checkRequiredResources(int entityIndex)
> -{
> - resRange range;
> - resPtr pAcc = Acc;
> - const EntityPtr pEnt = xf86Entities[entityIndex];
> - while (pAcc) {
> - if (pAcc->entityIndex == entityIndex) {
> - range = pAcc->val;
> - /* ResAny to find conflicts with anything. */
> - range.type = (range.type & ~ResAccMask) | ResAny | ResBios;
> - if (checkConflict(&range,Acc,entityIndex,OPERATING,FALSE))
> - switch (pAcc->res_type & ResPhysMask) {
> - case ResMem:
> - pEnt->entityProp |= NEED_MEM_SHARED;
> - break;
> - case ResIo:
> - pEnt->entityProp |= NEED_IO_SHARED;
> - break;
> - }
> - if (!(pAcc->res_type & ResOprMask)) {
> - switch (pAcc->res_type & ResPhysMask) {
> - case ResMem:
> - pEnt->entityProp |= NEED_MEM;
> - break;
> - case ResIo:
> - pEnt->entityProp |= NEED_IO;
> - break;
> - }
> - }
> - }
> - pAcc = pAcc->next;
> - }
> -
> - /*
> - * After we have checked all resources of an entity agains any
> - * other resource we know if the entity need this resource type
> - * (ie. mem/io) at all. if not we can disable this type completely,
> - * so no need to share it either.
> - */
> - if ((pEnt->entityProp & NEED_MEM_SHARED)
> - && (!(pEnt->entityProp & NEED_MEM)))
> - pEnt->entityProp &= ~(unsigned long)NEED_MEM_SHARED;
> -
> - if ((pEnt->entityProp & NEED_IO_SHARED)
> - && (!(pEnt->entityProp & NEED_IO)))
> - pEnt->entityProp &= ~(unsigned long)NEED_IO_SHARED;
> }
>
> void
> xf86PostPreInit(void)
> {
> if (doFramebufferMode) return;
> -
> - if (xf86NumScreens > 1)
> - needRAC = TRUE;
> -
> - xf86MsgVerb(X_INFO, 3, "do I need RAC?");
> -
> - if (needRAC) {
> - xf86ErrorFVerb(3, " Yes, I do.\n");
> - } else {
> - xf86ErrorFVerb(3, " No, I don't.\n");
> - }
> -
> - xf86MsgVerb(X_INFO, 3, "resource ranges after preInit:\n");
> - xf86PrintResList(3, Acc);
> }
>
> void
> xf86PostScreenInit(void)
> {
> - int i,j;
> - ScreenPtr pScreen;
> - unsigned int flags;
> - int nummem = 0, numio = 0;
> -
> if (doFramebufferMode) {
> SetSIGIOForState(OPERATING);
> return;
> }
>
> DebugF("PostScreenInit generation: %i\n",serverGeneration);
> - if (serverGeneration == 1) {
> - checkRoutingForScreens(OPERATING);
> - for (i=0; i<xf86NumEntities; i++) {
> - checkRequiredResources(i);
> - }
> -
> - /*
> - * after removing NEED_XXX_SHARED from entities that
> - * don't need need XXX resources at all we might have
> - * a single entity left that has NEED_XXX_SHARED set.
> - * In this case we can delete that, too.
> - */
> - for (i = 0; i < xf86NumEntities; i++) {
> - if (xf86Entities[i]->entityProp & NEED_MEM_SHARED)
> - nummem++;
> - if (xf86Entities[i]->entityProp & NEED_IO_SHARED)
> - numio++;
> - }
> - for (i = 0; i < xf86NumEntities; i++) {
> - if (nummem < 2)
> - xf86Entities[i]->entityProp &= ~NEED_MEM_SHARED;
> - if (numio < 2)
> - xf86Entities[i]->entityProp &= ~NEED_IO_SHARED;
> - }
> - }
> -
> - if (xf86Screens && needRAC) {
> - int needRACforVga = 0;
> -
> - for (i = 0; i < xf86NumScreens; i++) {
> - for (j = 0; j < xf86Screens[i]->numEntities; j++) {
> - if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
> - & NEED_VGA_ROUTED) {
> - needRACforVga ++;
> - break; /* only count each screen once */
> - }
> - }
> - }
> -
> - for (i = 0; i < xf86NumScreens; i++) {
> - Bool needRACforMem = FALSE, needRACforIo = FALSE;
> -
> - for (j = 0; j < xf86Screens[i]->numEntities; j++) {
> - if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
> - & NEED_MEM_SHARED)
> - needRACforMem = TRUE;
> - if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
> - & NEED_IO_SHARED)
> - needRACforIo = TRUE;
> - /*
> - * We may need RAC although we don't share any resources
> - * as we need to route VGA to the correct bus. This can
> - * only be done simultaniously for MEM and IO.
> - */
> - if (needRACforVga > 1) {
> - if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
> - & NEED_VGA_MEM)
> - needRACforMem = TRUE;
> - if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
> - & NEED_VGA_IO)
> - needRACforIo = TRUE;
> - }
> - }
> -
> - pScreen = xf86Screens[i]->pScreen;
> - flags = 0;
> - if (needRACforMem) {
> - flags |= xf86Screens[i]->racMemFlags;
> - xf86ErrorFVerb(3, "Screen %d is using RAC for mem\n", i);
> - }
> - if (needRACforIo) {
> - flags |= xf86Screens[i]->racIoFlags;
> - xf86ErrorFVerb(3, "Screen %d is using RAC for io\n", i);
> - }
> -
> - xf86RACInit(pScreen,flags);
> - }
> - }
> -
> xf86EnterServerState(OPERATING);
>
> }
>
> /*
> - * Sets
> - */
> -
> -
> -static resPtr
> -decomposeSparse(resRange range)
> -{
> - resRange new;
> - resPtr ret = NULL;
> - memType val = range.rBegin;
> - int i = 0;
> -
> - new.type = (range.type & ~ResExtMask) | ResSparse;
> -
> - while (1) {
> - if (val & 0x01) {
> - new.rBase = (val << i);
> - new.rMask = ~((1 << i) - 1);
> - ret = xf86AddResToList(ret,&new,-1);
> - val ++;
> - }
> - i++;
> - val >>= 1;
> - if ((((val + 1) << i) - 1) > range.rEnd)
> - break;
> - }
> - i--;
> - val <<= 1;
> -
> - while (1) {
> - if((((val + 1) << i) - 1)> range.rEnd) {
> - if (--i < 0) break;
> - val <<= 1;
> - } else {
> - new.rBase = (val << i);
> - new.rMask = ~((1 << i) - 1);
> - val++;
> - ret = xf86AddResToList(ret,&new,-1);
> - }
> - }
> - return ret;
> -}
> -
> -static Bool
> -x_isSubsetOf(resRange range, resPtr list1, resPtr list2)
> -{
> - resRange range1, range2;
> - memType m1_A_m2;
> - Bool ret;
> - resPtr list;
> -
> - if (list1) {
> - list = list1;
> - if ((range.type & ResTypeMask) == (list->res_type & ResTypeMask)) {
> - switch (range.type & ResExtMask) {
> - case ResBlock:
> - if ((list->res_type & ResExtMask) == ResBlock) {
> - if (range.rBegin >= list->block_begin
> - && range.rEnd <= list->block_end)
> - return TRUE;
> - else if (range.rBegin < list->block_begin
> - && range.rEnd > list->block_end) {
> - RANGE(range1, range.rBegin, list->block_begin - 1,
> - range.type);
> - RANGE(range2, list->block_end + 1, range.rEnd,
> - range.type);
> - return (x_isSubsetOf(range1,list->next,list2) &&
> - x_isSubsetOf(range2,list->next,list2));
> - }
> - else if (range.rBegin >= list->block_begin
> - && range.rBegin <= list->block_end) {
> - RANGE(range1, list->block_end + 1, range.rEnd,
> - range.type);
> - return (x_isSubsetOf(range1,list->next,list2));
> - } else if (range.rEnd >= list->block_begin
> - && range.rEnd <= list->block_end) {
> - RANGE(range1,range.rBegin, list->block_begin - 1,
> - range.type);
> - return (x_isSubsetOf(range1,list->next,list2));
> - }
> - }
> - break;
> - case ResSparse:
> - if ((list->res_type & ResExtMask) == ResSparse) {
> - memType test;
> - int i;
> -
> - m1_A_m2 = range.rMask & list->sparse_mask;
> - if ((range.rBase ^ list->sparse_base) & m1_A_m2)
> - break;
> - /*
> - * We use the following system:
> - * let 0 ^= mask:1 base:0, 1 ^= mask:1 base:1,
> - * X mask:0 ; S: set TSS: test set for subset
> - * NTSS: new test set after test
> - * S: 1 0 1 0 X X 0 1 X
> - * TSS: 1 0 0 1 1 0 X X X
> - * T: 0 0 1 1 0 0 0 0 0
> - * NTSS: 1 0 0/X 1/X 1 0 1 0 X
> - * R: 0 0 0 0 0 0 1 1 0
> - * If R != 0 TSS and S are disjunct
> - * If R == 0 TSS is subset of S
> - * If R != 0 NTSS contains elements from TSS
> - * which are not also members of S.
> - * If a T is set one of the correspondig bits
> - * in NTSS must be set to the specified value
> - * all other are X
> - */
> - test = list->sparse_mask & ~range.rMask;
> - if (test == 0)
> - return TRUE;
> - for (i = 0; i < sizeof(memType); i++) {
> - if ((test >> i) & 0x1) {
> - RANGE(range1, ((range.rBase & list->sparse_base)
> - | (range.rBase & ~list->sparse_mask)
> - | ((~list->sparse_base & list->sparse_mask)
> - & ~range.rMask)) & range1.rMask,
> - ((range.rMask | list->sparse_mask) & ~test)
> - | (1 << i), range.type);
> - return (x_isSubsetOf(range1,list->next,list2));
> - }
> - }
> - }
> - break;
> - }
> - }
> - return (x_isSubsetOf(range,list->next,list2));
> - } else if (list2) {
> - resPtr tmpList = NULL;
> - switch (range.type & ResExtMask) {
> - case ResBlock:
> - tmpList = decomposeSparse(range);
> - while (tmpList) {
> - if (!x_isSubsetOf(tmpList->val,list2,NULL)) {
> - xf86FreeResList(tmpList);
> - return FALSE;
> - }
> - tmpList = tmpList->next;
> - }
> - xf86FreeResList(tmpList);
> - return TRUE;
> - break;
> - case ResSparse:
> - while (list2) {
> - tmpList = xf86JoinResLists(tmpList,decomposeSparse(list2->val));
> - list2 = list2->next;
> - }
> - ret = x_isSubsetOf(range,tmpList,NULL);
> - xf86FreeResList(tmpList);
> - return ret;
> - break;
> - }
> - } else
> - return FALSE;
> -
> - return FALSE;
> -}
> -
> -Bool
> -xf86IsSubsetOf(resRange range, resPtr list)
> -{
> - resPtr dup = xf86DupResList(list);
> - resPtr r_sp = NULL, r = NULL, tmp = NULL;
> - Bool ret = FALSE;
> -
> - while (dup) {
> - tmp = dup;
> - dup = dup->next;
> - switch (tmp->res_type & ResExtMask) {
> - case ResBlock:
> - tmp->next = r;
> - r = tmp;
> - break;
> - case ResSparse:
> - tmp->next = r_sp;
> - r_sp = tmp;
> - break;
> - }
> - }
> -
> - switch (range.type & ResExtMask) {
> - case ResBlock:
> - ret = x_isSubsetOf(range,r,r_sp);
> - break;
> - case ResSparse:
> - ret = x_isSubsetOf(range,r_sp,r);
> - break;
> - }
> - xf86FreeResList(r);
> - xf86FreeResList(r_sp);
> -
> - return ret;
> -}
> -
> -static resPtr
> -findIntersect(resRange Range, resPtr list)
> -{
> - resRange range;
> - resPtr new = NULL;
> -
> - while (list) {
> - if ((Range.type & ResTypeMask) == (list->res_type & ResTypeMask)) {
> - switch (Range.type & ResExtMask) {
> - case ResBlock:
> - switch (list->res_type & ResExtMask) {
> - case ResBlock:
> - if (Range.rBegin >= list->block_begin)
> - range.rBegin = Range.rBegin;
> - else
> - range.rBegin = list->block_begin;
> - if (Range.rEnd <= list->block_end)
> - range.rEnd = Range.rEnd;
> - else
> - range.rEnd = list->block_end;
> - if (range.rEnd > range.rBegin) {
> - range.type = Range.type;
> - new = xf86AddResToList(new,&range,-1);
> - }
> - break;
> - case ResSparse:
> - new = xf86JoinResLists(new,xf86FindIntersectOfLists(new,decomposeSparse(list->val)));
> - break;
> - }
> - break;
> - case ResSparse:
> - switch (list->res_type & ResExtMask) {
> - case ResSparse:
> - if (!((~(range.rBase ^ list->sparse_base)
> - & (range.rMask & list->sparse_mask)))) {
> - RANGE(range, (range.rBase & list->sparse_base)
> - | (~range.rMask & list->sparse_base)
> - | (~list->sparse_mask & range.rBase),
> - range.rMask | list->sparse_mask,
> - Range.type);
> - new = xf86AddResToList(new,&range,-1);
> - }
> - break;
> - case ResBlock:
> - new = xf86JoinResLists(new,xf86FindIntersectOfLists(
> - decomposeSparse(range),list));
> - break;
> - }
> - }
> - }
> - list = list->next;
> - }
> - return new;
> -}
> -
> -resPtr
> -xf86FindIntersectOfLists(resPtr l1, resPtr l2)
> -{
> - resPtr ret = NULL;
> -
> - while (l1) {
> - ret = xf86JoinResLists(ret,findIntersect(l1->val,l2));
> - l1 = l1->next;
> - }
> - return ret;
> -}
> -
> -#if 0 /* Not used */
> -static resPtr
> -xf86FindComplement(resRange Range)
> -{
> - resRange range;
> - memType tmp;
> - resPtr new = NULL;
> - int i;
> -
> - switch (Range.type & ResExtMask) {
> - case ResBlock:
> - if (Range.rBegin > 0) {
> - RANGE(range, 0, Range.rBegin - 1, Range.type);
> - new = xf86AddResToList(new,&range,-1);
> - }
> - if (Range.rEnd < (memType)~0) {
> - RANGE(range,Range.rEnd + 1, (memType)~0, Range.type);
> - new = xf86AddResToList(new,&range,-1);
> - }
> - break;
> - case ResSparse:
> - tmp = Range.rMask;
> - for (i = 0; i < sizeof(memType); i++) {
> - if (tmp & 0x1) {
> - RANGE(range,(~Range.rMask & range.rMask),(1 << i), Range.type);
> - new = xf86AddResToList(new,&range,-1);
> - }
> - }
> - break;
> - default:
> - break;
> - }
> - return new;
> -}
> -#endif
> -
> -/*
> * xf86FindPrimaryDevice() - Find the display device which
> * was active when the server was started.
> */
> @@ -2367,38 +591,6 @@ xf86FindPrimaryDevice(void)
> }
> }
>
> -Bool
> -xf86NoSharedResources(int screenIndex,resType res)
> -{
> - int j;
> -
> - if (screenIndex > xf86NumScreens)
> - return TRUE;
> -
> - for (j = 0; j < xf86Screens[screenIndex]->numEntities; j++) {
> - switch (res) {
> - case IO:
> - if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
> - & NEED_IO_SHARED)
> - return FALSE;
> - break;
> - case MEM:
> - if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
> - & NEED_MEM_SHARED)
> - return FALSE;
> - break;
> - case MEM_IO:
> - if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
> - & NEED_SHARED)
> - return FALSE;
> - break;
> - case NONE:
> - break;
> - }
> - }
> - return TRUE;
> -}
> -
> void
> xf86RegisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func, pointer arg)
> {
> diff --git a/hw/xfree86/common/xf86Bus.h b/hw/xfree86/common/xf86Bus.h
> index 83ba83c..95da8a5 100644
> --- a/hw/xfree86/common/xf86Bus.h
> +++ b/hw/xfree86/common/xf86Bus.h
> @@ -43,14 +43,6 @@
> #include "xf86sbusBus.h"
> #endif
>
> -typedef struct racInfo {
> - xf86AccessPtr mem_new;
> - xf86AccessPtr io_new;
> - xf86AccessPtr io_mem_new;
> - xf86SetAccessFuncPtr old;
> -} AccessFuncRec, *AccessFuncPtr;
> -
> -
> typedef struct {
> DriverPtr driver;
> int chipset;
> @@ -59,12 +51,9 @@ typedef struct {
> EntityProc entityEnter;
> EntityProc entityLeave;
> pointer private;
> - resPtr resources;
> Bool active;
> Bool inUse;
> BusRec bus;
> - EntityAccessPtr access;
> - AccessFuncPtr rac;
> pointer busAcc;
> int lastScrnFlag;
> DevUnion * entityPrivates;
> @@ -73,31 +62,7 @@ typedef struct {
> IOADDRESS domainIO;
> } EntityRec, *EntityPtr;
>
> -#define NO_SEPARATE_IO_FROM_MEM 0x0001
> -#define NO_SEPARATE_MEM_FROM_IO 0x0002
> -#define NEED_VGA_ROUTED 0x0004
> -#define NEED_VGA_ROUTED_SETUP 0x0008
> -#define NEED_MEM 0x0010
> -#define NEED_IO 0x0020
> -#define NEED_MEM_SHARED 0x0040
> -#define NEED_IO_SHARED 0x0080
> -#define ACCEL_IS_SHARABLE 0x0100
> -#define IS_SHARED_ACCEL 0x0200
> -#define SA_PRIM_INIT_DONE 0x0400
> -#define NEED_VGA_MEM 0x1000
> -#define NEED_VGA_IO 0x2000
> -
> -#define NEED_SHARED (NEED_MEM_SHARED | NEED_IO_SHARED)
> -
> -struct x_BusAccRec;
> -typedef void (*BusAccProcPtr)(struct x_BusAccRec *ptr);
> -
> typedef struct x_BusAccRec {
> - BusAccProcPtr set_f;
> - BusAccProcPtr enable_f;
> - BusAccProcPtr disable_f;
> - BusAccProcPtr save_f;
> - BusAccProcPtr restore_f;
> struct x_BusAccRec *current; /* pointer to bridge open on this bus */
> struct x_BusAccRec *primary; /* pointer to the bus connecting to this */
> struct x_BusAccRec *next; /* this links the different buses together */
> @@ -121,15 +86,15 @@ typedef struct _stateChange {
> struct _stateChange *next;
> } StateChangeNotificationRec, *StateChangeNotificationPtr;
>
> +#define ACCEL_IS_SHARABLE 0x100
> +#define IS_SHARED_ACCEL 0x200
> +#define SA_PRIM_INIT_DONE 0x400
>
> extern EntityPtr *xf86Entities;
> extern int xf86NumEntities;
> -extern xf86AccessRec AccessNULL;
> extern BusRec primaryBus;
> -extern BusAccPtr xf86BusAccInfo;
>
> int xf86AllocateEntity(void);
> BusType StringToBusType(const char* busID, const char **retID);
> -Bool xf86IsSubsetOf(resRange range, resPtr list);
>
> #endif /* _XF86_BUS_H */
> diff --git a/hw/xfree86/common/xf86Configure.c b/hw/xfree86/common/xf86Configure.c
> index 307e0c4..7d738d5 100644
> --- a/hw/xfree86/common/xf86Configure.c
> +++ b/hw/xfree86/common/xf86Configure.c
> @@ -659,8 +659,6 @@ DoConfigure(void)
> }
>
> /* Disable PCI devices */
> - xf86ResourceBrokerInit();
> - xf86AccessInit();
> xf86FindPrimaryDevice();
>
> /* Create XF86Config file structure */
> diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
> index 25aa4f5..5716989 100644
> --- a/hw/xfree86/common/xf86DGA.c
> +++ b/hw/xfree86/common/xf86DGA.c
> @@ -528,11 +528,6 @@ DGAAvailable(int index)
> if(DGAScreenKey == NULL)
> return FALSE;
>
> - if (!xf86NoSharedResources(((ScrnInfoPtr)dixLookupPrivate(
> - &screenInfo.screens[index]->devPrivates,
> - xf86ScreenKey))->scrnIndex, MEM))
> - return FALSE;
> -
> if(DGA_GET_SCREEN_PRIV(screenInfo.screens[index]))
> return TRUE;
>
> diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
> index 72e1c75..3c60785 100644
> --- a/hw/xfree86/common/xf86Events.c
> +++ b/hw/xfree86/common/xf86Events.c
> @@ -469,7 +469,6 @@ xf86VTSwitch(void)
> xf86Screens[i]->LeaveVT(i, 0);
>
> xf86AccessLeave(); /* We need this here, otherwise */
> - xf86AccessLeaveState(); /* console won't be restored */
>
> if (!xf86VTSwitchAway()) {
> /*
> @@ -517,8 +516,6 @@ xf86VTSwitch(void)
> * trap calls when switched away.
> */
> xf86Screens[i]->vtSema = FALSE;
> - xf86Screens[i]->access = NULL;
> - xf86Screens[i]->busAccess = NULL;
> }
> if (xorgHWAccess)
> xf86DisableIO();
> diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
> index d677548..649119c 100644
> --- a/hw/xfree86/common/xf86Helper.c
> +++ b/hw/xfree86/common/xf86Helper.c
> @@ -58,7 +58,6 @@
> #include "xf86Xinput.h"
> #include "xf86InPriv.h"
> #include "mivalidate.h"
> -#include "xf86RAC.h"
> #include "xf86Bus.h"
> #include "xf86Crtc.h"
>
> @@ -194,13 +193,6 @@ xf86AllocateScreen(DriverPtr drv, int flags)
> xf86Screens[i]->drv = drv;
> drv->refCount++;
> xf86Screens[i]->module = DuplicateModule(drv->module, NULL);
> - /*
> - * set the initial access state. This will be modified after PreInit.
> - * XXX Or should we do it some other place?
> - */
> - xf86Screens[i]->CurrentAccess = &xf86CurrentAccess;
> - xf86Screens[i]->resourceType = MEM_IO;
> -
> xf86Screens[i]->DriverFunc = drv->driverFunc;
>
> return xf86Screens[i];
> @@ -2317,13 +2309,8 @@ xf86SetSilkenMouse (ScreenPtr pScreen)
>
> /* check for commandline option here */
> /* disable if screen shares resources */
> - if (((pScrn->racMemFlags & RAC_CURSOR) &&
> - !xf86NoSharedResources(pScrn->scrnIndex,MEM)) ||
> - ((pScrn->racIoFlags & RAC_CURSOR) &&
> - !xf86NoSharedResources(pScrn->scrnIndex,IO))) {
> - useSM = FALSE;
> - from = X_PROBED;
> - } else if (xf86silkenMouseDisableFlag) {
> + /* TODO VGA ARB silken mouse */
> + if (xf86silkenMouseDisableFlag) {
> from = X_CMDLINE;
> useSM = FALSE;
> } else {
> @@ -2373,12 +2360,10 @@ xf86FindXvOptions(int scrnIndex, int adaptor_index, char *port_name,
> #define LoaderGetOS xf86GetOS
> #include "loader/os.c"
>
> -/* new RAC */
> -
> ScrnInfoPtr
> xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
> - PciChipsets *p_chip, resList res, EntityProc init,
> - EntityProc enter, EntityProc leave, pointer private)
> + PciChipsets *p_chip, EntityProc init,
> + EntityProc enter, EntityProc leave, pointer private)
> {
> PciChipsets *p_id;
> EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex);
> @@ -2390,7 +2375,7 @@ xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
> return pScrn;
> }
> if (!pEnt->active) {
> - xf86ConfigPciEntityInactive(pEnt, p_chip, res, init, enter,
> + xf86ConfigPciEntityInactive(pEnt, p_chip, init, enter,
> leave, private);
> xfree(pEnt);
> return pScrn;
> @@ -2409,11 +2394,9 @@ xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
> for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
> if (pEnt->chipset == p_id->numChipset) break;
> }
> - xf86ClaimFixedResources(p_id->resList,entityIndex);
> }
> xfree(pEnt);
>
> - xf86ClaimFixedResources(res,entityIndex);
> xf86SetEntityFuncs(entityIndex,init,enter,leave,private);
>
> return pScrn;
> @@ -2455,7 +2438,7 @@ xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
>
> Bool
> xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
> - PciChipsets *p_chip, resList res, EntityProc init,
> + PciChipsets *p_chip, EntityProc init,
> EntityProc enter, EntityProc leave, pointer private)
> {
> PciChipsets *p_id;
> @@ -2472,11 +2455,9 @@ xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
> for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
> if (pEnt->chipset == p_id->numChipset) break;
> }
> - xf86ClaimFixedResources(p_id->resList,entityIndex);
> }
> xfree(pEnt);
>
> - xf86ClaimFixedResources(res,entityIndex);
> if (!xf86SetEntityFuncs(entityIndex,init,enter,leave,private))
> return FALSE;
>
> @@ -2492,7 +2473,7 @@ xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
> */
> void
> xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
> - resList res, EntityProc init, EntityProc enter,
> + EntityProc init, EntityProc enter,
> EntityProc leave, pointer private)
> {
> PciChipsets *p_id;
> @@ -2504,11 +2485,7 @@ xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
> for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
> if (pEnt->chipset == p_id->numChipset) break;
> }
> - xf86ClaimFixedResources(p_id->resList,pEnt->index);
> }
> - xf86ClaimFixedResources(res,pEnt->index);
> - /* shared resources are only needed when entity is active: remove */
> - xf86DeallocateResourcesForEntity(pEnt->index, ResShared);
> xf86SetEntityFuncs(pEnt->index,init,enter,leave,private);
> }
>
> diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
> index 4cab20c..cea17ee 100644
> --- a/hw/xfree86/common/xf86Init.c
> +++ b/hw/xfree86/common/xf86Init.c
> @@ -792,9 +792,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
> xf86OSPMClose = xf86OSPMOpen();
> #endif
>
> - /* Initialise the resource broker */
> - xf86ResourceBrokerInit();
> -
> /* Load all modules specified explicitly in the config file */
> if ((modulelist = xf86ModulelistFromConfig(&optionlist))) {
> xf86LoadModules(modulelist, optionlist);
> @@ -1371,16 +1368,12 @@ ddxGiveUp(void)
> xf86OSPMClose = NULL;
> #endif
>
> - xf86AccessLeaveState();
> -
> for (i = 0; i < xf86NumScreens; i++) {
> /*
> * zero all access functions to
> * trap calls when switched away.
> */
> xf86Screens[i]->vtSema = FALSE;
> - xf86Screens[i]->access = NULL;
> - xf86Screens[i]->busAccess = NULL;
> }
>
> #ifdef XFreeXDGA
> diff --git a/hw/xfree86/common/xf86PM.c b/hw/xfree86/common/xf86PM.c
> index c51960e..f6138c3 100644
> --- a/hw/xfree86/common/xf86PM.c
> +++ b/hw/xfree86/common/xf86PM.c
> @@ -70,7 +70,6 @@ suspend (pmEvent event, Bool undo)
> xf86inSuspend = TRUE;
>
> for (i = 0; i < xf86NumScreens; i++) {
> - xf86EnableAccess(xf86Screens[i]);
> if (xf86Screens[i]->EnableDisableFBAccess)
> (*xf86Screens[i]->EnableDisableFBAccess) (i, FALSE);
> }
> @@ -81,7 +80,6 @@ suspend (pmEvent event, Bool undo)
> }
> xf86EnterServerState(SETUP);
> for (i = 0; i < xf86NumScreens; i++) {
> - xf86EnableAccess(xf86Screens[i]);
> if (xf86Screens[i]->PMEvent)
> xf86Screens[i]->PMEvent(i,event,undo);
> else {
> @@ -90,7 +88,7 @@ suspend (pmEvent event, Bool undo)
> }
> }
> xf86AccessLeave();
> - xf86AccessLeaveState();
> +
> }
>
> static void
> diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h
> index f4ed8c0..dc35c7c 100644
> --- a/hw/xfree86/common/xf86Priv.h
> +++ b/hw/xfree86/common/xf86Priv.h
> @@ -88,7 +88,6 @@ extern _X_EXPORT int xf86NumDrivers;
> extern _X_EXPORT Bool xf86Resetting;
> extern _X_EXPORT Bool xf86Initialising;
> extern _X_EXPORT int xf86NumScreens;
> -extern _X_EXPORT xf86CurrentAccessRec xf86CurrentAccess;
> extern _X_EXPORT const char *xf86VisualNames[];
> extern _X_EXPORT int xf86Verbose; /* verbosity level */
> extern _X_EXPORT int xf86LogVerbose; /* log file verbosity level */
> @@ -118,11 +117,9 @@ extern _X_EXPORT void xf86AccessInit(void);
> extern _X_EXPORT void xf86AccessEnter(void);
> extern _X_EXPORT void xf86AccessLeave(void);
> extern _X_EXPORT void xf86EntityInit(void);
> -extern _X_EXPORT void xf86AccessLeaveState(void);
>
> extern _X_EXPORT void xf86FindPrimaryDevice(void);
> /* new RAC */
> -extern _X_EXPORT void xf86ResourceBrokerInit(void);
> extern _X_EXPORT void xf86PostProbe(void);
> extern _X_EXPORT void xf86ClearEntityListForScreen(int scrnIndex);
> extern _X_EXPORT void xf86AddDevToEntity(int entityIndex, GDevPtr dev);
> diff --git a/hw/xfree86/common/xf86RAC.c b/hw/xfree86/common/xf86RAC.c
> deleted file mode 100644
> index 2eed8c7..0000000
> --- a/hw/xfree86/common/xf86RAC.c
> +++ /dev/null
> @@ -1,1171 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "misc.h"
> -#include "xf86.h"
> -#include "xf86_OSproc.h"
> -
> -#include <X11/X.h>
> -#include "colormapst.h"
> -#include "scrnintstr.h"
> -#include "screenint.h"
> -#include "gcstruct.h"
> -#include "pixmapstr.h"
> -#include "pixmap.h"
> -#include "windowstr.h"
> -#include "window.h"
> -#include "xf86str.h"
> -#include "xf86RAC.h"
> -#include "mipointer.h"
> -#include "mipointrst.h"
> -#ifdef RENDER
> -# include "picturestr.h"
> -#endif
> -
> -#ifdef DEBUG
> -#define DPRINT_S(x,y) ErrorF(x ": %i\n",y);
> -#define DPRINT(x) ErrorF(x "\n");
> -#else
> -#define DPRINT_S(x,y)
> -#define DPRINT(x)
> -#endif
> -
> -#define WRAP_SCREEN(x,y) {pScreenPriv->x = pScreen->x;\
> - pScreen->x = y;}
> -#define WRAP_SCREEN_COND(x,y,cond) \
> - {pScreenPriv->x = pScreen->x;\
> - if (flag & (cond))\
> - pScreen->x = y;}
> -#define UNWRAP_SCREEN(x) pScreen->x = pScreenPriv->x
> -
> -#define SCREEN_PROLOG(x) pScreen->x = ((RACScreenPtr) \
> - dixLookupPrivate(&(pScreen)->devPrivates, RACScreenKey))->x
> -#define SCREEN_EPILOG(x,y) pScreen->x = y;
> -
> -#define WRAP_PICT_COND(x,y,cond) if (ps)\
> - {pScreenPriv->x = ps->x;\
> - if (flag & (cond))\
> - ps->x = y;}
> -#define UNWRAP_PICT(x) if (ps) {ps->x = pScreenPriv->x;}
> -
> -#define PICTURE_PROLOGUE(field) ps->field = \
> - ((RACScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, RACScreenKey))->field
> -#define PICTURE_EPILOGUE(field, wrap) \
> - ps->field = wrap
> -
> -#define WRAP_SCREEN_INFO(x,y) {pScreenPriv->x = pScrn->x;\
> - pScrn->x = y;}
> -#define WRAP_SCREEN_INFO_COND(x,y,cond) \
> - {pScreenPriv->x = pScrn->x;\
> - if (flag & (cond))\
> - pScrn->x = y;}
> -#define UNWRAP_SCREEN_INFO(x) pScrn->x = pScreenPriv->x
> -
> -#define SPRITE_PROLOG miPointerScreenPtr PointPriv = \
> - (miPointerScreenPtr)dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey); \
> - RACScreenPtr pScreenPriv = \
> - ((RACScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, RACScreenKey));\
> - PointPriv->spriteFuncs = pScreenPriv->miSprite;
> -#define SPRITE_EPILOG pScreenPriv->miSprite = PointPriv->spriteFuncs;\
> - PointPriv->spriteFuncs = &RACSpriteFuncs;
> -#define WRAP_SPRITE_COND(cond){pScreenPriv->miSprite = PointPriv->spriteFuncs;\
> - if(flag & (cond))\
> - PointPriv->spriteFuncs = &RACSpriteFuncs;}
> -#define UNWRAP_SPRITE PointPriv->spriteFuncs = pScreenPriv->miSprite
> -
> -
> -#define GC_WRAP(x) pGCPriv->wrapOps = (x)->ops;\
> - pGCPriv->wrapFuncs = (x)->funcs;\
> - (x)->ops = &RACGCOps;\
> - (x)->funcs = &RACGCFuncs;
> -#define GC_UNWRAP(x)\
> - RACGCPtr pGCPriv = (RACGCPtr)dixLookupPrivate(&(x)->devPrivates, RACGCKey);\
> - (x)->ops = pGCPriv->wrapOps;\
> - (x)->funcs = pGCPriv->wrapFuncs;
> -
> -#define GC_SCREEN register ScrnInfoPtr pScrn \
> - = xf86Screens[pGC->pScreen->myNum]
> -
> -#define ENABLE xf86EnableAccess(xf86Screens[pScreen->myNum])
> -#define ENABLE_GC xf86EnableAccess(xf86Screens[pGC->pScreen->myNum])
> -
> -typedef struct _RACScreen {
> - CreateGCProcPtr CreateGC;
> - CloseScreenProcPtr CloseScreen;
> - GetImageProcPtr GetImage;
> - GetSpansProcPtr GetSpans;
> - SourceValidateProcPtr SourceValidate;
> - CopyWindowProcPtr CopyWindow;
> - ClearToBackgroundProcPtr ClearToBackground;
> - CreatePixmapProcPtr CreatePixmap;
> - SaveScreenProcPtr SaveScreen;
> - /* Colormap */
> - StoreColorsProcPtr StoreColors;
> - /* Cursor */
> - DisplayCursorProcPtr DisplayCursor;
> - RealizeCursorProcPtr RealizeCursor;
> - UnrealizeCursorProcPtr UnrealizeCursor;
> - RecolorCursorProcPtr RecolorCursor;
> - SetCursorPositionProcPtr SetCursorPosition;
> - void (*AdjustFrame)(int,int,int,int);
> - Bool (*SwitchMode)(int, DisplayModePtr,int);
> - Bool (*EnterVT)(int, int);
> - void (*LeaveVT)(int, int);
> - void (*FreeScreen)(int, int);
> - miPointerSpriteFuncPtr miSprite;
> -#ifdef RENDER
> - CompositeProcPtr Composite;
> - GlyphsProcPtr Glyphs;
> - CompositeRectsProcPtr CompositeRects;
> -#endif
> -} RACScreenRec, *RACScreenPtr;
> -
> -typedef struct _RACGC {
> - GCOps *wrapOps;
> - GCFuncs *wrapFuncs;
> -} RACGCRec, *RACGCPtr;
> -
> -/* Screen funcs */
> -static Bool RACCloseScreen (int i, ScreenPtr pScreen);
> -static void RACGetImage (DrawablePtr pDrawable, int sx, int sy,
> - int w, int h, unsigned int format,
> - unsigned long planemask, char *pdstLine);
> -static void RACGetSpans (DrawablePtr pDrawable, int wMax, DDXPointPtr ppt,
> - int *pwidth, int nspans, char *pdstStart);
> -static void RACSourceValidate (DrawablePtr pDrawable,
> - int x, int y, int width, int height );
> -static void RACCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
> - RegionPtr prgnSrc );
> -static void RACClearToBackground (WindowPtr pWin, int x, int y,
> - int w, int h, Bool generateExposures );
> -static PixmapPtr RACCreatePixmap(ScreenPtr pScreen, int w, int h, int depth,
> - unsigned usage_hint);
> -static Bool RACCreateGC(GCPtr pGC);
> -static Bool RACSaveScreen(ScreenPtr pScreen, Bool unblank);
> -static void RACStoreColors (ColormapPtr pmap, int ndef, xColorItem *pdefs);
> -static void RACRecolorCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
> - CursorPtr pCurs, Bool displayed);
> -static Bool RACRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
> - CursorPtr pCursor);
> -static Bool RACUnrealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
> - CursorPtr pCursor);
> -static Bool RACDisplayCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
> - CursorPtr pCursor);
> -static Bool RACSetCursorPosition (DeviceIntPtr pDev, ScreenPtr pScreen,
> - int x, int y, Bool generateEvent);
> -static void RACAdjustFrame(int index, int x, int y, int flags);
> -static Bool RACSwitchMode(int index, DisplayModePtr mode, int flags);
> -static Bool RACEnterVT(int index, int flags);
> -static void RACLeaveVT(int index, int flags);
> -static void RACFreeScreen(int index, int flags);
> -/* GC funcs */
> -static void RACValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDraw);
> -static void RACChangeGC(GCPtr pGC, unsigned long mask);
> -static void RACCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
> -static void RACDestroyGC(GCPtr pGC);
> -static void RACChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects);
> -static void RACDestroyClip(GCPtr pGC);
> -static void RACCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
> -/* GC ops */
> -static void RACFillSpans( DrawablePtr pDraw, GC *pGC, int nInit,
> - DDXPointPtr pptInit, int *pwidthInit, int fSorted );
> -static void RACSetSpans(DrawablePtr pDraw, GCPtr pGC, char *pcharsrc,
> - register DDXPointPtr ppt, int *pwidth, int nspans,
> - int fSorted );
> -static void RACPutImage(DrawablePtr pDraw, GCPtr pGC, int depth,
> - int x, int y, int w, int h, int leftPad,
> - int format, char *pImage );
> -static RegionPtr RACCopyArea(DrawablePtr pSrc, DrawablePtr pDst,
> - GC *pGC, int srcx, int srcy,
> - int width, int height,
> - int dstx, int dsty );
> -static RegionPtr RACCopyPlane(DrawablePtr pSrc, DrawablePtr pDst,
> - GCPtr pGC, int srcx, int srcy,
> - int width, int height, int dstx, int dsty,
> - unsigned long bitPlane );
> -static void RACPolyPoint(DrawablePtr pDraw, GCPtr pGC, int mode,
> - int npt, xPoint *pptInit );
> -static void RACPolylines(DrawablePtr pDraw, GCPtr pGC, int mode,
> - int npt, DDXPointPtr pptInit );
> -static void RACPolySegment(DrawablePtr pDraw, GCPtr pGC, int nseg,
> - xSegment *pSeg );
> -static void RACPolyRectangle(DrawablePtr pDraw, GCPtr pGC, int nRectsInit,
> - xRectangle *pRectsInit );
> -static void RACPolyArc(DrawablePtr pDraw, GCPtr pGC, int narcs,
> - xArc *parcs );
> -static void RACFillPolygon(DrawablePtr pDraw, GCPtr pGC, int shape, int mode,
> - int count, DDXPointPtr ptsIn );
> -static void RACPolyFillRect( DrawablePtr pDraw, GCPtr pGC, int nrectFill,
> - xRectangle *prectInit );
> -static void RACPolyFillArc(DrawablePtr pDraw, GCPtr pGC, int narcs,
> - xArc *parcs );
> -static int RACPolyText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
> - int count, char *chars );
> -static int RACPolyText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
> - int count, unsigned short *chars );
> -static void RACImageText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
> - int count, char *chars );
> -static void RACImageText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
> - int count, unsigned short *chars );
> -static void RACImageGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
> - int yInit, unsigned int nglyph,
> - CharInfoPtr *ppci, pointer pglyphBase );
> -static void RACPolyGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
> - int yInit, unsigned int nglyph,
> - CharInfoPtr *ppci, pointer pglyphBase );
> -static void RACPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDraw,
> - int dx, int dy, int xOrg, int yOrg );
> -/* miSpriteFuncs */
> -static Bool RACSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
> - CursorPtr pCur);
> -static Bool RACSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
> - CursorPtr pCur);
> -static void RACSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
> - CursorPtr pCur, int x, int y);
> -static void RACSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
> - int x, int y);
> -#ifdef RENDER
> -static void RACComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
> - PicturePtr pDst, INT16 xSrc, INT16 ySrc,
> - INT16 xMask, INT16 yMask, INT16 xDst,
> - INT16 yDst, CARD16 width, CARD16 height);
> -static void RACGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
> - PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
> - int nlist, GlyphListPtr list, GlyphPtr *glyphs);
> -static void RACCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color,
> - int nRect, xRectangle *rects);
> -#endif
> -
> -static GCFuncs RACGCFuncs = {
> - RACValidateGC, RACChangeGC, RACCopyGC, RACDestroyGC,
> - RACChangeClip, RACDestroyClip, RACCopyClip
> -};
> -
> -static GCOps RACGCOps = {
> - RACFillSpans, RACSetSpans, RACPutImage, RACCopyArea,
> - RACCopyPlane, RACPolyPoint, RACPolylines, RACPolySegment,
> - RACPolyRectangle, RACPolyArc, RACFillPolygon, RACPolyFillRect,
> - RACPolyFillArc, RACPolyText8, RACPolyText16, RACImageText8,
> - RACImageText16, RACImageGlyphBlt, RACPolyGlyphBlt, RACPushPixels,
> - {NULL} /* devPrivate */
> -};
> -
> -static miPointerSpriteFuncRec RACSpriteFuncs = {
> - RACSpriteRealizeCursor, RACSpriteUnrealizeCursor, RACSpriteSetCursor,
> - RACSpriteMoveCursor
> -};
> -
> -static int RACScreenKeyIndex;
> -static DevPrivateKey RACScreenKey = &RACScreenKeyIndex;
> -static int RACGCKeyIndex;
> -static DevPrivateKey RACGCKey = &RACGCKeyIndex;
> -
> -
> -Bool
> -xf86RACInit(ScreenPtr pScreen, unsigned int flag)
> -{
> - ScrnInfoPtr pScrn;
> - RACScreenPtr pScreenPriv;
> - miPointerScreenPtr PointPriv;
> -#ifdef RENDER
> - PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
> -#endif
> -
> - pScrn = xf86Screens[pScreen->myNum];
> - PointPriv = (miPointerScreenPtr)dixLookupPrivate(&pScreen->devPrivates,
> - miPointerScreenKey);
> - DPRINT_S("RACInit",pScreen->myNum);
> -
> - if (!dixRequestPrivate(RACGCKey, sizeof(RACGCRec)))
> - return FALSE;
> -
> - if (!(pScreenPriv = xalloc(sizeof(RACScreenRec))))
> - return FALSE;
> -
> - dixSetPrivate(&pScreen->devPrivates, RACScreenKey, pScreenPriv);
> -
> - WRAP_SCREEN(CloseScreen, RACCloseScreen);
> - WRAP_SCREEN(SaveScreen, RACSaveScreen);
> - WRAP_SCREEN_COND(CreateGC, RACCreateGC, RAC_FB);
> - WRAP_SCREEN_COND(GetImage, RACGetImage, RAC_FB);
> - WRAP_SCREEN_COND(GetSpans, RACGetSpans, RAC_FB);
> - WRAP_SCREEN_COND(SourceValidate, RACSourceValidate, RAC_FB);
> - WRAP_SCREEN_COND(CopyWindow, RACCopyWindow, RAC_FB);
> - WRAP_SCREEN_COND(ClearToBackground, RACClearToBackground, RAC_FB);
> - WRAP_SCREEN_COND(CreatePixmap, RACCreatePixmap, RAC_FB);
> - WRAP_SCREEN_COND(StoreColors, RACStoreColors, RAC_COLORMAP);
> - WRAP_SCREEN_COND(DisplayCursor, RACDisplayCursor, RAC_CURSOR);
> - WRAP_SCREEN_COND(RealizeCursor, RACRealizeCursor, RAC_CURSOR);
> - WRAP_SCREEN_COND(UnrealizeCursor, RACUnrealizeCursor, RAC_CURSOR);
> - WRAP_SCREEN_COND(RecolorCursor, RACRecolorCursor, RAC_CURSOR);
> - WRAP_SCREEN_COND(SetCursorPosition, RACSetCursorPosition, RAC_CURSOR);
> -#ifdef RENDER
> - WRAP_PICT_COND(Composite,RACComposite,RAC_FB);
> - WRAP_PICT_COND(Glyphs,RACGlyphs,RAC_FB);
> - WRAP_PICT_COND(CompositeRects,RACCompositeRects,RAC_FB);
> -#endif
> - WRAP_SCREEN_INFO_COND(AdjustFrame, RACAdjustFrame, RAC_VIEWPORT);
> - WRAP_SCREEN_INFO(SwitchMode, RACSwitchMode);
> - WRAP_SCREEN_INFO(EnterVT, RACEnterVT);
> - WRAP_SCREEN_INFO(LeaveVT, RACLeaveVT);
> - WRAP_SCREEN_INFO(FreeScreen, RACFreeScreen);
> - WRAP_SPRITE_COND(RAC_CURSOR);
> -
> - return TRUE;
> -}
> -
> -/* Screen funcs */
> -static Bool
> -RACCloseScreen (int i, ScreenPtr pScreen)
> -{
> - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
> - RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> - &pScreen->devPrivates, RACScreenKey);
> - miPointerScreenPtr PointPriv = (miPointerScreenPtr)dixLookupPrivate(
> - &pScreen->devPrivates, miPointerScreenKey);
> -#ifdef RENDER
> - PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
> -#endif
> -
> - DPRINT_S("RACCloseScreen",pScreen->myNum);
> - UNWRAP_SCREEN(CreateGC);
> - UNWRAP_SCREEN(CloseScreen);
> - UNWRAP_SCREEN(GetImage);
> - UNWRAP_SCREEN(GetSpans);
> - UNWRAP_SCREEN(SourceValidate);
> - UNWRAP_SCREEN(CopyWindow);
> - UNWRAP_SCREEN(ClearToBackground);
> - UNWRAP_SCREEN(SaveScreen);
> - UNWRAP_SCREEN(StoreColors);
> - UNWRAP_SCREEN(DisplayCursor);
> - UNWRAP_SCREEN(RealizeCursor);
> - UNWRAP_SCREEN(UnrealizeCursor);
> - UNWRAP_SCREEN(RecolorCursor);
> - UNWRAP_SCREEN(SetCursorPosition);
> -#ifdef RENDER
> - UNWRAP_PICT(Composite);
> - UNWRAP_PICT(Glyphs);
> - UNWRAP_PICT(CompositeRects);
> -#endif
> - UNWRAP_SCREEN_INFO(AdjustFrame);
> - UNWRAP_SCREEN_INFO(SwitchMode);
> - UNWRAP_SCREEN_INFO(EnterVT);
> - UNWRAP_SCREEN_INFO(LeaveVT);
> - UNWRAP_SCREEN_INFO(FreeScreen);
> - UNWRAP_SPRITE;
> -
> - xfree ((pointer) pScreenPriv);
> -
> - if (xf86Screens[pScreen->myNum]->vtSema) {
> - xf86EnterServerState(SETUP);
> - ENABLE;
> - }
> - return (*pScreen->CloseScreen) (i, pScreen);
> -}
> -
> -static void
> -RACGetImage (
> - DrawablePtr pDrawable,
> - int sx, int sy, int w, int h,
> - unsigned int format,
> - unsigned long planemask,
> - char *pdstLine
> - )
> -{
> - ScreenPtr pScreen = pDrawable->pScreen;
> - DPRINT_S("RACGetImage",pScreen->myNum);
> - SCREEN_PROLOG(GetImage);
> - if (xf86Screens[pScreen->myNum]->vtSema) {
> - ENABLE;
> - }
> - (*pScreen->GetImage) (pDrawable, sx, sy, w, h,
> - format, planemask, pdstLine);
> - SCREEN_EPILOG (GetImage, RACGetImage);
> -}
> -
> -static void
> -RACGetSpans (
> - DrawablePtr pDrawable,
> - int wMax,
> - DDXPointPtr ppt,
> - int *pwidth,
> - int nspans,
> - char *pdstStart
> - )
> -{
> - ScreenPtr pScreen = pDrawable->pScreen;
> -
> - DPRINT_S("RACGetSpans",pScreen->myNum);
> - SCREEN_PROLOG (GetSpans);
> - ENABLE;
> - (*pScreen->GetSpans) (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
> - SCREEN_EPILOG (GetSpans, RACGetSpans);
> -}
> -
> -static void
> -RACSourceValidate (
> - DrawablePtr pDrawable,
> - int x, int y, int width, int height )
> -{
> - ScreenPtr pScreen = pDrawable->pScreen;
> - DPRINT_S("RACSourceValidate",pScreen->myNum);
> - SCREEN_PROLOG (SourceValidate);
> - ENABLE;
> - if (pScreen->SourceValidate)
> - (*pScreen->SourceValidate) (pDrawable, x, y, width, height);
> - SCREEN_EPILOG (SourceValidate, RACSourceValidate);
> -}
> -
> -static void
> -RACCopyWindow(
> - WindowPtr pWin,
> - DDXPointRec ptOldOrg,
> - RegionPtr prgnSrc )
> -{
> - ScreenPtr pScreen = pWin->drawable.pScreen;
> -
> - DPRINT_S("RACCopyWindow",pScreen->myNum);
> - SCREEN_PROLOG (CopyWindow);
> - ENABLE;
> - (*pScreen->CopyWindow) (pWin, ptOldOrg, prgnSrc);
> - SCREEN_EPILOG (CopyWindow, RACCopyWindow);
> -}
> -
> -static void
> -RACClearToBackground (
> - WindowPtr pWin,
> - int x, int y,
> - int w, int h,
> - Bool generateExposures )
> -{
> - ScreenPtr pScreen = pWin->drawable.pScreen;
> -
> - DPRINT_S("RACClearToBackground",pScreen->myNum);
> - SCREEN_PROLOG ( ClearToBackground);
> - ENABLE;
> - (*pScreen->ClearToBackground) (pWin, x, y, w, h, generateExposures);
> - SCREEN_EPILOG (ClearToBackground, RACClearToBackground);
> -}
> -
> -static PixmapPtr
> -RACCreatePixmap(ScreenPtr pScreen, int w, int h, int depth, unsigned usage_hint)
> -{
> - PixmapPtr pPix;
> -
> - DPRINT_S("RACCreatePixmap",pScreen->myNum);
> - SCREEN_PROLOG ( CreatePixmap);
> - ENABLE;
> - pPix = (*pScreen->CreatePixmap) (pScreen, w, h, depth, usage_hint);
> - SCREEN_EPILOG (CreatePixmap, RACCreatePixmap);
> -
> - return pPix;
> -}
> -
> -static Bool
> -RACSaveScreen(ScreenPtr pScreen, Bool unblank)
> -{
> - Bool val;
> -
> - DPRINT_S("RACSaveScreen",pScreen->myNum);
> - SCREEN_PROLOG (SaveScreen);
> - ENABLE;
> - val = (*pScreen->SaveScreen) (pScreen, unblank);
> - SCREEN_EPILOG (SaveScreen, RACSaveScreen);
> -
> - return val;
> -}
> -
> -static void
> -RACStoreColors (
> - ColormapPtr pmap,
> - int ndef,
> - xColorItem *pdefs)
> -{
> - ScreenPtr pScreen = pmap->pScreen;
> -
> - DPRINT_S("RACStoreColors",pScreen->myNum);
> - SCREEN_PROLOG (StoreColors);
> - ENABLE;
> - (*pScreen->StoreColors) (pmap,ndef,pdefs);
> -
> - SCREEN_EPILOG ( StoreColors, RACStoreColors);
> -}
> -
> -static void
> -RACRecolorCursor (
> - DeviceIntPtr pDev,
> - ScreenPtr pScreen,
> - CursorPtr pCurs,
> - Bool displayed
> - )
> -{
> - DPRINT_S("RACRecolorCursor",pScreen->myNum);
> - SCREEN_PROLOG (RecolorCursor);
> - ENABLE;
> - (*pScreen->RecolorCursor) (pDev, pScreen,pCurs,displayed);
> -
> - SCREEN_EPILOG ( RecolorCursor, RACRecolorCursor);
> -}
> -
> -static Bool
> -RACRealizeCursor (
> - DeviceIntPtr pDev,
> - ScreenPtr pScreen,
> - CursorPtr pCursor
> - )
> -{
> - Bool val;
> -
> - DPRINT_S("RACRealizeCursor",pScreen->myNum);
> - SCREEN_PROLOG (RealizeCursor);
> - ENABLE;
> - val = (*pScreen->RealizeCursor) (pDev, pScreen,pCursor);
> -
> - SCREEN_EPILOG ( RealizeCursor, RACRealizeCursor);
> - return val;
> -}
> -
> -static Bool
> -RACUnrealizeCursor (
> - DeviceIntPtr pDev,
> - ScreenPtr pScreen,
> - CursorPtr pCursor
> - )
> -{
> - Bool val;
> -
> - DPRINT_S("RACUnrealizeCursor",pScreen->myNum);
> - SCREEN_PROLOG (UnrealizeCursor);
> - ENABLE;
> - val = (*pScreen->UnrealizeCursor) (pDev, pScreen,pCursor);
> -
> - SCREEN_EPILOG ( UnrealizeCursor, RACUnrealizeCursor);
> - return val;
> -}
> -
> -static Bool
> -RACDisplayCursor (
> - DeviceIntPtr pDev,
> - ScreenPtr pScreen,
> - CursorPtr pCursor
> - )
> -{
> - Bool val;
> -
> - DPRINT_S("RACDisplayCursor",pScreen->myNum);
> - SCREEN_PROLOG (DisplayCursor);
> - ENABLE;
> - val = (*pScreen->DisplayCursor) (pDev, pScreen,pCursor);
> -
> - SCREEN_EPILOG ( DisplayCursor, RACDisplayCursor);
> - return val;
> -}
> -
> -static Bool
> -RACSetCursorPosition (
> - DeviceIntPtr pDev,
> - ScreenPtr pScreen,
> - int x, int y,
> - Bool generateEvent)
> -{
> - Bool val;
> -
> - DPRINT_S("RACSetCursorPosition",pScreen->myNum);
> - SCREEN_PROLOG (SetCursorPosition);
> - ENABLE;
> - val = (*pScreen->SetCursorPosition) (pDev, pScreen,x,y,generateEvent);
> -
> - SCREEN_EPILOG ( SetCursorPosition, RACSetCursorPosition);
> - return val;
> -}
> -
> -static void
> -RACAdjustFrame(int index, int x, int y, int flags)
> -{
> - ScreenPtr pScreen = screenInfo.screens[index];
> - RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> - &pScreen->devPrivates, RACScreenKey);
> -
> - DPRINT_S("RACAdjustFrame",index);
> - xf86EnableAccess(xf86Screens[index]);
> -
> - (*pScreenPriv->AdjustFrame)(index, x, y, flags);
> -}
> -
> -static Bool
> -RACSwitchMode(int index, DisplayModePtr mode, int flags)
> -{
> - ScreenPtr pScreen = screenInfo.screens[index];
> - RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> - &pScreen->devPrivates, RACScreenKey);
> -
> - DPRINT_S("RACSwitchMode",index);
> - xf86EnableAccess(xf86Screens[index]);
> -
> - return (*pScreenPriv->SwitchMode)(index, mode, flags);
> -}
> -
> -static Bool
> -RACEnterVT(int index, int flags)
> -{
> - ScreenPtr pScreen = screenInfo.screens[index];
> - RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> - &pScreen->devPrivates, RACScreenKey);
> -
> - DPRINT_S("RACEnterVT",index);
> - xf86EnableAccess(xf86Screens[index]);
> -
> - return (*pScreenPriv->EnterVT)(index, flags);
> -}
> -
> -static void
> -RACLeaveVT(int index, int flags)
> -{
> - ScreenPtr pScreen = screenInfo.screens[index];
> - RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> - &pScreen->devPrivates, RACScreenKey);
> -
> - DPRINT_S("RACLeaveVT",index);
> - xf86EnableAccess(xf86Screens[index]);
> -
> - (*pScreenPriv->LeaveVT)(index, flags);
> -}
> -
> -static void
> -RACFreeScreen(int index, int flags)
> -{
> - ScreenPtr pScreen = screenInfo.screens[index];
> - RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> - &pScreen->devPrivates, RACScreenKey);
> -
> - DPRINT_S("RACFreeScreen",index);
> - xf86EnableAccess(xf86Screens[index]);
> -
> - (*pScreenPriv->FreeScreen)(index, flags);
> -}
> -
> -static Bool
> -RACCreateGC(GCPtr pGC)
> -{
> - ScreenPtr pScreen = pGC->pScreen;
> - RACGCPtr pGCPriv = (RACGCPtr)dixLookupPrivate(&pGC->devPrivates, RACGCKey);
> - Bool ret;
> -
> - DPRINT_S("RACCreateGC",pScreen->myNum);
> - SCREEN_PROLOG(CreateGC);
> -
> - ret = (*pScreen->CreateGC)(pGC);
> -
> - GC_WRAP(pGC);
> - SCREEN_EPILOG(CreateGC,RACCreateGC);
> -
> - return ret;
> -}
> -
> -/* GC funcs */
> -static void
> -RACValidateGC(
> - GCPtr pGC,
> - unsigned long changes,
> - DrawablePtr pDraw )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACValidateGC");
> - (*pGC->funcs->ValidateGC)(pGC, changes, pDraw);
> - GC_WRAP(pGC);
> -}
> -
> -
> -static void
> -RACDestroyGC(GCPtr pGC)
> -{
> - GC_UNWRAP (pGC);
> - DPRINT("RACDestroyGC");
> - (*pGC->funcs->DestroyGC)(pGC);
> - GC_WRAP (pGC);
> -}
> -
> -static void
> -RACChangeGC (
> - GCPtr pGC,
> - unsigned long mask)
> -{
> - GC_UNWRAP (pGC);
> - DPRINT("RACChangeGC");
> - (*pGC->funcs->ChangeGC) (pGC, mask);
> - GC_WRAP (pGC);
> -}
> -
> -static void
> -RACCopyGC (
> - GCPtr pGCSrc,
> - unsigned long mask,
> - GCPtr pGCDst)
> -{
> - GC_UNWRAP (pGCDst);
> - DPRINT("RACCopyGC");
> - (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst);
> - GC_WRAP (pGCDst);
> -}
> -
> -static void
> -RACChangeClip (
> - GCPtr pGC,
> - int type,
> - pointer pvalue,
> - int nrects )
> -{
> - GC_UNWRAP (pGC);
> - DPRINT("RACChangeClip");
> - (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects);
> - GC_WRAP (pGC);
> -}
> -
> -static void
> -RACCopyClip(GCPtr pgcDst, GCPtr pgcSrc)
> -{
> - GC_UNWRAP (pgcDst);
> - DPRINT("RACCopyClip");
> - (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc);
> - GC_WRAP (pgcDst);
> -}
> -
> -static void
> -RACDestroyClip(GCPtr pGC)
> -{
> - GC_UNWRAP (pGC);
> - DPRINT("RACDestroyClip");
> - (* pGC->funcs->DestroyClip)(pGC);
> - GC_WRAP (pGC);
> -}
> -
> -/* GC Ops */
> -static void
> -RACFillSpans(
> - DrawablePtr pDraw,
> - GC *pGC,
> - int nInit,
> - DDXPointPtr pptInit,
> - int *pwidthInit,
> - int fSorted )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACFillSpans");
> - ENABLE_GC;
> - (*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted);
> - GC_WRAP(pGC);
> -}
> -
> -static void
> -RACSetSpans(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - char *pcharsrc,
> - register DDXPointPtr ppt,
> - int *pwidth,
> - int nspans,
> - int fSorted )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACSetSpans");
> - ENABLE_GC;
> - (*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, ppt, pwidth, nspans, fSorted);
> - GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPutImage(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int depth,
> - int x, int y, int w, int h,
> - int leftPad,
> - int format,
> - char *pImage )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACPutImage");
> - ENABLE_GC;
> - (*pGC->ops->PutImage)(pDraw, pGC, depth, x, y, w, h,
> - leftPad, format, pImage);
> - GC_WRAP(pGC);
> -}
> -
> -static RegionPtr
> -RACCopyArea(
> - DrawablePtr pSrc,
> - DrawablePtr pDst,
> - GC *pGC,
> - int srcx, int srcy,
> - int width, int height,
> - int dstx, int dsty )
> -{
> - RegionPtr ret;
> -
> - GC_UNWRAP(pGC);
> - DPRINT("RACCopyArea");
> - ENABLE_GC;
> - ret = (*pGC->ops->CopyArea)(pSrc, pDst,
> - pGC, srcx, srcy, width, height, dstx, dsty);
> - GC_WRAP(pGC);
> - return ret;
> -}
> -
> -static RegionPtr
> -RACCopyPlane(
> - DrawablePtr pSrc,
> - DrawablePtr pDst,
> - GCPtr pGC,
> - int srcx, int srcy,
> - int width, int height,
> - int dstx, int dsty,
> - unsigned long bitPlane )
> -{
> - RegionPtr ret;
> -
> - GC_UNWRAP(pGC);
> - DPRINT("RACCopyPlane");
> - ENABLE_GC;
> - ret = (*pGC->ops->CopyPlane)(pSrc, pDst, pGC, srcx, srcy,
> - width, height, dstx, dsty, bitPlane);
> - GC_WRAP(pGC);
> - return ret;
> -}
> -
> -static void
> -RACPolyPoint(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int mode,
> - int npt,
> - xPoint *pptInit )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACPolyPoint");
> - ENABLE_GC;
> - (*pGC->ops->PolyPoint)(pDraw, pGC, mode, npt, pptInit);
> - GC_WRAP(pGC);
> -}
> -
> -
> -static void
> -RACPolylines(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int mode,
> - int npt,
> - DDXPointPtr pptInit )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACPolylines");
> - ENABLE_GC;
> - (*pGC->ops->Polylines)(pDraw, pGC, mode, npt, pptInit);
> - GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPolySegment(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int nseg,
> - xSegment *pSeg )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACPolySegment");
> - ENABLE_GC;
> - (*pGC->ops->PolySegment)(pDraw, pGC, nseg, pSeg);
> - GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPolyRectangle(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int nRectsInit,
> - xRectangle *pRectsInit )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACPolyRectangle");
> - ENABLE_GC;
> - (*pGC->ops->PolyRectangle)(pDraw, pGC, nRectsInit, pRectsInit);
> - GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPolyArc(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int narcs,
> - xArc *parcs )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACPolyArc");
> - ENABLE_GC;
> - (*pGC->ops->PolyArc)(pDraw, pGC, narcs, parcs);
> - GC_WRAP(pGC);
> -}
> -
> -static void
> -RACFillPolygon(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int shape,
> - int mode,
> - int count,
> - DDXPointPtr ptsIn )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACFillPolygon");
> - ENABLE_GC;
> - (*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, ptsIn);
> - GC_WRAP(pGC);
> -}
> -
> -
> -static void
> -RACPolyFillRect(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int nrectFill,
> - xRectangle *prectInit )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACPolyFillRect");
> - ENABLE_GC;
> - (*pGC->ops->PolyFillRect)(pDraw, pGC, nrectFill, prectInit);
> - GC_WRAP(pGC);
> -}
> -
> -
> -static void
> -RACPolyFillArc(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int narcs,
> - xArc *parcs )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACPolyFillArc");
> - ENABLE_GC;
> - (*pGC->ops->PolyFillArc)(pDraw, pGC, narcs, parcs);
> - GC_WRAP(pGC);
> -}
> -
> -static int
> -RACPolyText8(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int x,
> - int y,
> - int count,
> - char *chars )
> -{
> - int ret;
> -
> - GC_UNWRAP(pGC);
> - DPRINT("RACPolyText8");
> - ENABLE_GC;
> - ret = (*pGC->ops->PolyText8)(pDraw, pGC, x, y, count, chars);
> - GC_WRAP(pGC);
> - return ret;
> -}
> -
> -static int
> -RACPolyText16(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int x,
> - int y,
> - int count,
> - unsigned short *chars )
> -{
> - int ret;
> -
> - GC_UNWRAP(pGC);
> - DPRINT("RACPolyText16");
> - ENABLE_GC;
> - ret = (*pGC->ops->PolyText16)(pDraw, pGC, x, y, count, chars);
> - GC_WRAP(pGC);
> - return ret;
> -}
> -
> -static void
> -RACImageText8(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int x,
> - int y,
> - int count,
> - char *chars )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACImageText8");
> - ENABLE_GC;
> - (*pGC->ops->ImageText8)(pDraw, pGC, x, y, count, chars);
> - GC_WRAP(pGC);
> -}
> -
> -static void
> -RACImageText16(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int x,
> - int y,
> - int count,
> - unsigned short *chars )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACImageText16");
> - ENABLE_GC;
> - (*pGC->ops->ImageText16)(pDraw, pGC, x, y, count, chars);
> - GC_WRAP(pGC);
> -}
> -
> -
> -static void
> -RACImageGlyphBlt(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int xInit, int yInit,
> - unsigned int nglyph,
> - CharInfoPtr *ppci,
> - pointer pglyphBase )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACImageGlyphBlt");
> - ENABLE_GC;
> - (*pGC->ops->ImageGlyphBlt)(pDraw, pGC, xInit, yInit,
> - nglyph, ppci, pglyphBase);
> - GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPolyGlyphBlt(
> - DrawablePtr pDraw,
> - GCPtr pGC,
> - int xInit, int yInit,
> - unsigned int nglyph,
> - CharInfoPtr *ppci,
> - pointer pglyphBase )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACPolyGlyphBlt");
> - ENABLE_GC;
> - (*pGC->ops->PolyGlyphBlt)(pDraw, pGC, xInit, yInit,
> - nglyph, ppci, pglyphBase);
> - GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPushPixels(
> - GCPtr pGC,
> - PixmapPtr pBitMap,
> - DrawablePtr pDraw,
> - int dx, int dy, int xOrg, int yOrg )
> -{
> - GC_UNWRAP(pGC);
> - DPRINT("RACPushPixels");
> - ENABLE_GC;
> - (*pGC->ops->PushPixels)(pGC, pBitMap, pDraw, dx, dy, xOrg, yOrg);
> - GC_WRAP(pGC);
> -}
> -
> -
> -/* miSpriteFuncs */
> -static Bool
> -RACSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCur)
> -{
> - Bool val;
> - SPRITE_PROLOG;
> - DPRINT_S("RACSpriteRealizeCursor",pScreen->myNum);
> - ENABLE;
> - val = PointPriv->spriteFuncs->RealizeCursor(pDev, pScreen, pCur);
> - SPRITE_EPILOG;
> - return val;
> -}
> -
> -static Bool
> -RACSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCur)
> -{
> - Bool val;
> - SPRITE_PROLOG;
> - DPRINT_S("RACSpriteUnrealizeCursor",pScreen->myNum);
> - ENABLE;
> - val = PointPriv->spriteFuncs->UnrealizeCursor(pDev, pScreen, pCur);
> - SPRITE_EPILOG;
> - return val;
> -}
> -
> -static void
> -RACSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
> - CursorPtr pCur, int x, int y)
> -{
> - SPRITE_PROLOG;
> - DPRINT_S("RACSpriteSetCursor",pScreen->myNum);
> - ENABLE;
> - PointPriv->spriteFuncs->SetCursor(pDev, pScreen, pCur, x, y);
> - SPRITE_EPILOG;
> -}
> -
> -static void
> -RACSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
> -{
> - SPRITE_PROLOG;
> - DPRINT_S("RACSpriteMoveCursor",pScreen->myNum);
> - ENABLE;
> - PointPriv->spriteFuncs->MoveCursor(pDev, pScreen, x, y);
> - SPRITE_EPILOG;
> -}
> -
> -#ifdef RENDER
> -static void
> -RACComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
> - PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask,
> - INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width,
> - CARD16 height)
> -{
> - ScreenPtr pScreen = pDst->pDrawable->pScreen;
> - PictureScreenPtr ps = GetPictureScreen(pScreen);
> -
> - PICTURE_PROLOGUE(Composite);
> -
> - ENABLE;
> - (*ps->Composite) (op, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask, xDst,
> - yDst, width, height);
> -
> - PICTURE_EPILOGUE(Composite, RACComposite);
> -}
> -
> -static void
> -RACGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
> - PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlist,
> - GlyphListPtr list, GlyphPtr *glyphs)
> -{
> - ScreenPtr pScreen = pDst->pDrawable->pScreen;
> - PictureScreenPtr ps = GetPictureScreen(pScreen);
> -
> - PICTURE_PROLOGUE(Glyphs);
> -
> - ENABLE;
> - (*ps->Glyphs)(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
> -
> - PICTURE_EPILOGUE (Glyphs, RACGlyphs);
> -}
> -
> -static void
> -RACCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color, int nRect,
> - xRectangle *rects)
> -{
> - ScreenPtr pScreen = pDst->pDrawable->pScreen;
> - PictureScreenPtr ps = GetPictureScreen(pScreen);
> -
> - PICTURE_PROLOGUE(CompositeRects);
> -
> - ENABLE;
> - (*ps->CompositeRects)(op, pDst, color, nRect, rects);
> -
> - PICTURE_EPILOGUE (CompositeRects, RACCompositeRects);
> -}
> -#endif
> -
> diff --git a/hw/xfree86/common/xf86RAC.h b/hw/xfree86/common/xf86RAC.h
> deleted file mode 100644
> index 881d004..0000000
> --- a/hw/xfree86/common/xf86RAC.h
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -
> -#ifndef __XF86RAC_H
> -#define __XF86RAC_H 1
> -
> -#include "screenint.h"
> -#include "misc.h"
> -#include "xf86.h"
> -
> -extern _X_EXPORT Bool xf86RACInit(ScreenPtr pScreen, unsigned int flag);
> -
> -/* flags */
> -#define RAC_FB 0x01
> -#define RAC_CURSOR 0x02
> -#define RAC_COLORMAP 0x04
> -#define RAC_VIEWPORT 0x08
> -
> -#endif /* __XF86RAC_H */
> diff --git a/hw/xfree86/common/xf86Resources.h b/hw/xfree86/common/xf86Resources.h
> deleted file mode 100644
> index 012fa69..0000000
> --- a/hw/xfree86/common/xf86Resources.h
> +++ /dev/null
> @@ -1,137 +0,0 @@
> -
> -/*
> - * Copyright (c) 1999-2002 by The XFree86 Project, Inc.
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a
> - * copy of this software and associated documentation files (the "Software"),
> - * to deal in the Software without restriction, including without limitation
> - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> - * and/or sell copies of the Software, and to permit persons to whom the
> - * Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included in
> - * all copies or substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
> - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> - * OTHER DEALINGS IN THE SOFTWARE.
> - *
> - * Except as contained in this notice, the name of the copyright holder(s)
> - * and author(s) shall not be used in advertising or otherwise to promote
> - * the sale, use or other dealings in this Software without prior written
> - * authorization from the copyright holder(s) and author(s).
> - */
> -
> -#ifndef _XF86_RESOURCES_H
> -
> -#define _XF86_RESOURCES_H
> -
> -#include "xf86str.h"
> -
> -#define _END {ResEnd,0,0}
> -
> -#define _VGA_EXCLUSIVE \
> - {ResExcMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> - {ResExcMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> - {ResExcMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> - {ResExcIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
> - {ResExcIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
> -
> -#define _VGA_SHARED \
> - {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> - {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> - {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> - {ResShrIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
> - {ResShrIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
> -
> -#define _VGA_SHARED_MEM \
> - {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> - {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> - {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF}
> -
> -#define _VGA_SHARED_IO \
> - {ResShrIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
> - {ResShrIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
> -
> -/*
> - * Exclusive unused VGA: resources unneeded but cannot be disabled.
> - * Like old Millennium.
> - */
> -#define _VGA_EXCLUSIVE_UNUSED \
> - {ResExcUusdMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> - {ResExcUusdMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> - {ResExcUusdMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> - {ResExcUusdIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
> - {ResExcUusdIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
> -
> -/*
> - * Shared unused VGA: resources unneeded but cannot be disabled
> - * independently. This is used to determine if a device needs RAC.
> - */
> -#define _VGA_SHARED_UNUSED \
> - {ResShrUusdMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> - {ResShrUusdMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> - {ResShrUusdMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> - {ResShrUusdIoBlock | ResBios | ResBus, 0x03B0, 0x03BB},\
> - {ResShrUusdIoBlock | ResBios | ResBus, 0x03C0, 0x03DF}
> -
> -/*
> - * Sparse versions of the above for those adapters that respond to all ISA
> - * aliases of VGA ports.
> - */
> -#define _VGA_EXCLUSIVE_SPARSE \
> - {ResExcMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> - {ResExcMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> - {ResExcMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> - {ResExcIoSparse | ResBios | ResBus, 0x03B0, 0x03F8},\
> - {ResExcIoSparse | ResBios | ResBus, 0x03B8, 0x03FC},\
> - {ResExcIoSparse | ResBios | ResBus, 0x03C0, 0x03E0}
> -
> -#define _VGA_SHARED_SPARSE \
> - {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> - {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> - {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> - {ResShrIoSparse | ResBios | ResBus, 0x03B0, 0x03F8},\
> - {ResShrIoSparse | ResBios | ResBus, 0x03B8, 0x03FC},\
> - {ResShrIoSparse | ResBios | ResBus, 0x03C0, 0x03E0}
> -
> -#define _8514_EXCLUSIVE \
> - {ResExcIoSparse | ResBios | ResBus, 0x02E8, 0x03F8}
> -
> -#define _8514_SHARED \
> - {ResShrIoSparse | ResBios | ResBus, 0x02E8, 0x03F8}
> -
> -/* Predefined resources */
> -extern _X_EXPORT resRange resVgaExclusive[];
> -extern _X_EXPORT resRange resVgaShared[];
> -extern _X_EXPORT resRange resVgaIoShared[];
> -extern _X_EXPORT resRange resVgaMemShared[];
> -extern _X_EXPORT resRange resVgaUnusedExclusive[];
> -extern _X_EXPORT resRange resVgaUnusedShared[];
> -extern _X_EXPORT resRange resVgaSparseExclusive[];
> -extern _X_EXPORT resRange resVgaSparseShared[];
> -extern _X_EXPORT resRange res8514Exclusive[];
> -extern _X_EXPORT resRange res8514Shared[];
> -
> -/* Less misleading aliases for xf86SetOperatingState() */
> -#define resVgaMem resVgaMemShared
> -#define resVgaIo resVgaIoShared
> -#define resVga resVgaShared
> -
> -/* Old style names */
> -#define RES_EXCLUSIVE_VGA resVgaExclusive
> -#define RES_SHARED_VGA resVgaShared
> -#define RES_EXCLUSIVE_8514 res8514Exclusive
> -#define RES_SHARED_8514 res8514Shared
> -
> -#define _PCI_AVOID_PC_STYLE \
> - {ResExcIoSparse | ResBus, 0x0100, 0x0300},\
> - {ResExcIoSparse | ResBus, 0x0200, 0x0200},\
> - {ResExcMemBlock | ResBus, 0xA0000,0xFFFFF}
> -
> -#define RES_UNDEFINED NULL
> -#endif
> diff --git a/hw/xfree86/common/xf86fbBus.c b/hw/xfree86/common/xf86fbBus.c
> index 90e6eb0..059e378 100644
> --- a/hw/xfree86/common/xf86fbBus.c
> +++ b/hw/xfree86/common/xf86fbBus.c
> @@ -40,16 +40,12 @@
> #include "os.h"
> #include "xf86.h"
> #include "xf86Priv.h"
> -#include "xf86Resources.h"
>
> #include "xf86Bus.h"
>
> #define XF86_OS_PRIVS
> -#define NEED_OS_RAC_PROTOS
> #include "xf86_OSproc.h"
>
> -#include "xf86RAC.h"
> -
> Bool fbSlotClaimed = FALSE;
>
> int
> @@ -73,10 +69,6 @@ xf86ClaimFbSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
> p->active = active;
> p->inUse = FALSE;
> xf86AddDevToEntity(num, dev);
> - p->access = xnfcalloc(1,sizeof(EntityAccessRec));
> - p->access->fallback = &AccessNULL;
> - p->access->pAccess = &AccessNULL;
> - p->busAcc = NULL;
>
> fbSlotClaimed = TRUE;
> return num;
> diff --git a/hw/xfree86/common/xf86noBus.c b/hw/xfree86/common/xf86noBus.c
> index e7d4442..0b96349 100644
> --- a/hw/xfree86/common/xf86noBus.c
> +++ b/hw/xfree86/common/xf86noBus.c
> @@ -40,16 +40,12 @@
> #include "os.h"
> #include "xf86.h"
> #include "xf86Priv.h"
> -#include "xf86Resources.h"
>
> #include "xf86Bus.h"
>
> #define XF86_OS_PRIVS
> -#define NEED_OS_RAC_PROTOS
> #include "xf86_OSproc.h"
>
> -#include "xf86RAC.h"
> -
> int
> xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
> {
> @@ -64,10 +60,6 @@ xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
> p->active = active;
> p->inUse = FALSE;
> xf86AddDevToEntity(num, dev);
> - p->access = xnfcalloc(1,sizeof(EntityAccessRec));
> - p->access->fallback = &AccessNULL;
> - p->access->pAccess = &AccessNULL;
> - p->busAcc = NULL;
>
> return num;
> }
> diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
> index 9a9ae40..8f00bc8 100644
> --- a/hw/xfree86/common/xf86pciBus.c
> +++ b/hw/xfree86/common/xf86pciBus.c
> @@ -41,16 +41,13 @@
> #include "Pci.h"
> #include "xf86.h"
> #include "xf86Priv.h"
> -#include "xf86Resources.h"
>
> /* Bus-specific headers */
> #include "xf86Bus.h"
>
> #define XF86_OS_PRIVS
> -#define NEED_OS_RAC_PROTOS
> #include "xf86_OSproc.h"
>
> -#include "xf86RAC.h"
>
> /* Bus-specific globals */
> Bool pciSlotClaimed = FALSE;
> @@ -108,241 +105,6 @@ xf86FormatPciBusNumber(int busnum, char *buffer)
> }
>
> /*
> - * IO enable/disable related routines for PCI
> - */
> -#define pArg ((pciArg*)arg)
> -#define SETBITS PCI_CMD_IO_ENABLE
> -static void
> -pciIoAccessEnable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> - ErrorF("pciIoAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> - pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
> - pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -
> -static void
> -pciIoAccessDisable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> - ErrorF("pciIoAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> - pArg->ctrl &= ~SETBITS;
> - pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -
> -#undef SETBITS
> -#define SETBITS (PCI_CMD_IO_ENABLE | PCI_CMD_MEM_ENABLE)
> -static void
> -pciIo_MemAccessEnable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> - ErrorF("pciIo_MemAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> - pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
> - pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -
> -static void
> -pciIo_MemAccessDisable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> - ErrorF("pciIo_MemAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> - pArg->ctrl &= ~SETBITS;
> - pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -
> -#undef SETBITS
> -#define SETBITS (PCI_CMD_MEM_ENABLE)
> -static void
> -pciMemAccessEnable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> - ErrorF("pciMemAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> - pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
> - pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -
> -static void
> -pciMemAccessDisable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> - ErrorF("pciMemAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> - pArg->ctrl &= ~SETBITS;
> - pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -#undef SETBITS
> -#undef pArg
> -
> -
> -/* move to OS layer */
> -#define MASKBITS (PCI_PCI_BRIDGE_VGA_EN | PCI_PCI_BRIDGE_MASTER_ABORT_EN)
> -static void
> -pciBusAccessEnable(BusAccPtr ptr)
> -{
> -#if 0
> - struct pci_device * const dev = ptr->busdep.pci.dev;
> - uint16_t ctrl;
> -
> -#ifdef DEBUG
> - ErrorF("pciBusAccessEnable: bus=%d\n", ptr->busdep.pci.bus);
> -#endif
> - pci_device_cfg_read_u16( dev, & ctrl, PCI_PCI_BRIDGE_CONTROL_REG );
> - if ((ctrl & MASKBITS) != PCI_PCI_BRIDGE_VGA_EN) {
> - ctrl = (ctrl | PCI_PCI_BRIDGE_VGA_EN) &
> - ~(PCI_PCI_BRIDGE_MASTER_ABORT_EN | PCI_PCI_BRIDGE_SECONDARY_RESET);
> - pci_device_cfg_write_u16(dev, ctrl, PCI_PCI_BRIDGE_CONTROL_REG);
> - }
> -#endif
> -}
> -
> -/* move to OS layer */
> -static void
> -pciBusAccessDisable(BusAccPtr ptr)
> -{
> -#if 0
> - struct pci_device * const dev = ptr->busdep.pci.dev;
> - uint16_t ctrl;
> -
> -#ifdef DEBUG
> - ErrorF("pciBusAccessDisable: bus=%d\n", ptr->busdep.pci.bus);
> -#endif
> - pci_device_cfg_read_u16( dev, & ctrl, PCI_PCI_BRIDGE_CONTROL_REG );
> - if (ctrl & MASKBITS) {
> - ctrl &= ~(MASKBITS | PCI_PCI_BRIDGE_SECONDARY_RESET);
> - pci_device_cfg_write_u16(dev, ctrl, PCI_PCI_BRIDGE_CONTROL_REG);
> - }
> -#endif
> -}
> -#undef MASKBITS
> -
> -static void
> -pciSetBusAccess(BusAccPtr ptr)
> -{
> -#if 0
> -#ifdef DEBUG
> - ErrorF("pciSetBusAccess: route VGA to bus %d\n", ptr->busdep.pci.bus);
> -#endif
> -
> - if (!ptr->primary && !ptr->current)
> - return;
> -
> - if (ptr->current && ptr->current->disable_f)
> - (*ptr->current->disable_f)(ptr->current);
> - ptr->current = NULL;
> -
> - /* walk down */
> - while (ptr->primary) { /* No enable for root bus */
> - if (ptr != ptr->primary->current) {
> - if (ptr->primary->current && ptr->primary->current->disable_f)
> - (*ptr->primary->current->disable_f)(ptr->primary->current);
> - if (ptr->enable_f)
> - (*ptr->enable_f)(ptr);
> - ptr->primary->current = ptr;
> - }
> - ptr = ptr->primary;
> - }
> -#endif
> -}
> -
> -/* move to OS layer */
> -static void
> -savePciState( struct pci_device * dev, pciSavePtr ptr )
> -{
> -#if 0
> - int i;
> -
> - pci_device_cfg_read_u32( dev, & ptr->command, PCI_CMD_STAT_REG );
> -
> - for ( i = 0; i < 6; i++ ) {
> - pci_device_cfg_read_u32( dev, & ptr->base[i],
> - PCI_CMD_BASE_REG + (i * 4) );
> - }
> -
> - pci_device_cfg_read_u32( dev, & ptr->biosBase, PCI_CMD_BIOS_REG );
> -#endif
> -}
> -
> -/* move to OS layer */
> -#if 0
> -static void
> -restorePciState( struct pci_device * dev, pciSavePtr ptr)
> -{
> - int i;
> -
> - /* disable card before setting anything */
> - pci_device_cfg_write_bits(dev, PCI_CMD_MEM_ENABLE | PCI_CMD_IO_ENABLE, 0,
> - PCI_CMD_STAT_REG);
> -
> - pci_device_cfg_write_u32(dev, ptr->biosBase, PCI_CMD_BIOS_REG);
> -
> - for ( i = 0; i < 6; i++ ) {
> - pci_device_cfg_write_u32(dev, ptr->base[i],
> - PCI_CMD_BASE_REG + (i * 4));
> - }
> -
> - pci_device_cfg_write_u32(dev, ptr->command, PCI_CMD_STAT_REG);
> -}
> -#endif
> -
> -/* move to OS layer */
> -static void
> -savePciBusState(BusAccPtr ptr)
> -{
> -#if 0
> - struct pci_device * const dev = ptr->busdep.pci.dev;
> - uint16_t temp;
> -
> - pci_device_cfg_read_u16( dev, & temp, PCI_PCI_BRIDGE_CONTROL_REG );
> - ptr->busdep.pci.save.control = temp & ~PCI_PCI_BRIDGE_SECONDARY_RESET;
> -
> - /* Allow master aborts to complete normally on non-root buses */
> - if ( ptr->busdep.pci.save.control & PCI_PCI_BRIDGE_MASTER_ABORT_EN ) {
> - temp = ptr->busdep.pci.save.control & ~PCI_PCI_BRIDGE_MASTER_ABORT_EN;
> - pci_device_cfg_read_u16( dev, & temp, PCI_PCI_BRIDGE_CONTROL_REG );
> - }
> -#endif
> -}
> -
> -/* move to OS layer */
> -#define MASKBITS (PCI_PCI_BRIDGE_VGA_EN | PCI_PCI_BRIDGE_MASTER_ABORT_EN)
> -static void
> -restorePciBusState(BusAccPtr ptr)
> -{
> -#if 0
> - struct pci_device * const dev = ptr->busdep.pci.dev;
> - uint16_t ctrl;
> -
> - /* Only restore the bits we've changed (and don't cause resets) */
> - pci_device_cfg_read_u16( dev, & ctrl, PCI_PCI_BRIDGE_CONTROL_REG );
> -
> - if ((ctrl ^ ptr->busdep.pci.save.control) & MASKBITS) {
> - ctrl &= ~(MASKBITS | PCI_PCI_BRIDGE_SECONDARY_RESET);
> - ctrl |= ptr->busdep.pci.save.control & MASKBITS;
> - pci_device_cfg_write_u16(dev, ctrl, PCI_PCI_BRIDGE_CONTROL_REG);
> - }
> -#endif
> -}
> -#undef MASKBITS
> -
> -
> -/*
> * xf86Bus.c interface
> */
>
> @@ -482,19 +244,8 @@ initPciState(void)
> pvp->user_data = (intptr_t) pcaccp;
>
> pcaccp->arg.dev = pvp;
> - pcaccp->ioAccess.AccessDisable = pciIoAccessDisable;
> - pcaccp->ioAccess.AccessEnable = pciIoAccessEnable;
> - pcaccp->ioAccess.arg = &pcaccp->arg;
> - pcaccp->io_memAccess.AccessDisable = pciIo_MemAccessDisable;
> - pcaccp->io_memAccess.AccessEnable = pciIo_MemAccessEnable;
> - pcaccp->io_memAccess.arg = &pcaccp->arg;
> - pcaccp->memAccess.AccessDisable = pciMemAccessDisable;
> - pcaccp->memAccess.AccessEnable = pciMemAccessEnable;
> - pcaccp->memAccess.arg = &pcaccp->arg;
> -
> pcaccp->ctrl = PCISHAREDIOCLASSES(pvp->device_class);
>
> - savePciState(pvp, &pcaccp->save);
> pcaccp->arg.ctrl = pcaccp->save.command;
> }
> }
> @@ -529,7 +280,7 @@ initPciBusState(void)
> };
> struct pci_device *dev;
> struct pci_device_iterator *iter;
> - BusAccPtr pbap, pbap_tmp;
> + BusAccPtr pbap;
>
> iter = pci_id_match_iterator_create(& bridge_match);
> while((dev = pci_device_next(iter)) != NULL) {
> @@ -538,7 +289,6 @@ initPciBusState(void)
> int secondary;
> int subordinate;
>
> -
> pci_device_get_bridge_buses(dev, &primary, &secondary, &subordinate);
>
> pbap = xnfcalloc(1,sizeof(BusAccRec));
> @@ -547,8 +297,6 @@ initPciBusState(void)
> pbap->busdep_type = BUS_PCI;
> pbap->busdep.pci.dev = dev;
>
> - pbap->set_f = pciSetBusAccess;
> -
> switch (subclass) {
> case PCI_SUBCLASS_BRIDGE_HOST:
> pbap->type = BUS_PCI;
> @@ -556,142 +304,12 @@ initPciBusState(void)
> case PCI_SUBCLASS_BRIDGE_PCI:
> case PCI_SUBCLASS_BRIDGE_CARDBUS:
> pbap->type = BUS_PCI;
> - pbap->save_f = savePciBusState;
> - pbap->restore_f = restorePciBusState;
> - pbap->enable_f = pciBusAccessEnable;
> - pbap->disable_f = pciBusAccessDisable;
> - savePciBusState(pbap);
> break;
> }
> - pbap->next = xf86BusAccInfo;
> - xf86BusAccInfo = pbap;
> }
>
> pci_iterator_destroy(iter);
>
> - for (pbap = xf86BusAccInfo; pbap; pbap = pbap->next) {
> - pbap->primary = NULL;
> -
> - if (pbap->busdep_type == BUS_PCI
> - && pbap->busdep.pci.primary_bus > -1) {
> - pbap_tmp = xf86BusAccInfo;
> - while (pbap_tmp) {
> - if (pbap_tmp->busdep_type == BUS_PCI &&
> - pbap_tmp->busdep.pci.bus == pbap->busdep.pci.primary_bus) {
> - /* Don't create loops */
> - if (pbap == pbap_tmp)
> - break;
> - pbap->primary = pbap_tmp;
> - break;
> - }
> - pbap_tmp = pbap_tmp->next;
> - }
> - }
> - }
> -}
> -
> -void
> -PciStateEnter(void)
> -{
> -#if 0
> - unsigned i;
> -
> - if (xf86PciVideoInfo == NULL)
> - return;
> -
> - for ( i = 0 ; xf86PciVideoInfo[i] != NULL ; i++ ) {
> - pciAccPtr paccp = (pciAccPtr) xf86PciVideoInfo[i]->user_data;
> -
> - if ( (paccp != NULL) && paccp->ctrl ) {
> - savePciState(paccp->arg.dev, &paccp->save);
> - restorePciState(paccp->arg.dev, &paccp->restore);
> - paccp->arg.ctrl = paccp->restore.command;
> - }
> - }
> -#endif
> -}
> -
> -void
> -PciBusStateEnter(void)
> -{
> -#if 0
> - BusAccPtr pbap = xf86BusAccInfo;
> -
> - while (pbap) {
> - if (pbap->save_f)
> - pbap->save_f(pbap);
> - pbap = pbap->next;
> - }
> -#endif
> -}
> -
> -void
> -PciStateLeave(void)
> -{
> -#if 0
> - unsigned i;
> -
> - if (xf86PciVideoInfo == NULL)
> - return;
> -
> - for ( i = 0 ; xf86PciVideoInfo[i] != NULL ; i++ ) {
> - pciAccPtr paccp = (pciAccPtr) xf86PciVideoInfo[i]->user_data;
> -
> - if ( (paccp != NULL) && paccp->ctrl ) {
> - savePciState(paccp->arg.dev, &paccp->restore);
> - restorePciState(paccp->arg.dev, &paccp->save);
> - }
> - }
> -#endif
> -}
> -
> -void
> -PciBusStateLeave(void)
> -{
> -#if 0
> - BusAccPtr pbap = xf86BusAccInfo;
> -
> - while (pbap) {
> - if (pbap->restore_f)
> - pbap->restore_f(pbap);
> - pbap = pbap->next;
> - }
> -#endif
> -}
> -
> -void
> -DisablePciAccess(void)
> -{
> -#if 0
> - unsigned i;
> -
> - if (xf86PciVideoInfo == NULL)
> - return;
> -
> - for ( i = 0 ; xf86PciVideoInfo[i] != NULL ; i++ ) {
> - pciAccPtr paccp = (pciAccPtr) xf86PciVideoInfo[i]->user_data;
> -
> - if ( (paccp != NULL) && paccp->ctrl ) {
> - pciIo_MemAccessDisable(paccp->io_memAccess.arg);
> - }
> - }
> -#endif
> -}
> -
> -void
> -DisablePciBusAccess(void)
> -{
> -#if 0
> - BusAccPtr pbap = xf86BusAccInfo;
> -
> - while (pbap) {
> - if (pbap->disable_f)
> - pbap->disable_f(pbap);
> - if (pbap->primary)
> - pbap->primary->current = NULL;
> - pbap = pbap->next;
> - }
> -#endif
> }
>
> /*
> @@ -704,10 +322,6 @@ xf86ClaimPciSlot(struct pci_device * d, DriverPtr drvp,
> int chipset, GDevPtr dev, Bool active)
> {
> EntityPtr p = NULL;
> - pciAccPtr paccp = (pciAccPtr) d->user_data;
> - BusAccPtr pbap = xf86BusAccInfo;
> - const unsigned bus = PCI_MAKE_BUS(d->domain, d->bus);
> -
> int num;
>
> if (xf86CheckPciSlot(d)) {
> @@ -721,25 +335,6 @@ xf86ClaimPciSlot(struct pci_device * d, DriverPtr drvp,
> p->inUse = FALSE;
> if (dev)
> xf86AddDevToEntity(num, dev);
> - /* Here we initialize the access structure */
> - p->access = xnfcalloc(1,sizeof(EntityAccessRec));
> - if (paccp != NULL) {
> - p->access->fallback = & paccp->io_memAccess;
> - p->access->pAccess = & paccp->io_memAccess;
> - paccp->ctrl = TRUE; /* mark control if not already */
> - }
> - else {
> - p->access->fallback = &AccessNULL;
> - p->access->pAccess = &AccessNULL;
> - }
> -
> - p->busAcc = NULL;
> - while (pbap) {
> - if (pbap->type == BUS_PCI && pbap->busdep.pci.bus == bus)
> - p->busAcc = pbap;
> - pbap = pbap->next;
> - }
> -
> pciSlotClaimed = TRUE;
>
> if (active) {
> @@ -923,21 +518,3 @@ xf86CheckPciSlot(const struct pci_device *d)
> }
>
>
> -void
> -pciConvertRange2Host(int entityIndex, resRange *pRange)
> -{
> - struct pci_device *const pvp = xf86GetPciInfoForEntity(entityIndex);
> - const PCITAG tag = PCI_MAKE_TAG(PCI_MAKE_BUS(pvp->domain, pvp->bus),
> - pvp->dev, pvp->func);
> -
> - if (pvp == NULL) {
> - return;
> - }
> -
> - if (!(pRange->type & ResBus))
> - return;
> -
> - /* Set domain number */
> - pRange->type &= ~(ResDomain | ResBus);
> - pRange->type |= pvp->domain << 24;
> -}
> diff --git a/hw/xfree86/common/xf86pciBus.h b/hw/xfree86/common/xf86pciBus.h
> index 1cbfa38..ec9a164 100644
> --- a/hw/xfree86/common/xf86pciBus.h
> +++ b/hw/xfree86/common/xf86pciBus.h
> @@ -48,9 +48,6 @@ typedef struct {
>
> typedef struct {
> pciArg arg;
> - xf86AccessRec ioAccess;
> - xf86AccessRec io_memAccess;
> - xf86AccessRec memAccess;
> pciSave save;
> pciSave restore;
> Bool ctrl;
> @@ -69,6 +66,5 @@ void PciStateEnter(void);
> void PciBusStateEnter(void);
> void PciStateLeave(void);
> void PciBusStateLeave(void);
> -void pciConvertRange2Host(int entityIndex, resRange *pRange);
>
> #endif /* _XF86_PCI_BUS_H */
> diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h
> index 3b1346f..a961fa9 100644
> --- a/hw/xfree86/common/xf86str.h
> +++ b/hw/xfree86/common/xf86str.h
> @@ -556,145 +556,6 @@ typedef enum {
> PM_NONE
> } pmWait;
>
> -/*
> - * The IO access enabler struct. This contains the address for
> - * the IOEnable/IODisable funcs for their specific bus along
> - * with a pointer to data needed by them
> - */
> -typedef struct _AccessRec {
> - void (*AccessDisable)(void *arg);
> - void (*AccessEnable)(void *arg);
> - void *arg;
> -} xf86AccessRec, *xf86AccessPtr;
> -
> -typedef struct {
> - xf86AccessPtr mem;
> - xf86AccessPtr io;
> - xf86AccessPtr io_mem;
> -} xf86SetAccessFuncRec, *xf86SetAccessFuncPtr;
> -
> -/* bus-access-related types */
> -typedef enum {
> - NONE,
> - IO,
> - MEM_IO,
> - MEM
> -} resType;
> -
> -typedef struct _EntityAccessRec {
> - xf86AccessPtr fallback;
> - xf86AccessPtr pAccess;
> - resType rt;
> - pointer busAcc;
> - struct _EntityAccessRec *next;
> -} EntityAccessRec, *EntityAccessPtr;
> -
> -typedef struct _CurrAccRec {
> - EntityAccessPtr pMemAccess;
> - EntityAccessPtr pIoAccess;
> -} xf86CurrentAccessRec, *xf86CurrentAccessPtr;
> -
> -/* new RAC */
> -
> -/* Resource Type values */
> -#define ResNone ((unsigned long)(-1))
> -
> -#define ResMem 0x0001
> -#define ResIo 0x0002
> -#define ResPhysMask 0x000F
> -
> -#define ResExclusive 0x0010
> -#define ResShared 0x0020
> -#define ResAny 0x0040
> -#define ResAccMask 0x0070
> -#define ResUnused 0x0080
> -
> -#define ResUnusedOpr 0x0100
> -#define ResDisableOpr 0x0200
> -#define ResOprMask 0x0300
> -
> -#define ResBlock 0x0400
> -#define ResSparse 0x0800
> -#define ResExtMask 0x0C00
> -
> -#define ResEstimated 0x001000
> -#define ResInit 0x002000
> -#define ResBios 0x004000
> -#define ResMiscMask 0x00F000
> -
> -#define ResBus 0x010000
> -
> -#if defined(__alpha__) && defined(linux)
> -# define ResDomain 0x1ff000000ul
> -#else
> -# define ResDomain 0xff000000ul
> -#endif
> -#define ResTypeMask (ResPhysMask | ResDomain) /* For conflict check */
> -
> -#define ResEnd ResNone
> -
> -#define ResExcMemBlock (ResMem | ResExclusive | ResBlock)
> -#define ResExcIoBlock (ResIo | ResExclusive | ResBlock)
> -#define ResShrMemBlock (ResMem | ResShared | ResBlock)
> -#define ResShrIoBlock (ResIo | ResShared | ResBlock)
> -#define ResExcUusdMemBlock (ResMem | ResExclusive | ResUnused | ResBlock)
> -#define ResExcUusdIoBlock (ResIo | ResExclusive | ResUnused | ResBlock)
> -#define ResShrUusdMemBlock (ResMem | ResShared | ResUnused | ResBlock)
> -#define ResShrUusdIoBlock (ResIo | ResShared | ResUnused | ResBlock)
> -#define ResExcUusdMemSparse (ResMem | ResExclusive | ResUnused | ResSparse)
> -#define ResExcUusdIoSparse (ResIo | ResExclusive | ResUnused | ResSparse)
> -#define ResShrUusdMemSparse (ResMem | ResShared | ResUnused | ResSparse)
> -#define ResShrUusdIoSparse (ResIo | ResShared | ResUnused | ResSparse)
> -
> -#define ResExcMemSparse (ResMem | ResExclusive | ResSparse)
> -#define ResExcIoSparse (ResIo | ResExclusive | ResSparse)
> -#define ResShrMemSparse (ResMem | ResShared | ResSparse)
> -#define ResShrIoSparse (ResIo | ResShared | ResSparse)
> -#define ResUusdMemSparse (ResMem | ResUnused | ResSparse)
> -#define ResUusdIoSparse (ResIo | ResUnused | ResSparse)
> -
> -#define ResIsMem(r) (((r)->type & ResPhysMask) == ResMem)
> -#define ResIsIo(r) (((r)->type & ResPhysMask) == ResIo)
> -#define ResIsExclusive(r) (((r)->type & ResAccMask) == ResExclusive)
> -#define ResIsShared(r) (((r)->type & ResAccMask) == ResShared)
> -#define ResIsUnused(r) (((r)->type & ResAccMask) == ResUnused)
> -#define ResIsBlock(r) (((r)->type & ResExtMask) == ResBlock)
> -#define ResIsSparse(r) (((r)->type & ResExtMask) == ResSparse)
> -#define ResIsEstimated(r) (((r)->type & ResMiscMask) == ResEstimated)
> -
> -typedef struct {
> - unsigned long type; /* shared, exclusive, unused etc. */
> - memType a;
> - memType b;
> -} resRange, *resList;
> -
> -#define RANGE_TYPE(type, domain) \
> - (((unsigned long)(domain) << 24) | ((type) & ~ResBus))
> -#define RANGE(r,u,v,t) {\
> - (r).a = (u);\
> - (r).b = (v);\
> - (r).type = (t);\
> - }
> -
> -#define rBase a
> -#define rMask b
> -#define rBegin a
> -#define rEnd b
> -
> -/* resource record */
> -typedef struct _resRec *resPtr;
> -typedef struct _resRec {
> - resRange val;
> - int entityIndex; /* who owns the resource */
> - resPtr next;
> -} resRec;
> -
> -#define sparse_base val.rBase
> -#define sparse_mask val.rMask
> -#define block_begin val.rBegin
> -#define block_end val.rEnd
> -#define res_type val.type
> -
> typedef struct _PciChipsets {
> /**
> * Key used to match this device with its name in an array of
> @@ -720,10 +581,6 @@ typedef struct _PciChipsets {
> */
> int PCIid;
>
> - /**
> - * Resources associated with this type of device.
> - */
> - resRange *resList;
> } PciChipsets;
>
> /* Entity properties */
> @@ -734,7 +591,6 @@ typedef struct _entityInfo {
> BusRec location;
> int chipset;
> Bool active;
> - resPtr resources;
> GDevPtr device;
> DriverPtr driver;
> } EntityInfoRec, *EntityInfoPtr;
> @@ -926,12 +782,6 @@ typedef struct _ScrnInfoRec {
>
> int chipID;
> int chipRev;
> - int racMemFlags;
> - int racIoFlags;
> - pointer access;
> - xf86CurrentAccessPtr CurrentAccess;
> - resType resourceType;
> - pointer busAccess;
>
> /* Allow screens to be enabled/disabled individually */
> Bool vtSema;
> diff --git a/hw/xfree86/loader/sdksyms.sh b/hw/xfree86/loader/sdksyms.sh
> index b320661..8bda8d7 100755
> --- a/hw/xfree86/loader/sdksyms.sh
> +++ b/hw/xfree86/loader/sdksyms.sh
> @@ -117,11 +117,9 @@ cat > sdksyms.c << EOF
> #include "xf86PciInfo.h"
> #include "xf86Priv.h"
> #include "xf86Privstr.h"
> -#include "xf86Resources.h"
> #include "xf86cmap.h"
> #include "xf86fbman.h"
> #include "xf86str.h"
> -#include "xf86RAC.h"
> #include "xf86Xinput.h"
> #include "xisb.h"
> #if XV
> diff --git a/hw/xfree86/os-support/bsd/Makefile.am b/hw/xfree86/os-support/bsd/Makefile.am
> index e52dac1..b6ecdf1 100644
> --- a/hw/xfree86/os-support/bsd/Makefile.am
> +++ b/hw/xfree86/os-support/bsd/Makefile.am
> @@ -17,9 +17,6 @@ else
> KMOD_SOURCES = $(srcdir)/../shared/kmod_noop.c
> endif
>
> -# FIXME: Non-i386/ia64 resource support.
> -RES_SOURCES = $(srcdir)/../shared/stdResource.c
> -
> if AGP
> AGP_SOURCES = $(srcdir)/../linux/lnx_agp.c
> else
> diff --git a/hw/xfree86/os-support/bus/linuxPci.c b/hw/xfree86/os-support/bus/linuxPci.c
> index e210fa1..3d77d7f 100644
> --- a/hw/xfree86/os-support/bus/linuxPci.c
> +++ b/hw/xfree86/os-support/bus/linuxPci.c
> @@ -453,58 +453,3 @@ xf86MapLegacyIO(struct pci_device *dev)
> return (IOADDRESS)DomainMmappedIO[domain];
> }
>
> -resPtr
> -xf86AccResFromOS(resPtr pRes)
> -{
> - struct pci_device *dev;
> - struct pci_device_iterator *iter;
> - resRange range;
> -
> - iter = pci_id_match_iterator_create(& match_host_bridge);
> - while ((dev = pci_device_next(iter)) != NULL) {
> - const int domain = dev->domain;
> - const struct pciSizes * const sizes = linuxGetSizesStruct(dev);
> -
> - /*
> - * At minimum, the top and bottom resources must be claimed, so
> - * that resources that are (or appear to be) unallocated can be
> - * relocated.
> - */
> - RANGE(range, 0x00000000u, 0x0009ffffu,
> - RANGE_TYPE(ResExcMemBlock, domain));
> - pRes = xf86AddResToList(pRes, &range, -1);
> - RANGE(range, 0x000c0000u, 0x000effffu,
> - RANGE_TYPE(ResExcMemBlock, domain));
> - pRes = xf86AddResToList(pRes, &range, -1);
> - RANGE(range, 0x000f0000u, 0x000fffffu,
> - RANGE_TYPE(ResExcMemBlock, domain));
> - pRes = xf86AddResToList(pRes, &range, -1);
> -
> - RANGE(range, (ADDRESS)(sizes->mem_size - 1),
> - (ADDRESS)(sizes->mem_size - 1),
> - RANGE_TYPE(ResExcMemBlock, domain));
> - pRes = xf86AddResToList(pRes, &range, -1);
> -
> - RANGE(range, 0x00000000u, 0x00000000u,
> - RANGE_TYPE(ResExcIoBlock, domain));
> - pRes = xf86AddResToList(pRes, &range, -1);
> - RANGE(range, (IOADDRESS)(sizes->io_size - 1),
> - (IOADDRESS)(sizes->io_size - 1),
> - RANGE_TYPE(ResExcIoBlock, domain));
> - pRes = xf86AddResToList(pRes, &range, -1);
> -
> - /* FIXME: The old code reserved domain 0 for a special purpose. The
> - * FIXME: new code just uses whatever domains the kernel tells it,
> - * FIXME: but there is no way to get a domain < 0. What should
> - * FIXME: happen here?
> - *
> - if (domain <= 0)
> - break;
> - */
> - }
> -
> - pci_iterator_destroy(iter);
> -
> - return pRes;
> -}
> -
> diff --git a/hw/xfree86/os-support/hurd/Makefile.am b/hw/xfree86/os-support/hurd/Makefile.am
> index 9bbe2af..3e82247 100644
> --- a/hw/xfree86/os-support/hurd/Makefile.am
> +++ b/hw/xfree86/os-support/hurd/Makefile.am
> @@ -4,7 +4,6 @@ libhurd_la_SOURCES = hurd_bell.c hurd_init.c hurd_mmap.c \
> hurd_video.c \
> $(srcdir)/../shared/VTsw_noop.c \
> $(srcdir)/../shared/posix_tty.c \
> - $(srcdir)/../shared/stdResource.c \
> $(srcdir)/../shared/vidmem.c \
> $(srcdir)/../shared/sigiostubs.c \
> $(srcdir)/../shared/pm_noop.c \
> diff --git a/hw/xfree86/os-support/linux/Makefile.am b/hw/xfree86/os-support/linux/Makefile.am
> index 81bd055..1239c8f 100644
> --- a/hw/xfree86/os-support/linux/Makefile.am
> +++ b/hw/xfree86/os-support/linux/Makefile.am
> @@ -32,7 +32,6 @@ liblinux_la_SOURCES = lnx_init.c lnx_video.c \
> $(srcdir)/../shared/posix_tty.c \
> $(srcdir)/../shared/vidmem.c \
> $(srcdir)/../shared/sigio.c \
> - $(srcdir)/../shared/stdResource.c \
> $(ACPI_SRCS) \
> $(APM_SRCS) \
> $(PLATFORM_PCI_SUPPORT)
> diff --git a/hw/xfree86/os-support/shared/stdResource.c b/hw/xfree86/os-support/shared/stdResource.c
> deleted file mode 100644
> index 491b4ce..0000000
> --- a/hw/xfree86/os-support/shared/stdResource.c
> +++ /dev/null
> @@ -1,110 +0,0 @@
> -/*
> - * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a
> - * copy of this software and associated documentation files (the "Software"),
> - * to deal in the Software without restriction, including without limitation
> - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> - * and/or sell copies of the Software, and to permit persons to whom the
> - * Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included in
> - * all copies or substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
> - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> - * OTHER DEALINGS IN THE SOFTWARE.
> - *
> - * Except as contained in this notice, the name of the copyright holder(s)
> - * and author(s) shall not be used in advertising or otherwise to promote
> - * the sale, use or other dealings in this Software without prior written
> - * authorization from the copyright holder(s) and author(s).
> - */
> -
> -/* Standard resource information code */
> -
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include <X11/X.h>
> -#include "xf86.h"
> -#include "xf86Priv.h"
> -#include "xf86Privstr.h"
> -#define NEED_OS_RAC_PROTOS
> -#include "xf86_OSlib.h"
> -#include "xf86Resources.h"
> -
> -#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
> - defined(__NetBSD__) || defined(__OpenBSD__) || \
> - defined(__DragonFly__) || defined(__sun) || defined(__GNU__)
> -#define xf86StdAccResFromOS xf86AccResFromOS
> -#endif
> -
> -resPtr
> -xf86StdAccResFromOS(resPtr ret)
> -{
> - resRange range;
> -
> - /*
> - * Fallback is to claim the following areas:
> - *
> - * 0x00000000 - 0x0009ffff low 640k host memory
> - * 0x000c0000 - 0x000effff location of VGA and other extensions ROMS
> - * 0x000f0000 - 0x000fffff system BIOS
> - * 0x00100000 - 0x3fffffff low 1G - 1MB host memory
> - * 0xfec00000 - 0xfecfffff default I/O APIC config space
> - * 0xfee00000 - 0xfeefffff default Local APIC config space
> - * 0xffe00000 - 0xffffffff high BIOS area (should this be included?)
> - *
> - * reference: Intel 440BX AGP specs
> - *
> - * The two APIC spaces appear to be BX-specific and should be dealt with
> - * elsewhere.
> - */
> -
> - /* Fallback is to claim 0x0 - 0x9ffff and 0x100000 - 0x7fffffff */
> - RANGE(range, 0x00000000, 0x0009ffff, ResExcMemBlock);
> - ret = xf86AddResToList(ret, &range, -1);
> - RANGE(range, 0x000c0000, 0x000effff, ResExcMemBlock);
> - ret = xf86AddResToList(ret, &range, -1);
> - RANGE(range, 0x000f0000, 0x000fffff, ResExcMemBlock);
> - ret = xf86AddResToList(ret, &range, -1);
> -#if 0
> - RANGE(range, 0xfec00000, 0xfecfffff, ResExcMemBlock | ResBios);
> - ret = xf86AddResToList(ret, &range, -1);
> - RANGE(range, 0xfee00000, 0xfeefffff, ResExcMemBlock | ResBios);
> - ret = xf86AddResToList(ret, &range, -1);
> - /* airlied - remove BIOS range it shouldn't be here
> - this should use E820 - or THE OS */
> - RANGE(range, 0xffe00000, 0xffffffff, ResExcMemBlock | ResBios);
> - ret = xf86AddResToList(ret, &range, -1);
> -#endif
> - /*
> - * Fallback would be to claim well known ports in the 0x0 - 0x3ff range
> - * along with their sparse I/O aliases, but that's too imprecise. Instead
> - * claim a bare minimum here.
> - */
> - RANGE(range, 0x00000000, 0x000000ff, ResExcIoBlock); /* For mainboard */
> - ret = xf86AddResToList(ret, &range, -1);
> -
> - /*
> - * At minimum, the top and bottom resources must be claimed, so that
> - * resources that are (or appear to be) unallocated can be relocated.
> - */
> -/* RANGE(range, 0x00000000, 0x00000000, ResExcMemBlock);
> - ret = xf86AddResToList(ret, &range, -1);
> - RANGE(range, 0xffffffff, 0xffffffff, ResExcMemBlock);
> - ret = xf86AddResToList(ret, &range, -1);
> - RANGE(range, 0x00000000, 0x00000000, ResExcIoBlock);
> - ret = xf86AddResToList(ret, &range, -1); */
> - RANGE(range, 0x0000ffff, 0x0000ffff, ResExcIoBlock);
> - ret = xf86AddResToList(ret, &range, -1);
> -
> - /* XXX add others */
> - return ret;
> -}
> diff --git a/hw/xfree86/os-support/solaris/Makefile.am b/hw/xfree86/os-support/solaris/Makefile.am
> index 4496ee1..c09ae32 100644
> --- a/hw/xfree86/os-support/solaris/Makefile.am
> +++ b/hw/xfree86/os-support/solaris/Makefile.am
> @@ -22,7 +22,6 @@ libsolaris_la_SOURCES = sun_init.c \
> $(srcdir)/../shared/kmod_noop.c \
> $(srcdir)/../shared/posix_tty.c \
> $(srcdir)/../shared/sigio.c \
> - $(srcdir)/../shared/stdResource.c \
> $(srcdir)/../shared/vidmem.c \
> $(VTSW_SRC)
> nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC)
> diff --git a/hw/xfree86/os-support/xf86_OSproc.h b/hw/xfree86/os-support/xf86_OSproc.h
> index 0f16607..98d7932 100644
> --- a/hw/xfree86/os-support/xf86_OSproc.h
> +++ b/hw/xfree86/os-support/xf86_OSproc.h
> @@ -210,15 +210,6 @@ extern _X_EXPORT int xf86ProcessArgument(int, char **, int);
> extern _X_EXPORT void xf86UseMsg(void);
> extern _X_EXPORT PMClose xf86OSPMOpen(void);
>
> -#ifdef NEED_OS_RAC_PROTOS
> -/* RAC-related privs */
> -/* internal to os-support layer */
> -extern _X_EXPORT resPtr xf86StdAccResFromOS(resPtr ret);
> -
> -/* available to the common layer */
> -extern _X_EXPORT resPtr xf86AccResFromOS(resPtr ret);
> -#endif /* NEED_OS_RAC_PROTOS */
> -
> extern _X_EXPORT void xf86MakeNewMapping(int, int, unsigned long, unsigned long, pointer);
> extern _X_EXPORT void xf86InitVidMem(void);
>
> --
> 1.6.2.5
>
> _______________________________________________
> xorg-devel mailing list
> xorg-devel at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-devel
Tiago
-------------- next part --------------
More information about the xorg-devel
mailing list