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
microblaze
include
asm
pci.h
Go to the documentation of this file.
1
/*
2
* This program is free software; you can redistribute it and/or
3
* modify it under the terms of the GNU General Public License
4
* as published by the Free Software Foundation; either version
5
* 2 of the License, or (at your option) any later version.
6
*
7
* Based on powerpc version
8
*/
9
10
#ifndef __ASM_MICROBLAZE_PCI_H
11
#define __ASM_MICROBLAZE_PCI_H
12
#ifdef __KERNEL__
13
14
#include <linux/types.h>
15
#include <linux/slab.h>
16
#include <linux/string.h>
17
#include <
linux/dma-mapping.h
>
18
#include <linux/pci.h>
19
20
#include <asm/scatterlist.h>
21
#include <asm/io.h>
22
#include <asm/prom.h>
23
#include <asm/pci-bridge.h>
24
25
#include <
asm-generic/pci-dma-compat.h
>
26
27
#define PCIBIOS_MIN_IO 0x1000
28
#define PCIBIOS_MIN_MEM 0x10000000
29
30
struct
pci_dev
;
31
32
/* Values for the `which' argument to sys_pciconfig_iobase syscall. */
33
#define IOBASE_BRIDGE_NUMBER 0
34
#define IOBASE_MEMORY 1
35
#define IOBASE_IO 2
36
#define IOBASE_ISA_IO 3
37
#define IOBASE_ISA_MEM 4
38
39
#define pcibios_scan_all_fns(a, b) 0
40
41
/*
42
* Set this to 1 if you want the kernel to re-assign all PCI
43
* bus numbers (don't do that on ppc64 yet !)
44
*/
45
#define pcibios_assign_all_busses() 0
46
47
static
inline
void
pcibios_penalize_isa_irq
(
int
irq
,
int
active
)
48
{
49
/* We don't do dynamic PCI IRQ allocation */
50
}
51
52
#ifdef CONFIG_PCI
53
extern
void
set_pci_dma_ops
(
struct
dma_map_ops
*
dma_ops
);
54
extern
struct
dma_map_ops
*
get_pci_dma_ops
(
void
);
55
#else
/* CONFIG_PCI */
56
#define set_pci_dma_ops(d)
57
#define get_pci_dma_ops() NULL
58
#endif
59
60
#ifdef CONFIG_PCI
61
static
inline
void
pci_dma_burst_advice
(
struct
pci_dev
*pdev,
62
enum
pci_dma_burst_strategy *strat,
63
unsigned
long
*strategy_parameter)
64
{
65
*strat = PCI_DMA_BURST_INFINITY;
66
*strategy_parameter = ~0
UL
;
67
}
68
#endif
69
70
extern
int
pci_domain_nr
(
struct
pci_bus
*
bus
);
71
72
/* Decide whether to display the domain number in /proc */
73
extern
int
pci_proc_domain
(
struct
pci_bus
*
bus
);
74
75
struct
vm_area_struct
;
76
/* Map a range of PCI memory or I/O space for a device into user space */
77
int
pci_mmap_page_range
(
struct
pci_dev
*pdev,
struct
vm_area_struct
*vma,
78
enum
pci_mmap_state
mmap_state,
int
write_combine);
79
80
/* Tell drivers/pci/proc.c that we have pci_mmap_page_range() */
81
#define HAVE_PCI_MMAP 1
82
83
extern
int
pci_legacy_read
(
struct
pci_bus
*
bus
, loff_t
port
,
u32
*
val
,
84
size_t
count
);
85
extern
int
pci_legacy_write
(
struct
pci_bus
*
bus
, loff_t
port
,
u32
val
,
86
size_t
count
);
87
extern
int
pci_mmap_legacy_page_range
(
struct
pci_bus
*
bus
,
88
struct
vm_area_struct
*vma,
89
enum
pci_mmap_state
mmap_state);
90
91
#define HAVE_PCI_LEGACY 1
92
93
/* The PCI address space does equal the physical memory
94
* address space (no IOMMU). The IDE and SCSI device layers use
95
* this boolean for bounce buffer decisions.
96
*/
97
#define PCI_DMA_BUS_IS_PHYS (1)
98
99
static
inline
struct
resource
*pcibios_select_root(
struct
pci_dev
*pdev,
100
struct
resource
*
res
)
101
{
102
struct
resource
*
root
=
NULL
;
103
104
if
(res->
flags
&
IORESOURCE_IO
)
105
root = &
ioport_resource
;
106
if
(res->
flags
&
IORESOURCE_MEM
)
107
root = &
iomem_resource
;
108
109
return
root;
110
}
111
112
extern
void
pcibios_claim_one_bus
(
struct
pci_bus
*
b
);
113
114
extern
void
pcibios_finish_adding_to_bus(
struct
pci_bus
*
bus
);
115
116
extern
void
pcibios_resource_survey
(
void
);
117
118
extern
struct
pci_controller
*
init_phb_dynamic
(
struct
device_node
*
dn
);
119
extern
int
remove_phb_dynamic
(
struct
pci_controller
*phb);
120
121
extern
struct
pci_dev
*
of_create_pci_dev
(
struct
device_node
*
node
,
122
struct
pci_bus
*
bus
,
int
devfn
);
123
124
extern
void
of_scan_pci_bridge
(
struct
device_node
*
node
,
125
struct
pci_dev
*
dev
);
126
127
extern
void
of_scan_bus
(
struct
device_node
*
node
,
struct
pci_bus
*
bus
);
128
extern
void
of_rescan_bus
(
struct
device_node
*
node
,
struct
pci_bus
*
bus
);
129
130
extern
int
pci_read_irq_line
(
struct
pci_dev
*
dev
);
131
132
extern
int
pci_bus_find_capability
(
struct
pci_bus
*
bus
,
133
unsigned
int
devfn
,
int
cap
);
134
135
struct
file
;
136
extern
pgprot_t
pci_phys_mem_access_prot
(
struct
file
*
file
,
137
unsigned
long
pfn,
138
unsigned
long
size
,
139
pgprot_t
prot);
140
141
#define HAVE_ARCH_PCI_RESOURCE_TO_USER
142
extern
void
pci_resource_to_user
(
const
struct
pci_dev
*
dev
,
int
bar,
143
const
struct
resource
*rsrc,
144
resource_size_t
*
start
,
resource_size_t
*
end
);
145
146
extern
void
pcibios_setup_bus_devices
(
struct
pci_bus
*
bus
);
147
extern
void
pcibios_setup_bus_self
(
struct
pci_bus
*
bus
);
148
149
/* This part of code was originally in xilinx-pci.h */
150
#ifdef CONFIG_PCI_XILINX
151
extern
void
__init
xilinx_pci_init
(
void
);
152
#else
153
static
inline
void
__init
xilinx_pci_init
(
void
) {
return
; }
154
#endif
155
156
#include <
asm-generic/pci-dma-compat.h
>
157
158
#endif
/* __KERNEL__ */
159
#endif
/* __ASM_MICROBLAZE_PCI_H */
Generated on Thu Jan 10 2013 12:50:06 for Linux Kernel by
1.8.2