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/pci_ioctl.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 #ifndef _PCI_IOCTL_H
    2 #define _PCI_IOCTL_H    1
    3 
    4 #include <sys/ioccom.h>
    5 
    6 
    7 #define PCI_MAXNAMELEN  16      /* max no. of characters in a device name */
    8 
    9 typedef enum {
   10     PCI_GETCONF_LAST_DEVICE,
   11     PCI_GETCONF_LIST_CHANGED,
   12     PCI_GETCONF_MORE_DEVS,
   13     PCI_GETCONF_ERROR
   14 } pci_getconf_status;
   15 
   16 typedef enum {
   17     PCI_GETCONF_NO_MATCH        = 0x00,
   18     PCI_GETCONF_MATCH_BUS       = 0x01,
   19     PCI_GETCONF_MATCH_DEV       = 0x02,
   20     PCI_GETCONF_MATCH_FUNC      = 0x04,
   21     PCI_GETCONF_MATCH_NAME      = 0x08,
   22     PCI_GETCONF_MATCH_UNIT      = 0x10,
   23     PCI_GETCONF_MATCH_VENDOR    = 0x20,
   24     PCI_GETCONF_MATCH_DEVICE    = 0x40,
   25     PCI_GETCONF_MATCH_CLASS     = 0x80
   26 } pci_getconf_flags;
   27 
   28 struct pcisel {
   29     u_int8_t            pc_bus;         /* bus number */
   30     u_int8_t            pc_dev;         /* device on this bus */
   31     u_int8_t            pc_func;        /* function on this device */
   32 };
   33 
   34 struct  pci_conf {
   35     struct pcisel       pc_sel;         /* bus+slot+function */
   36     u_int8_t            pc_hdr;         /* PCI header type */
   37     u_int16_t           pc_subvendor;   /* card vendor ID */
   38     u_int16_t           pc_subdevice;   /* card device ID, assigned by 
   39                                            card vendor */
   40     u_int16_t           pc_vendor;      /* chip vendor ID */
   41     u_int16_t           pc_device;      /* chip device ID, assigned by 
   42                                            chip vendor */
   43     u_int8_t            pc_class;       /* chip PCI class */
   44     u_int8_t            pc_subclass;    /* chip PCI subclass */
   45     u_int8_t            pc_progif;      /* chip PCI programming interface */
   46     u_int8_t            pc_revid;       /* chip revision ID */
   47     char                pd_name[PCI_MAXNAMELEN + 1];  /* Name of peripheral 
   48                                                          device */
   49     u_long              pd_unit;        /* Unit number */
   50 };
   51 
   52 struct pci_match_conf {
   53     struct pcisel       pc_sel;         /* bus+slot+function */
   54     char                pd_name[PCI_MAXNAMELEN + 1];  /* Name of peripheral 
   55                                                          device */
   56     u_long              pd_unit;        /* Unit number */
   57     u_int16_t           pc_vendor;      /* PCI Vendor ID */
   58     u_int16_t           pc_device;      /* PCI Device ID */
   59     u_int8_t            pc_class;       /* PCI class */
   60     pci_getconf_flags   flags;          /* Matching expression */
   61 };
   62 
   63 struct  pci_conf_io {
   64     u_int32_t             pat_buf_len;  /* 
   65                                          * Length of buffer passed in from
   66                                          * user space.
   67                                          */
   68     u_int32_t             num_patterns; /* 
   69                                          * Number of pci_match_conf structures 
   70                                          * passed in by the user.
   71                                          */
   72     struct pci_match_conf *patterns;    /*
   73                                          * Patterns passed in by the user.
   74                                          */
   75     u_int32_t             match_buf_len;/*
   76                                          * Length of match buffer passed
   77                                          * in by the user.
   78                                          */
   79     u_int32_t             num_matches;  /*
   80                                          * Number of matches returned by
   81                                          * the kernel.
   82                                          */
   83     struct pci_conf       *matches;     /*
   84                                          * PCI device matches returned by
   85                                          * the kernel.
   86                                          */
   87     u_int32_t             offset;       /*
   88                                          * Passed in by the user code to
   89                                          * indicate where the kernel should
   90                                          * start traversing the device list.
   91                                          * The value passed out by the kernel
   92                                          * points to the record immediately
   93                                          * after the last one returned.
   94                                          * i.e. this value may be passed back
   95                                          * unchanged by the user for a
   96                                          * subsequent call.
   97                                          */
   98     u_int32_t             generation;   /*
   99                                          * PCI configuration generation.
  100                                          * This only needs to be set if the
  101                                          * offset is set.  The kernel will
  102                                          * compare its current generation
  103                                          * number to the generation passed 
  104                                          * in by the user to determine
  105                                          * whether the PCI device list has 
  106                                          * changed since the user last
  107                                          * called the GETCONF ioctl.
  108                                          */
  109     pci_getconf_status    status;       /* 
  110                                          * Status passed back from the
  111                                          * kernel.
  112                                          */
  113 };
  114 
  115 struct pci_io {
  116     struct pcisel       pi_sel;         /* device to operate on */
  117     int                 pi_reg;         /* configuration register to examine */
  118     int                 pi_width;       /* width (in bytes) of read or write */
  119     u_int32_t           pi_data;        /* data to write or result of read */
  120 };
  121         
  122 
  123 #define PCIOCGETCONF    _IOWR('p', 1, struct pci_conf_io)
  124 #define PCIOCREAD       _IOWR('p', 2, struct pci_io)
  125 #define PCIOCWRITE      _IOWR('p', 3, struct pci_io)
  126 #define PCIOCATTACHED   _IOWR('p', 4, struct pci_io)
  127 
  128 #endif /* _PCI_IOCTL_H */

Cache object: 8a29777a76ee487cdb2c801b6bc3a96a


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