xref: /minix/minix/drivers/bus/pci/pci.h (revision 433d6423)
1 /*
2 pci.h
3 
4 Created:	Jan 2000 by Philip Homburg <philip@cs.vu.nl>
5 */
6 
7 #include <minix/drivers.h>
8 #include <minix/driver.h>
9 #include <minix/rs.h>
10 
11 /* tempory functions: to be replaced later (see pci_intel.h) */
12 unsigned pci_inb(u16_t port);
13 unsigned pci_inw(u16_t port);
14 unsigned pci_inl(u16_t port);
15 
16 void pci_outb(u16_t port, u8_t value);
17 void pci_outw(u16_t port, u16_t value);
18 void pci_outl(u16_t port, u32_t value);
19 
20 struct pci_vendor
21 {
22 	u16_t vid;
23 	char *name;
24 };
25 
26 struct pci_device
27 {
28 	u16_t vid;
29 	u16_t did;
30 	char *name;
31 };
32 
33 struct pci_baseclass
34 {
35 	u8_t baseclass;
36 	char *name;
37 };
38 
39 struct pci_subclass
40 {
41 	u8_t baseclass;
42 	u8_t subclass;
43 	u16_t infclass;
44 	char *name;
45 };
46 
47 struct pci_intel_ctrl
48 {
49 	u16_t vid;
50 	u16_t did;
51 };
52 
53 struct pci_isabridge
54 {
55 	u16_t vid;
56 	u16_t did;
57 	int checkclass;
58 	int type;
59 };
60 
61 struct pci_pcibridge
62 {
63 	u16_t vid;
64 	u16_t did;
65 	int type;
66 };
67 
68 struct pci_acl
69 {
70 	int inuse;
71 	struct rs_pci acl;
72 };
73 
74 #define NR_DRIVERS	NR_SYS_PROCS
75 
76 #define PCI_IB_PIIX	1	/* Intel PIIX compatible ISA bridge */
77 #define PCI_IB_VIA	2	/* VIA compatible ISA bridge */
78 #define PCI_IB_AMD	3	/* AMD compatible ISA bridge */
79 #define PCI_IB_SIS	4	/* SIS compatible ISA bridge */
80 
81 #define PCI_PPB_STD	1	/* Standard PCI-to-PCI bridge */
82 #define PCI_PPB_CB	2	/* Cardbus bridge */
83 /* Still needed? */
84 #define PCI_AGPB_VIA	3	/* VIA compatible AGP bridge */
85 
86 extern struct pci_vendor pci_vendor_table[];
87 extern struct pci_device pci_device_table[];
88 extern struct pci_baseclass pci_baseclass_table[];
89 extern struct pci_subclass pci_subclass_table[];
90 #if 0
91 extern struct pci_intel_ctrl pci_intel_ctrl[];
92 #endif
93 extern struct pci_isabridge pci_isabridge[];
94 extern struct pci_pcibridge pci_pcibridge[];
95 
96 /* Function prototypes. */
97 int sef_cb_init_fresh(int type, sef_init_info_t *info);
98 int map_service(struct rprocpub *rpub);
99 int pci_reserve_a(int devind, endpoint_t proc, struct rs_pci *aclp);
100 void pci_release(endpoint_t proc);
101 int pci_first_dev_a(struct rs_pci *aclp, int *devindp, u16_t *vidp,
102 	u16_t *didp);
103 int pci_next_dev_a(struct rs_pci *aclp, int *devindp, u16_t *vidp, u16_t
104 	*didp);
105 
106 int pci_attr_r8_s(int devind, int port, u8_t *vp);
107 int pci_attr_r32_s(int devind, int port, u32_t *vp);
108 int pci_get_bar_s(int devind, int port, u32_t *base, u32_t *size, int
109 	*ioflag);
110 int pci_slot_name_s(int devind, char **cpp);
111 int pci_ids_s(int devind, u16_t *vidp, u16_t *didp);
112 
113 /*
114  * $PchId: pci.h,v 1.4 2001/12/06 20:21:22 philip Exp $
115  */
116