aboutsummaryrefslogtreecommitdiffstats
path: root/sys/i386/pci/pci_device.h
blob: 5fc33216a5a5e5dc7f25ed50f4b4d664da1f4789 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/**************************************************************************
**
**  $Id: pci_device.h,v 2.0 94/07/10 15:53:31 wolf Rel $
**
**  #define   for pci based device drivers
**
**-------------------------------------------------------------------------
**
**  Copyright (c) 1994	Wolfgang Stanglmeier, Koeln, Germany
**			<wolf@dentaro.GUN.de>
**
**  This is a beta version - use with care.
**
**-------------------------------------------------------------------------
**
**  $Log:	pci_device.h,v $
**  Revision 2.0  94/07/10  15:53:31  wolf
**  FreeBSD release.
**  
**  Revision 1.0  94/06/07  20:02:22  wolf
**  Beta release.
**  
***************************************************************************
*/

#ifndef __PCI_DEVICE_H__
#define __PCI_DEVICE_H__

/*------------------------------------------------------------
**
**  Per driver structure.
**
**------------------------------------------------------------
*/

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 */
    pcidi_t device_id;			    /* device pci id */
    char    *name;			    /* device name */
    char    *vendor;			    /* device long name */
    int     (*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 table should be generated in file "ioconf.c"
**  by the config program.
**  It is used at boot time by the configuration function
**  pci_configure()
**
**-----------------------------------------------------------
*/

extern struct pci_device pci_devtab[];

/*-----------------------------------------------------------
**
**  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, u_long entry, u_long  * va, u_long * pa);

int pci_map_port(pcici_t tag, u_long entry, u_short * pa);

#endif /*__PCI_DEVICE_H__*/