xref: /kvmtool/include/kvm/pci.h (revision 4402a5812a469872c1d952e932037d0a06b0e49e)
160742802SPekka Enberg #ifndef KVM__PCI_H
260742802SPekka Enberg #define KVM__PCI_H
360742802SPekka Enberg 
4*4402a581SPekka Enberg /*
5*4402a581SPekka Enberg  * PCI Configuration Mechanism #1 I/O ports. See Section 3.7.4.1.
6*4402a581SPekka Enberg  * ("Configuration Mechanism #1") of the PCI Local Bus Specification 2.1 for
7*4402a581SPekka Enberg  * details.
8*4402a581SPekka Enberg  */
9305b72ceSCyrill Gorcunov #define PCI_CONFIG_ADDRESS	0xcf8
10305b72ceSCyrill Gorcunov #define PCI_CONFIG_DATA		0xcfc
11305b72ceSCyrill Gorcunov 
12*4402a581SPekka Enberg struct pci_config_address {
13*4402a581SPekka Enberg 	unsigned		zeros		: 2;		/* 1  .. 0  */
14*4402a581SPekka Enberg 	unsigned		register_number	: 6;		/* 7  .. 2  */
15*4402a581SPekka Enberg 	unsigned		function_number	: 3;		/* 10 .. 8  */
16*4402a581SPekka Enberg 	unsigned		device_number	: 5;		/* 15 .. 11 */
17*4402a581SPekka Enberg 	unsigned		bus_number	: 8;		/* 23 .. 16 */
18*4402a581SPekka Enberg 	unsigned		reserved	: 7;		/* 30 .. 24 */
19*4402a581SPekka Enberg 	unsigned		enable_bit	: 1;		/* 31       */
20*4402a581SPekka Enberg };
21*4402a581SPekka Enberg 
2260742802SPekka Enberg void pci__init(void);
2360742802SPekka Enberg 
2460742802SPekka Enberg #endif /* KVM__PCI_H */
25