pciio_private.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:4k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* $Id$
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc.
  8.  * Copyright (C) 2000 by Colin Ngam
  9.  */
  10. #ifndef _ASM_SN_PCI_PCIIO_PRIVATE_H
  11. #define _ASM_SN_PCI_PCIIO_PRIVATE_H
  12. /*
  13.  * pciio_private.h -- private definitions for pciio
  14.  * PCI drivers should NOT include this file.
  15.  */
  16. #ident "sys/PCI/pciio_private: $Revision: 1.13 $"
  17. /*
  18.  * All PCI providers set up PIO using this information.
  19.  */
  20. struct pciio_piomap_s {
  21.     unsigned                pp_flags; /* PCIIO_PIOMAP flags */
  22.     devfs_handle_t            pp_dev; /* associated pci card */
  23.     pciio_slot_t            pp_slot; /* which slot the card is in */
  24.     pciio_space_t           pp_space; /* which address space */
  25.     iopaddr_t               pp_pciaddr; /* starting offset of mapping */
  26.     size_t                  pp_mapsz; /* size of this mapping */
  27.     caddr_t                 pp_kvaddr; /* kernel virtual address to use */
  28. };
  29. /*
  30.  * All PCI providers set up DMA using this information.
  31.  */
  32. struct pciio_dmamap_s {
  33.     unsigned                pd_flags; /* PCIIO_DMAMAP flags */
  34.     devfs_handle_t            pd_dev; /* associated pci card */
  35.     pciio_slot_t            pd_slot; /* which slot the card is in */
  36. };
  37. /*
  38.  * All PCI providers set up interrupts using this information.
  39.  */
  40. struct pciio_intr_s {
  41.     unsigned                pi_flags; /* PCIIO_INTR flags */
  42.     devfs_handle_t            pi_dev; /* associated pci card */
  43.     device_desc_t     pi_dev_desc; /* override device descriptor */
  44.     pciio_intr_line_t       pi_lines; /* which interrupt line(s) */
  45.     intr_func_t             pi_func; /* handler function (when connected) */
  46.     intr_arg_t              pi_arg; /* handler parameter (when connected) */
  47. #ifdef LATER
  48.     thd_int_t               pi_tinfo; /* Thread info (when connected) */
  49. #endif
  50.     cpuid_t                 pi_mustruncpu; /* Where we must run. */
  51.     int                     pi_irq;     /* IRQ assigned */
  52.     int                     pi_cpu;     /* cpu assigned */
  53. };
  54. /* PCIIO_INTR (pi_flags) flags */
  55. #define PCIIO_INTR_CONNECTED 1 /* interrupt handler/thread has been connected */
  56. #define PCIIO_INTR_NOTHREAD 2 /* interrupt handler wants to be called at interrupt level */
  57. /*
  58.  * Each PCI Card has one of these.
  59.  */
  60. struct pciio_info_s {
  61.     char                   *c_fingerprint;
  62.     devfs_handle_t            c_vertex; /* back pointer to vertex */
  63.     pciio_bus_t             c_bus; /* which bus the card is in */
  64.     pciio_slot_t            c_slot; /* which slot the card is in */
  65.     pciio_function_t        c_func; /* which func (on multi-func cards) */
  66.     pciio_vendor_id_t       c_vendor; /* PCI card "vendor" code */
  67.     pciio_device_id_t       c_device; /* PCI card "device" code */
  68.     devfs_handle_t            c_master; /* PCI bus provider */
  69.     arbitrary_info_t        c_mfast; /* cached fastinfo from c_master */
  70.     pciio_provider_t       *c_pops; /* cached provider from c_master */
  71.     error_handler_f        *c_efunc; /* error handling function */
  72.     error_handler_arg_t     c_einfo; /* first parameter for efunc */
  73.     struct { /* state of BASE regs */
  74. pciio_space_t w_space;
  75. iopaddr_t w_base;
  76. size_t w_size;
  77.     }     c_window[6];
  78.     unsigned     c_rbase; /* EXPANSION ROM base addr */
  79.     unsigned     c_rsize; /* EXPANSION ROM size (bytes) */
  80.     pciio_piospace_t     c_piospace; /* additional I/O spaces allocated */
  81. };
  82. extern char             pciio_info_fingerprint[];
  83. #endif /* _ASM_SN_PCI_PCIIO_PRIVATE_H */