The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/pci/pcibus.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /**************************************************************************
    2 **
    3 ** $FreeBSD: src/sys/pci/pcibus.h,v 1.4.4.3 1999/09/05 08:21:23 peter Exp $
    4 **
    5 **  Declarations for pci bus driver.
    6 **
    7 **  FreeBSD
    8 **
    9 **-------------------------------------------------------------------------
   10 **
   11 ** Copyright (c) 1995 Wolfgang Stanglmeier.  All rights reserved.
   12 **
   13 ** Redistribution and use in source and binary forms, with or without
   14 ** modification, are permitted provided that the following conditions
   15 ** are met:
   16 ** 1. Redistributions of source code must retain the above copyright
   17 **    notice, this list of conditions and the following disclaimer.
   18 ** 2. Redistributions in binary form must reproduce the above copyright
   19 **    notice, this list of conditions and the following disclaimer in the
   20 **    documentation and/or other materials provided with the distribution.
   21 ** 3. The name of the author may not be used to endorse or promote products
   22 **    derived from this software without specific prior written permission.
   23 **
   24 ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   25 ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   26 ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   27 ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   28 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   29 ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   30 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   31 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   32 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   33 ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   34 **
   35 ***************************************************************************
   36 */
   37 
   38 #ifndef __PCI_BUS_H__
   39 #define __PCI_BUS_H__   "pl1 95/03/13"
   40 
   41 /*-----------------------------------------------------------------
   42 **
   43 **      The following functions are provided by the pci bios.
   44 **      They are used only by the pci configuration.
   45 **
   46 **      pcibus_setup():
   47 **              Probes for a pci system.
   48 **              Sets pci_maxdevice and pci_mechanism.
   49 **
   50 **      pcibus_tag():
   51 **              Creates a handle for pci configuration space access.
   52 **              This handle is given to the read/write functions.
   53 **
   54 **      pcibus_ftag():
   55 **              Creates a modified handle.
   56 **
   57 **      pcibus_read():
   58 **              Read a long word from the pci configuration space.
   59 **              Requires a tag (from pcitag) and the register
   60 **              number (should be a long word alligned one).
   61 **
   62 **      pcibus_write():
   63 **              Writes a long word to the pci configuration space.
   64 **              Requires a tag (from pcitag), the register number
   65 **              (should be a long word alligned one), and a value.
   66 **
   67 **      pcibus_regirq():
   68 **              Register an interrupt handler for a pci device.
   69 **              Requires a tag (from pcitag), the register number
   70 **              (should be a long word alligned one), and a value.
   71 **
   72 **-----------------------------------------------------------------
   73 */
   74 
   75 struct pcibus {
   76         char     *pb_name;
   77         void    (*pb_setup )  (void);
   78         pcici_t (*pb_tag   )  (u_char bus, u_char device, u_char func);
   79         pcici_t (*pb_ftag  )  (pcici_t tag, u_char func);
   80         int     (*pb_bus   )  (pcici_t tag);
   81         int     (*pb_device)  (pcici_t tag);
   82         int     (*pb_function)(pcici_t tag);
   83         u_long  (*pb_read  )  (pcici_t tag, u_long reg);
   84         void    (*pb_write )  (pcici_t tag, u_long reg, u_long data);
   85         int     (*pb_iattach) (int irq, inthand2_t *func, int arg,
   86                                unsigned *maskptr);
   87         int     (*pb_idetach) (int irq, inthand2_t *func);
   88         int     (*pb_imaskinc)(int irq, unsigned *maskptr);
   89         int     (*pb_imaskexc)(int irq, unsigned *maskptr);
   90 };
   91 
   92 #define PCI_MAX_IRQ   (16)
   93 
   94 /*
   95 **      The following structure should be generated by the driver
   96 */
   97 
   98 extern struct linker_set pcibus_set;
   99 
  100 int pci_register_lkm (struct pci_device *dvp, int if_revision);
  101 
  102 #endif

Cache object: 156ca0e9420b52a82a541bf4bba3833f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.