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
arm
mach-footbridge
cats-pci.c
Go to the documentation of this file.
1
/*
2
* linux/arch/arm/mach-footbridge/cats-pci.c
3
*
4
* PCI bios-type initialisation for PCI machines
5
*
6
* Bits taken from various places.
7
*/
8
#include <linux/kernel.h>
9
#include <linux/pci.h>
10
#include <
linux/init.h
>
11
12
#include <asm/irq.h>
13
#include <
asm/mach/pci.h
>
14
#include <
asm/mach-types.h
>
15
16
/* cats host-specific stuff */
17
static
int
irqmap_cats[]
__initdata
= {
IRQ_PCI
,
IRQ_IN0
,
IRQ_IN1
,
IRQ_IN3
};
18
19
static
u8
cats_no_swizzle(
struct
pci_dev
*
dev
,
u8
*
pin
)
20
{
21
return
0;
22
}
23
24
static
int
__init
cats_map_irq(
const
struct
pci_dev
*
dev
,
u8
slot
,
u8
pin
)
25
{
26
if
(dev->
irq
>= 255)
27
return
-1;
/* not a valid interrupt. */
28
29
if
(dev->
irq
>= 128)
30
return
dev->
irq
& 0x1f;
31
32
if
(dev->
irq
>= 1 && dev->
irq
<= 4)
33
return
irqmap_cats[dev->
irq
- 1];
34
35
if
(dev->
irq
!= 0)
36
printk
(
"PCI: device %02x:%02x has unknown irq line %x\n"
,
37
dev->
bus
->number, dev->
devfn
, dev->
irq
);
38
39
return
-1;
40
}
41
42
/*
43
* why not the standard PCI swizzle? does this prevent 4-port tulip
44
* cards being used (ie, pci-pci bridge based cards)?
45
*/
46
static
struct
hw_pci
cats_pci
__initdata
= {
47
.swizzle = cats_no_swizzle,
48
.map_irq = cats_map_irq,
49
.nr_controllers = 1,
50
.ops = &
dc21285_ops
,
51
.setup =
dc21285_setup
,
52
.preinit =
dc21285_preinit
,
53
.postinit =
dc21285_postinit
,
54
};
55
56
static
int
__init
cats_pci_init(
void
)
57
{
58
if
(machine_is_cats())
59
pci_common_init
(&cats_pci);
60
return
0;
61
}
62
63
subsys_initcall
(cats_pci_init);
Generated on Thu Jan 10 2013 12:59:02 for Linux Kernel by
1.8.2