Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
tools
power
cpupower
utils
helpers
pci.c
Go to the documentation of this file.
1
#if defined(__i386__) || defined(__x86_64__)
2
3
#include <
helpers/helpers.h
>
4
5
/*
6
* pci_acc_init
7
*
8
* PCI access helper function depending on libpci
9
*
10
* **pacc : if a valid pci_dev is returned
11
* *pacc must be passed to pci_acc_cleanup to free it
12
*
13
* domain: domain
14
* bus: bus
15
* slot: slot
16
* func: func
17
* vendor: vendor
18
* device: device
19
* Pass -1 for one of the six above to match any
20
*
21
* Returns :
22
* struct pci_dev which can be used with pci_{read,write}_* functions
23
* to access the PCI config space of matching pci devices
24
*/
25
struct
pci_dev
*pci_acc_init(
struct
pci_access **pacc,
int
domain,
int
bus
,
26
int
slot
,
int
func
,
int
vendor
,
int
dev
)
27
{
28
struct
pci_filter filter_nb_link = { domain,
bus
,
slot
,
func
,
29
vendor
, dev };
30
struct
pci_dev
*
device
;
31
32
*pacc = pci_alloc();
33
if
(*pacc ==
NULL
)
34
return
NULL
;
35
36
pci_init(*pacc);
37
pci_scan_bus
(*pacc);
38
39
for
(device = (*pacc)->devices; device; device = device->next) {
40
if
(pci_filter_match(&filter_nb_link, device))
41
return
device
;
42
}
43
pci_cleanup(*pacc);
44
return
NULL
;
45
}
46
47
/* Typically one wants to get a specific slot(device)/func of the root domain
48
and bus */
49
struct
pci_dev
*pci_slot_func_init(
struct
pci_access **pacc,
int
slot,
50
int
func)
51
{
52
return
pci_acc_init(pacc, 0, 0, slot, func, -1, -1);
53
}
54
55
#endif
/* defined(__i386__) || defined(__x86_64__) */
Generated on Thu Jan 10 2013 12:52:14 for Linux Kernel by
1.8.2