diff options
Diffstat (limited to 'arch/ppc/platforms/pal4_pci.c')
-rw-r--r-- | arch/ppc/platforms/pal4_pci.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/arch/ppc/platforms/pal4_pci.c b/arch/ppc/platforms/pal4_pci.c new file mode 100644 index 00000000000..c3b1b757a48 --- /dev/null +++ b/arch/ppc/platforms/pal4_pci.c | |||
@@ -0,0 +1,77 @@ | |||
1 | /* | ||
2 | * arch/ppc/platforms/pal4_pci.c | ||
3 | * | ||
4 | * PCI support for SBS Palomar IV | ||
5 | * | ||
6 | * Author: Dan Cox | ||
7 | * | ||
8 | * 2002 (c) MontaVista, Software, Inc. This file is licensed under | ||
9 | * the terms of the GNU General Public License version 2. This program | ||
10 | * is licensed "as is" without any warranty of any kind, whether express | ||
11 | * or implied. | ||
12 | */ | ||
13 | |||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/init.h> | ||
16 | #include <linux/pci.h> | ||
17 | |||
18 | #include <asm/byteorder.h> | ||
19 | #include <asm/machdep.h> | ||
20 | #include <asm/io.h> | ||
21 | #include <asm/pci-bridge.h> | ||
22 | #include <asm/uaccess.h> | ||
23 | |||
24 | #include <syslib/cpc700.h> | ||
25 | |||
26 | #include "pal4.h" | ||
27 | |||
28 | /* not much to this.... */ | ||
29 | static inline int __init | ||
30 | pal4_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin) | ||
31 | { | ||
32 | if (idsel == 9) | ||
33 | return PAL4_ETH; | ||
34 | else | ||
35 | return PAL4_INTA + (idsel - 3); | ||
36 | } | ||
37 | |||
38 | void __init | ||
39 | pal4_find_bridges(void) | ||
40 | { | ||
41 | struct pci_controller *hose; | ||
42 | |||
43 | hose = pcibios_alloc_controller(); | ||
44 | if (!hose) | ||
45 | return; | ||
46 | |||
47 | hose->first_busno = 0; | ||
48 | hose->last_busno = 0xff; | ||
49 | hose->pci_mem_offset = 0; | ||
50 | |||
51 | /* Could snatch these from the CPC700.... */ | ||
52 | pci_init_resource(&hose->io_resource, | ||
53 | 0x0, | ||
54 | 0x03ffffff, | ||
55 | IORESOURCE_IO, | ||
56 | "PCI host bridge"); | ||
57 | |||
58 | pci_init_resource(&hose->mem_resources[0], | ||
59 | 0x90000000, | ||
60 | 0x9fffffff, | ||
61 | IORESOURCE_MEM, | ||
62 | "PCI host bridge"); | ||
63 | |||
64 | hose->io_space.start = 0x00800000; | ||
65 | hose->io_space.end = 0x03ffffff; | ||
66 | hose->mem_space.start = 0x90000000; | ||
67 | hose->mem_space.end = 0x9fffffff; | ||
68 | hose->io_base_virt = (void *) 0xf8000000; | ||
69 | |||
70 | setup_indirect_pci(hose, CPC700_PCI_CONFIG_ADDR, | ||
71 | CPC700_PCI_CONFIG_DATA); | ||
72 | |||
73 | hose->last_busno = pciauto_bus_scan(hose, hose->first_busno); | ||
74 | |||
75 | ppc_md.pci_swizzle = common_swizzle; | ||
76 | ppc_md.pci_map_irq = pal4_map_irq; | ||
77 | } | ||