1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 3 * BSC913xQDS Board Setup 4 * 5 * Author: 6 * Harninder Rai <harninder.rai@freescale.com> 7 * Priyanka Jain <Priyanka.Jain@freescale.com> 8 * 9 * Copyright 2014 Freescale Semiconductor Inc. 10 */ 11 12 #include <linux/of_platform.h> 13 #include <linux/pci.h> 14 #include <asm/mpic.h> 15 #include <sysdev/fsl_soc.h> 16 #include <sysdev/fsl_pci.h> 17 #include <asm/udbg.h> 18 19 #include "mpc85xx.h" 20 #include "smp.h" 21 22 void __init bsc913x_qds_pic_init(void) 23 { 24 struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN | 25 MPIC_SINGLE_DEST_CPU, 26 0, 256, " OpenPIC "); 27 28 if (!mpic) 29 pr_err("bsc913x: Failed to allocate MPIC structure\n"); 30 else 31 mpic_init(mpic); 32 } 33 34 /* 35 * Setup the architecture 36 */ 37 static void __init bsc913x_qds_setup_arch(void) 38 { 39 if (ppc_md.progress) 40 ppc_md.progress("bsc913x_qds_setup_arch()", 0); 41 42 #if defined(CONFIG_SMP) 43 mpc85xx_smp_init(); 44 #endif 45 46 fsl_pci_assign_primary(); 47 48 pr_info("bsc913x board from Freescale Semiconductor\n"); 49 } 50 51 machine_arch_initcall(bsc9132_qds, mpc85xx_common_publish_devices); 52 53 /* 54 * Called very early, device-tree isn't unflattened 55 */ 56 57 static int __init bsc9132_qds_probe(void) 58 { 59 return of_machine_is_compatible("fsl,bsc9132qds"); 60 } 61 62 define_machine(bsc9132_qds) { 63 .name = "BSC9132 QDS", 64 .probe = bsc9132_qds_probe, 65 .setup_arch = bsc913x_qds_setup_arch, 66 .init_IRQ = bsc913x_qds_pic_init, 67 #ifdef CONFIG_PCI 68 .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 69 #endif 70 .get_irq = mpic_get_irq, 71 .calibrate_decr = generic_calibrate_decr, 72 .progress = udbg_progress, 73 }; 74