0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include <linux/of_platform.h>
0013 #include <linux/pci.h>
0014 #include <asm/mpic.h>
0015 #include <sysdev/fsl_soc.h>
0016 #include <sysdev/fsl_pci.h>
0017 #include <asm/udbg.h>
0018
0019 #include "mpc85xx.h"
0020 #include "smp.h"
0021
0022 void __init bsc913x_qds_pic_init(void)
0023 {
0024 struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
0025 MPIC_SINGLE_DEST_CPU,
0026 0, 256, " OpenPIC ");
0027
0028 if (!mpic)
0029 pr_err("bsc913x: Failed to allocate MPIC structure\n");
0030 else
0031 mpic_init(mpic);
0032 }
0033
0034
0035
0036
0037 static void __init bsc913x_qds_setup_arch(void)
0038 {
0039 if (ppc_md.progress)
0040 ppc_md.progress("bsc913x_qds_setup_arch()", 0);
0041
0042 #if defined(CONFIG_SMP)
0043 mpc85xx_smp_init();
0044 #endif
0045
0046 fsl_pci_assign_primary();
0047
0048 pr_info("bsc913x board from Freescale Semiconductor\n");
0049 }
0050
0051 machine_arch_initcall(bsc9132_qds, mpc85xx_common_publish_devices);
0052
0053
0054
0055
0056
0057 static int __init bsc9132_qds_probe(void)
0058 {
0059 return of_machine_is_compatible("fsl,bsc9132qds");
0060 }
0061
0062 define_machine(bsc9132_qds) {
0063 .name = "BSC9132 QDS",
0064 .probe = bsc9132_qds_probe,
0065 .setup_arch = bsc913x_qds_setup_arch,
0066 .init_IRQ = bsc913x_qds_pic_init,
0067 #ifdef CONFIG_PCI
0068 .pcibios_fixup_bus = fsl_pcibios_fixup_bus,
0069 #endif
0070 .get_irq = mpic_get_irq,
0071 .calibrate_decr = generic_calibrate_decr,
0072 .progress = udbg_progress,
0073 };