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/dev/pci/pcib_if.m

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 # Copyright (c) 2000 Doug Rabson
    3 # All rights reserved.
    4 #
    5 # Redistribution and use in source and binary forms, with or without
    6 # modification, are permitted provided that the following conditions
    7 # are met:
    8 # 1. Redistributions of source code must retain the above copyright
    9 #    notice, this list of conditions and the following disclaimer.
   10 # 2. Redistributions in binary form must reproduce the above copyright
   11 #    notice, this list of conditions and the following disclaimer in the
   12 #    documentation and/or other materials provided with the distribution.
   13 #
   14 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   15 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   16 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   17 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   18 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   19 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   20 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   21 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   22 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   23 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   24 # SUCH DAMAGE.
   25 #
   26 # $FreeBSD: releng/9.0/sys/dev/pci/pcib_if.m 211430 2010-08-17 15:44:52Z jhb $
   27 #
   28 
   29 #include <sys/bus.h>
   30 #include <dev/pci/pcivar.h>
   31 
   32 INTERFACE pcib;
   33 
   34 CODE {
   35         static int
   36         null_route_interrupt(device_t pcib, device_t dev, int pin)
   37         {
   38                 return (PCI_INVALID_IRQ);
   39         }
   40 };
   41 
   42 #
   43 # Return the number of slots on the attached PCI bus.
   44 #
   45 METHOD int maxslots {
   46         device_t        dev;
   47 };
   48 
   49 #
   50 # Read configuration space on the PCI bus. The bus, slot and func
   51 # arguments determine the device which is being read and the reg
   52 # argument is a byte offset into configuration space for that
   53 # device. The width argument (which should be 1, 2 or 4) specifies how
   54 # many byte of configuration space to read from that offset.
   55 #
   56 METHOD u_int32_t read_config {
   57         device_t        dev;
   58         u_int           bus;
   59         u_int           slot;
   60         u_int           func;
   61         u_int           reg;
   62         int             width;
   63 };
   64 
   65 #
   66 # Write configuration space on the PCI bus. The bus, slot and func
   67 # arguments determine the device which is being written and the reg
   68 # argument is a byte offset into configuration space for that
   69 # device. The value field is written to the configuration space, with
   70 # the number of bytes written depending on the width argument.
   71 #
   72 METHOD void write_config {
   73         device_t        dev;
   74         u_int           bus;
   75         u_int           slot;
   76         u_int           func;
   77         u_int           reg;
   78         u_int32_t       value;
   79         int             width;
   80 };
   81 
   82 #
   83 # Route an interrupt.  Returns a value suitable for stuffing into 
   84 # a device's interrupt register.
   85 #
   86 METHOD int route_interrupt {
   87         device_t        pcib;
   88         device_t        dev;
   89         int             pin;
   90 } DEFAULT null_route_interrupt;
   91 
   92 #
   93 # Allocate 'count' MSI messsages mapped onto 'count' IRQs.  'irq' points
   94 # to an array of at least 'count' ints.  The max number of messages this
   95 # device supports is included so that the MD code can take that into
   96 # account when assigning resources so that the proper number of low bits
   97 # are clear in the resulting message data value.
   98 #
   99 METHOD int alloc_msi {
  100         device_t        pcib;
  101         device_t        dev;
  102         int             count;
  103         int             maxcount;
  104         int             *irqs;
  105 };
  106 
  107 #
  108 # Release 'count' MSI messages mapped onto 'count' IRQs stored in the
  109 # array pointed to by 'irqs'.
  110 #
  111 METHOD int release_msi {
  112         device_t        pcib;
  113         device_t        dev;
  114         int             count;
  115         int             *irqs;
  116 };
  117 
  118 #
  119 # Allocate a single MSI-X message mapped onto '*irq'.
  120 #
  121 METHOD int alloc_msix {
  122         device_t        pcib;
  123         device_t        dev;
  124         int             *irq;
  125 };
  126 
  127 #
  128 # Release a single MSI-X message mapped onto 'irq'.
  129 #
  130 METHOD int release_msix {
  131         device_t        pcib;
  132         device_t        dev;
  133         int             irq;
  134 };
  135 
  136 #
  137 # Determine the MSI/MSI-X message address and data for 'irq'.  The address
  138 # is returned in '*addr', and the data in '*data'.
  139 #
  140 METHOD int map_msi {
  141         device_t        pcib;
  142         device_t        dev;
  143         int             irq;
  144         uint64_t        *addr;
  145         uint32_t        *data;
  146 };
  147 
  148 #
  149 # Return the device power state to be used during a system sleep state
  150 # transition such as suspend and resume.
  151 #
  152 METHOD int power_for_sleep {
  153         device_t        pcib;
  154         device_t        dev;
  155         int             *pstate;
  156 };

Cache object: 0bf136cac3f4815e4f890be3b12de9fc


[ 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.