text: /* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86fbBus.c,v 1.5 2005/10/14 15:16:34 tsi Exp $ */
  
  /*
   * Copyright (c) 2000-2001 by The XFree86 Project, Inc.
   * All rights reserved.
   *
   * 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:
   *
   *   1.  Redistributions of source code must retain the above copyright
   *       notice, this list of conditions, and the following disclaimer.
   *
   *   2.  Redistributions in binary form must reproduce the above copyright
   *       notice, this list of conditions and the following disclaimer
   *       in the documentation and/or other materials provided with the
   *       distribution, and in the same place and form as other copyright,
   *       license and disclaimer information.
   *
   *   3.  The end-user documentation included with the redistribution,
   *       if any, must include the following acknowledgment: "This product
   *       includes software developed by The XFree86 Project, Inc
   *       (http://www.xfree86.org/) and its contributors", in the same
   *       place and form as other third-party acknowledgments.  Alternately,
   *       this acknowledgment may appear in the software itself, in the
   *       same form and location as other such third-party acknowledgments.
   *
   *   4.  Except as contained in this notice, the name of The XFree86
   *       Project, Inc 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 XFree86 Project, Inc.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   * IN NO EVENT SHALL THE XFREE86 PROJECT, INC OR ITS CONTRIBUTORS BE
   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
   * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
   * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
   * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
  /*
   * This file contains the interfaces to the bus-specific code
   */
  
  #include <ctype.h>
  #include <stdlib.h>
  #include <unistd.h>
  #include <X11/X.h>
  #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
  xf86ClaimFbSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
  {
      EntityPtr p;
      int num;
      
      num = xf86AllocateEntity();
      p = xf86Entities[num];
      p->driver = drvp;
      p->chipset = 0;
      p->busType = BUS_NONE;
      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;
  }
  
  /*
   * Get the list of FB "slots" claimed by a screen
   */
  int
  xf86GetFbInfoForScreen(int scrnIndex)
  {
      int num = 0;
      int i;
      EntityPtr p;
      
      for (i = 0; i < xf86Screens[scrnIndex]->numEntities; i++) {
  	p = xf86Entities[xf86Screens[scrnIndex]->entityList[i]];
    	if (p->busType == BUS_NONE) {
    	    num++;
    	}
      }
      return num;
  }
  