pciio_private.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:4k
- /* $Id$
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc.
- * Copyright (C) 2000 by Colin Ngam
- */
- #ifndef _ASM_SN_PCI_PCIIO_PRIVATE_H
- #define _ASM_SN_PCI_PCIIO_PRIVATE_H
- /*
- * pciio_private.h -- private definitions for pciio
- * PCI drivers should NOT include this file.
- */
- #ident "sys/PCI/pciio_private: $Revision: 1.13 $"
- /*
- * All PCI providers set up PIO using this information.
- */
- struct pciio_piomap_s {
- unsigned pp_flags; /* PCIIO_PIOMAP flags */
- devfs_handle_t pp_dev; /* associated pci card */
- pciio_slot_t pp_slot; /* which slot the card is in */
- pciio_space_t pp_space; /* which address space */
- iopaddr_t pp_pciaddr; /* starting offset of mapping */
- size_t pp_mapsz; /* size of this mapping */
- caddr_t pp_kvaddr; /* kernel virtual address to use */
- };
- /*
- * All PCI providers set up DMA using this information.
- */
- struct pciio_dmamap_s {
- unsigned pd_flags; /* PCIIO_DMAMAP flags */
- devfs_handle_t pd_dev; /* associated pci card */
- pciio_slot_t pd_slot; /* which slot the card is in */
- };
- /*
- * All PCI providers set up interrupts using this information.
- */
- struct pciio_intr_s {
- unsigned pi_flags; /* PCIIO_INTR flags */
- devfs_handle_t pi_dev; /* associated pci card */
- device_desc_t pi_dev_desc; /* override device descriptor */
- pciio_intr_line_t pi_lines; /* which interrupt line(s) */
- intr_func_t pi_func; /* handler function (when connected) */
- intr_arg_t pi_arg; /* handler parameter (when connected) */
- #ifdef LATER
- thd_int_t pi_tinfo; /* Thread info (when connected) */
- #endif
- cpuid_t pi_mustruncpu; /* Where we must run. */
- int pi_irq; /* IRQ assigned */
- int pi_cpu; /* cpu assigned */
- };
- /* PCIIO_INTR (pi_flags) flags */
- #define PCIIO_INTR_CONNECTED 1 /* interrupt handler/thread has been connected */
- #define PCIIO_INTR_NOTHREAD 2 /* interrupt handler wants to be called at interrupt level */
- /*
- * Each PCI Card has one of these.
- */
- struct pciio_info_s {
- char *c_fingerprint;
- devfs_handle_t c_vertex; /* back pointer to vertex */
- pciio_bus_t c_bus; /* which bus the card is in */
- pciio_slot_t c_slot; /* which slot the card is in */
- pciio_function_t c_func; /* which func (on multi-func cards) */
- pciio_vendor_id_t c_vendor; /* PCI card "vendor" code */
- pciio_device_id_t c_device; /* PCI card "device" code */
- devfs_handle_t c_master; /* PCI bus provider */
- arbitrary_info_t c_mfast; /* cached fastinfo from c_master */
- pciio_provider_t *c_pops; /* cached provider from c_master */
- error_handler_f *c_efunc; /* error handling function */
- error_handler_arg_t c_einfo; /* first parameter for efunc */
- struct { /* state of BASE regs */
- pciio_space_t w_space;
- iopaddr_t w_base;
- size_t w_size;
- } c_window[6];
- unsigned c_rbase; /* EXPANSION ROM base addr */
- unsigned c_rsize; /* EXPANSION ROM size (bytes) */
- pciio_piospace_t c_piospace; /* additional I/O spaces allocated */
- };
- extern char pciio_info_fingerprint[];
- #endif /* _ASM_SN_PCI_PCIIO_PRIVATE_H */