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