Source to bsd/dev/i386/pci_device.h
/*
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* The contents of this file constitute Original Code as defined in and
* are subject to the Apple Public Source License Version 1.1 (the
* "License"). You may not use this file except in compliance with the
* License. Please obtain a copy of the License at
* http://www.apple.com/publicsource and read it before using this file.
*
* This Original Code and all software distributed under the License are
* distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
* License for the specific language governing rights and limitations
* under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
/*
* @OSF_FREE_COPYRIGHT@
*
*/
/*
* HISTORY
*
* Revision 1.2 1998/09/30 21:20:44 wsanchez
* Merged in IntelMerge1 (mburg: Intel support)
*
* Revision 1.1.2.1 1998/09/30 18:18:50 mburg
* Changes for Intel port
*
* Revision 1.1.1.1 1998/03/07 02:25:45 wsanchez
* Import of OSF Mach kernel (~mburg)
*
* Revision 1.1.6.2 1995/12/15 10:52:14 bernadat
* Split dev and vendor ids.
* [95/11/15 bernadat]
*
* Revision 1.1.6.1 1995/02/23 17:22:27 alanl
* Taken from DIPC2_SHARED
* [1995/01/03 19:09:31 alanl]
*
* Revision 1.1.2.1 1994/10/11 18:24:42 rwd
* Created.
* [1994/10/11 18:15:31 rwd]
*
* $EndLog$
*/
/*
* Taken from
*
* Copyright (c) 1994 Wolfgang Stanglmeier, Koeln, Germany
* <[email protected]>
*/
#ifndef __PCI_DEVICE_H__
#define __PCI_DEVICE_H__
/*------------------------------------------------------------
*
* Per driver structure.
*
*------------------------------------------------------------
*/
typedef unsigned short pci_vendor_id_t;
typedef unsigned short pci_dev_id_t;
typedef union {
unsigned long cfg1;
struct {
unsigned char enable;
unsigned char forward;
unsigned short port;
} cfg2;
} pcici_t;
struct pci_driver {
int (*probe )(pcici_t pci_ident); /* test whether device
is present */
int (*attach)(pcici_t pci_ident); /* setup driver for a
device */
pci_vendor_id_t vendor_id; /* vendor pci id */
pci_dev_id_t device_id; /* device pci id */
char *name; /* device name */
char *vendor; /* device long name */
void (*intr)(int); /* interupt handler */
};
/*-----------------------------------------------------------
*
* Per device structure.
*
* It is initialized by the config utility and should live in
* "ioconf.c". At the moment there is only one field.
*
* This is a first attempt to include the pci bus to 386bsd.
* So this structure may grow ..
*
*-----------------------------------------------------------
*/
struct pci_device {
struct pci_driver * pd_driver;
};
/*-----------------------------------------------------------
*
* This functions may be used by drivers to map devices
* to virtual and physical addresses. The va and pa
* addresses are "in/out" parameters. If they are 0
* on entry, the mapping function assigns an address.
*
*-----------------------------------------------------------
*/
int pci_map_mem(pcici_t tag,
unsigned long entry,
vm_offset_t *va,
vm_offset_t *pa);
#endif /*__PCI_DEVICE_H__*/