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
drivers
pci
pcie
portdrv_bus.c
Go to the documentation of this file.
1
/*
2
* File: portdrv_bus.c
3
* Purpose: PCI Express Port Bus Driver's Bus Overloading Functions
4
*
5
* Copyright (C) 2004 Intel
6
* Copyright (C) Tom Long Nguyen (
[email protected]
)
7
*/
8
9
#include <linux/module.h>
10
#include <linux/pci.h>
11
#include <linux/kernel.h>
12
#include <linux/errno.h>
13
#include <
linux/pm.h
>
14
15
#include <
linux/pcieport_if.h
>
16
#include "
portdrv.h
"
17
18
static
int
pcie_port_bus_match(
struct
device
*
dev
,
struct
device_driver
*drv);
19
20
struct
bus_type
pcie_port_bus_type
= {
21
.name =
"pci_express"
,
22
.match = pcie_port_bus_match,
23
};
24
EXPORT_SYMBOL_GPL
(pcie_port_bus_type);
25
26
static
int
pcie_port_bus_match(
struct
device
*
dev
,
struct
device_driver
*drv)
27
{
28
struct
pcie_device
*pciedev;
29
struct
pcie_port_service_driver
*
driver
;
30
31
if
(drv->
bus
!= &pcie_port_bus_type || dev->
bus
!= &pcie_port_bus_type)
32
return
0;
33
34
pciedev =
to_pcie_device
(dev);
35
driver =
to_service_driver
(drv);
36
37
if
(driver->
service
!= pciedev->
service
)
38
return
0;
39
40
if
((driver->
port_type
!=
PCIE_ANY_PORT
) &&
41
(driver->
port_type
!= pci_pcie_type(pciedev->
port
)))
42
return
0;
43
44
return
1;
45
}
46
47
int
pcie_port_bus_register
(
void
)
48
{
49
return
bus_register
(&pcie_port_bus_type);
50
}
51
52
void
pcie_port_bus_unregister
(
void
)
53
{
54
bus_unregister
(&pcie_port_bus_type);
55
}
Generated on Thu Jan 10 2013 14:14:24 for Linux Kernel by
1.8.2