diff options
Diffstat (limited to 'arch/ppc/platforms/83xx/mpc834x_sys.c')
-rw-r--r-- | arch/ppc/platforms/83xx/mpc834x_sys.c | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/arch/ppc/platforms/83xx/mpc834x_sys.c b/arch/ppc/platforms/83xx/mpc834x_sys.c index ddd04d4c1ea..b38a851a64e 100644 --- a/arch/ppc/platforms/83xx/mpc834x_sys.c +++ b/arch/ppc/platforms/83xx/mpc834x_sys.c | |||
@@ -62,9 +62,29 @@ extern unsigned long total_memory; /* in mm/init */ | |||
62 | unsigned char __res[sizeof (bd_t)]; | 62 | unsigned char __res[sizeof (bd_t)]; |
63 | 63 | ||
64 | #ifdef CONFIG_PCI | 64 | #ifdef CONFIG_PCI |
65 | #error "PCI is not supported" | 65 | int |
66 | /* NEED mpc83xx_map_irq & mpc83xx_exclude_device | 66 | mpc83xx_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin) |
67 | see platforms/85xx/mpc85xx_ads_common.c */ | 67 | { |
68 | static char pci_irq_table[][4] = | ||
69 | /* | ||
70 | * PCI IDSEL/INTPIN->INTLINE | ||
71 | * A B C D | ||
72 | */ | ||
73 | { | ||
74 | {PIRQA, PIRQB, PIRQC, PIRQD}, /* idsel 0x11 */ | ||
75 | {PIRQC, PIRQD, PIRQA, PIRQB}, /* idsel 0x12 */ | ||
76 | {PIRQD, PIRQA, PIRQB, PIRQC} /* idsel 0x13 */ | ||
77 | }; | ||
78 | |||
79 | const long min_idsel = 0x11, max_idsel = 0x13, irqs_per_slot = 4; | ||
80 | return PCI_IRQ_TABLE_LOOKUP; | ||
81 | } | ||
82 | |||
83 | int | ||
84 | mpc83xx_exclude_device(u_char bus, u_char devfn) | ||
85 | { | ||
86 | return PCIBIOS_SUCCESSFUL; | ||
87 | } | ||
68 | #endif /* CONFIG_PCI */ | 88 | #endif /* CONFIG_PCI */ |
69 | 89 | ||
70 | /* ************************************************************************ | 90 | /* ************************************************************************ |
@@ -88,7 +108,7 @@ mpc834x_sys_setup_arch(void) | |||
88 | 108 | ||
89 | #ifdef CONFIG_PCI | 109 | #ifdef CONFIG_PCI |
90 | /* setup PCI host bridges */ | 110 | /* setup PCI host bridges */ |
91 | mpc83xx_sys_setup_hose(); | 111 | mpc83xx_setup_hose(); |
92 | #endif | 112 | #endif |
93 | mpc83xx_early_serial_map(); | 113 | mpc83xx_early_serial_map(); |
94 | 114 | ||
@@ -175,10 +195,17 @@ mpc834x_sys_init_IRQ(void) | |||
175 | IRQ_SENSE_LEVEL, /* EXT 1 */ | 195 | IRQ_SENSE_LEVEL, /* EXT 1 */ |
176 | IRQ_SENSE_LEVEL, /* EXT 2 */ | 196 | IRQ_SENSE_LEVEL, /* EXT 2 */ |
177 | 0, /* EXT 3 */ | 197 | 0, /* EXT 3 */ |
198 | #ifdef CONFIG_PCI | ||
199 | IRQ_SENSE_LEVEL, /* EXT 4 */ | ||
200 | IRQ_SENSE_LEVEL, /* EXT 5 */ | ||
201 | IRQ_SENSE_LEVEL, /* EXT 6 */ | ||
202 | IRQ_SENSE_LEVEL, /* EXT 7 */ | ||
203 | #else | ||
178 | 0, /* EXT 4 */ | 204 | 0, /* EXT 4 */ |
179 | 0, /* EXT 5 */ | 205 | 0, /* EXT 5 */ |
180 | 0, /* EXT 6 */ | 206 | 0, /* EXT 6 */ |
181 | 0, /* EXT 7 */ | 207 | 0, /* EXT 7 */ |
208 | #endif | ||
182 | }; | 209 | }; |
183 | 210 | ||
184 | ipic_init(binfo->bi_immr_base + 0x00700, 0, MPC83xx_IPIC_IRQ_OFFSET, senses, 8); | 211 | ipic_init(binfo->bi_immr_base + 0x00700, 0, MPC83xx_IPIC_IRQ_OFFSET, senses, 8); |