Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
pci.h
Go to the documentation of this file.
1 /*
2  * pci.h
3  *
4  * PCI defines and function prototypes
5  * Copyright 1994, Drew Eckhardt
6  * Copyright 1997--1999 Martin Mares <[email protected]>
7  *
8  * For more information, please consult the following manuals (look at
9  * http://www.pcisig.com/ for how to get them):
10  *
11  * PCI BIOS Specification
12  * PCI Local Bus Specification
13  * PCI to PCI Bridge Specification
14  * PCI System Design Guide
15  */
16 
17 #ifndef _UAPILINUX_PCI_H
18 #define _UAPILINUX_PCI_H
19 
20 #include <linux/pci_regs.h> /* The pci register defines */
21 
22 /*
23  * The PCI interface treats multi-function devices as independent
24  * devices. The slot/function address of each device is encoded
25  * in a single byte as follows:
26  *
27  * 7:3 = slot
28  * 2:0 = function
29  */
30 #define PCI_DEVFN(slot, func) ((((slot) & 0x1f) << 3) | ((func) & 0x07))
31 #define PCI_SLOT(devfn) (((devfn) >> 3) & 0x1f)
32 #define PCI_FUNC(devfn) ((devfn) & 0x07)
33 
34 /* Ioctls for /proc/bus/pci/X/Y nodes. */
35 #define PCIIOC_BASE ('P' << 24 | 'C' << 16 | 'I' << 8)
36 #define PCIIOC_CONTROLLER (PCIIOC_BASE | 0x00) /* Get controller for PCI device. */
37 #define PCIIOC_MMAP_IS_IO (PCIIOC_BASE | 0x01) /* Set mmap state to I/O space. */
38 #define PCIIOC_MMAP_IS_MEM (PCIIOC_BASE | 0x02) /* Set mmap state to MEM space. */
39 #define PCIIOC_WRITE_COMBINE (PCIIOC_BASE | 0x03) /* Enable/disable write-combining. */
40 
41 #endif /* _UAPILINUX_PCI_H */