Root/
1 | /* |
2 | * arch/arch/mach-ixp4xx/fsg-pci.c |
3 | * |
4 | * FSG board-level PCI initialization |
5 | * |
6 | * Author: Rod Whitby <rod@whitby.id.au> |
7 | * Maintainer: http://www.nslu2-linux.org/ |
8 | * |
9 | * based on ixdp425-pci.c: |
10 | * Copyright (C) 2002 Intel Corporation. |
11 | * Copyright (C) 2003-2004 MontaVista Software, Inc. |
12 | * |
13 | * This program is free software; you can redistribute it and/or modify |
14 | * it under the terms of the GNU General Public License version 2 as |
15 | * published by the Free Software Foundation. |
16 | * |
17 | */ |
18 | |
19 | #include <linux/pci.h> |
20 | #include <linux/init.h> |
21 | #include <linux/irq.h> |
22 | #include <asm/mach/pci.h> |
23 | #include <asm/mach-types.h> |
24 | |
25 | #define MAX_DEV 3 |
26 | #define IRQ_LINES 3 |
27 | |
28 | /* PCI controller GPIO to IRQ pin mappings */ |
29 | #define INTA 6 |
30 | #define INTB 7 |
31 | #define INTC 5 |
32 | |
33 | void __init fsg_pci_preinit(void) |
34 | { |
35 | set_irq_type(IXP4XX_GPIO_IRQ(INTA), IRQ_TYPE_LEVEL_LOW); |
36 | set_irq_type(IXP4XX_GPIO_IRQ(INTB), IRQ_TYPE_LEVEL_LOW); |
37 | set_irq_type(IXP4XX_GPIO_IRQ(INTC), IRQ_TYPE_LEVEL_LOW); |
38 | ixp4xx_pci_preinit(); |
39 | } |
40 | |
41 | static int __init fsg_map_irq(struct pci_dev *dev, u8 slot, u8 pin) |
42 | { |
43 | static int pci_irq_table[IRQ_LINES] = { |
44 | IXP4XX_GPIO_IRQ(INTC), |
45 | IXP4XX_GPIO_IRQ(INTB), |
46 | IXP4XX_GPIO_IRQ(INTA), |
47 | }; |
48 | |
49 | int irq = -1; |
50 | slot -= 11; |
51 | |
52 | if (slot >= 1 && slot <= MAX_DEV && pin >= 1 && pin <= IRQ_LINES) |
53 | irq = pci_irq_table[slot - 1]; |
54 | printk(KERN_INFO "%s: Mapped slot %d pin %d to IRQ %d\n", |
55 | __func__, slot, pin, irq); |
56 | |
57 | return irq; |
58 | } |
59 | |
60 | struct hw_pci fsg_pci __initdata = { |
61 | .nr_controllers = 1, |
62 | .preinit = fsg_pci_preinit, |
63 | .swizzle = pci_std_swizzle, |
64 | .setup = ixp4xx_setup, |
65 | .scan = ixp4xx_scan_bus, |
66 | .map_irq = fsg_map_irq, |
67 | }; |
68 | |
69 | int __init fsg_pci_init(void) |
70 | { |
71 | if (machine_is_fsg()) |
72 | pci_common_init(&fsg_pci); |
73 | return 0; |
74 | } |
75 | |
76 | subsys_initcall(fsg_pci_init); |
77 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9