17 #include <linux/stddef.h>
18 #include <linux/kernel.h>
19 #include <linux/pci.h>
20 #include <linux/kdev_t.h>
27 #include <asm/machdep.h>
28 #include <asm/pci-bridge.h>
33 #include <asm/swiotlb.h>
34 #include <asm/nvram.h>
50 unsigned long root = of_get_flat_dt_root();
52 if (of_flat_dt_is_compatible(root,
"fsl,MPC8572DS-CAMP")) {
71 for_each_node_by_type(np,
"interrupt-controller")
77 if (cascade_node ==
NULL) {
83 of_node_put(cascade_node);
86 static void ge_imp3a_pci_assign_primary(
void)
92 for_each_node_by_type(np,
"pci") {
97 if ((rsrc.start & 0xfffff) == 0x9000)
107 static void __init ge_imp3a_setup_arch(
void)
112 ppc_md.progress(
"ge_imp3a_setup_arch()", 0);
116 ge_imp3a_pci_assign_primary();
129 #if defined(CONFIG_MMIO_NVRAM)
137 static unsigned int ge_imp3a_get_pcb_rev(
void)
142 return (reg >> 8) & 0xff;
146 static unsigned int ge_imp3a_get_board_rev(
void)
155 static unsigned int ge_imp3a_get_fpga_rev(
void)
160 return (reg >> 8) & 0xff;
164 static unsigned int ge_imp3a_get_cpci_geo_addr(
void)
169 return (reg & 0x0f00) >> 8;
173 static unsigned int ge_imp3a_get_cpci_is_syscon(
void)
178 return reg & (1 << 12);
181 static void ge_imp3a_show_cpuinfo(
struct seq_file *
m)
183 seq_printf(m,
"Vendor\t\t: GE Intelligent Platforms\n");
185 seq_printf(m,
"Revision\t: %u%c\n", ge_imp3a_get_pcb_rev(),
186 (
'A' + ge_imp3a_get_board_rev() - 1));
188 seq_printf(m,
"FPGA Revision\t: %u\n", ge_imp3a_get_fpga_rev());
190 seq_printf(m,
"cPCI geo. addr\t: %u\n", ge_imp3a_get_cpci_geo_addr());
193 ge_imp3a_get_cpci_is_syscon() ?
"yes" :
"no");
199 static int __init ge_imp3a_probe(
void)
201 unsigned long root = of_get_flat_dt_root();
203 return of_flat_dt_is_compatible(root,
"ge,IMP3A");
212 .probe = ge_imp3a_probe,
213 .setup_arch = ge_imp3a_setup_arch,
215 .show_cpuinfo = ge_imp3a_show_cpuinfo,
217 .pcibios_fixup_bus = fsl_pcibios_fixup_bus,
220 .restart = fsl_rstcr_restart,