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
arch
xtensa
include
asm
pci-bridge.h
Go to the documentation of this file.
1
/*
2
* include/asm-xtensa/pci-bridge.h
3
*
4
* This file is subject to the terms and conditions of the GNU General
5
* Public License. See the file "COPYING" in the main directory of
6
* this archive for more details.
7
*
8
* Copyright (C) 2005 Tensilica Inc.
9
*/
10
11
#ifndef _XTENSA_PCI_BRIDGE_H
12
#define _XTENSA_PCI_BRIDGE_H
13
14
#ifdef __KERNEL__
15
16
struct
device_node
;
17
struct
pci_controller
;
18
19
/*
20
* pciauto_bus_scan() enumerates the pci space.
21
*/
22
23
extern
int
pciauto_bus_scan
(
struct
pci_controller
*,
int
);
24
25
struct
pci_space {
26
unsigned
long
start
;
27
unsigned
long
end
;
28
unsigned
long
base
;
29
};
30
31
/*
32
* Structure of a PCI controller (host bridge)
33
*/
34
35
struct
pci_controller
{
36
int
index
;
/* used for pci_controller_num */
37
struct
pci_controller
*
next
;
38
struct
pci_bus
*
bus
;
39
void
*arch_data;
40
41
int
first_busno
;
42
int
last_busno
;
43
44
struct
pci_ops
*
ops
;
45
volatile
unsigned
int
*cfg_addr;
46
volatile
unsigned
char
*cfg_data;
47
48
/* Currently, we limit ourselves to 1 IO range and 3 mem
49
* ranges since the common pci_bus structure can't handle more
50
*/
51
struct
resource
io_resource;
52
struct
resource
mem_resources
[3];
53
int
mem_resource_count;
54
55
/* Host bridge I/O and Memory space
56
* Used for BAR placement algorithms
57
*/
58
struct
pci_space
io_space
;
59
struct
pci_space mem_space;
60
61
/* Return the interrupt number fo a device. */
62
int
(*map_irq)(
struct
pci_dev
*,
u8
,
u8
);
63
64
};
65
66
static
inline
void
pcibios_init_resource(
struct
resource
*
res
,
67
unsigned
long
start
,
unsigned
long
end
,
int
flags
,
char
*
name
)
68
{
69
res->
start
=
start
;
70
res->
end
=
end
;
71
res->
flags
=
flags
;
72
res->
name
=
name
;
73
res->
parent
=
NULL
;
74
res->
sibling
=
NULL
;
75
res->
child
=
NULL
;
76
}
77
78
79
/* These are used for config access before all the PCI probing has been done. */
80
int
early_read_config_byte(
struct
pci_controller
*,
int
,
int
,
int
,
u8
*);
81
int
early_read_config_word(
struct
pci_controller
*,
int
,
int
,
int
,
u16
*);
82
int
early_read_config_dword(
struct
pci_controller
*,
int
,
int
,
int
,
u32
*);
83
int
early_write_config_byte(
struct
pci_controller
*,
int
,
int
,
int
,
u8
);
84
int
early_write_config_word(
struct
pci_controller
*,
int
,
int
,
int
,
u16
);
85
int
early_write_config_dword(
struct
pci_controller
*,
int
,
int
,
int
,
u32
);
86
87
#endif
/* __KERNEL__ */
88
#endif
/* _XTENSA_PCI_BRIDGE_H */
Generated on Thu Jan 10 2013 13:08:34 for Linux Kernel by
1.8.2