162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * BSC913xQDS Board Setup 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Author: 662306a36Sopenharmony_ci * Harninder Rai <harninder.rai@freescale.com> 762306a36Sopenharmony_ci * Priyanka Jain <Priyanka.Jain@freescale.com> 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci * Copyright 2014 Freescale Semiconductor Inc. 1062306a36Sopenharmony_ci */ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <linux/of.h> 1362306a36Sopenharmony_ci#include <linux/pci.h> 1462306a36Sopenharmony_ci#include <asm/mpic.h> 1562306a36Sopenharmony_ci#include <sysdev/fsl_soc.h> 1662306a36Sopenharmony_ci#include <sysdev/fsl_pci.h> 1762306a36Sopenharmony_ci#include <asm/udbg.h> 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#include "mpc85xx.h" 2062306a36Sopenharmony_ci#include "smp.h" 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_civoid __init bsc913x_qds_pic_init(void) 2362306a36Sopenharmony_ci{ 2462306a36Sopenharmony_ci struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN | 2562306a36Sopenharmony_ci MPIC_SINGLE_DEST_CPU, 2662306a36Sopenharmony_ci 0, 256, " OpenPIC "); 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci if (!mpic) 2962306a36Sopenharmony_ci pr_err("bsc913x: Failed to allocate MPIC structure\n"); 3062306a36Sopenharmony_ci else 3162306a36Sopenharmony_ci mpic_init(mpic); 3262306a36Sopenharmony_ci} 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci/* 3562306a36Sopenharmony_ci * Setup the architecture 3662306a36Sopenharmony_ci */ 3762306a36Sopenharmony_cistatic void __init bsc913x_qds_setup_arch(void) 3862306a36Sopenharmony_ci{ 3962306a36Sopenharmony_ci if (ppc_md.progress) 4062306a36Sopenharmony_ci ppc_md.progress("bsc913x_qds_setup_arch()", 0); 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci#if defined(CONFIG_SMP) 4362306a36Sopenharmony_ci mpc85xx_smp_init(); 4462306a36Sopenharmony_ci#endif 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci fsl_pci_assign_primary(); 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci pr_info("bsc913x board from Freescale Semiconductor\n"); 4962306a36Sopenharmony_ci} 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_cimachine_arch_initcall(bsc9132_qds, mpc85xx_common_publish_devices); 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_cidefine_machine(bsc9132_qds) { 5462306a36Sopenharmony_ci .name = "BSC9132 QDS", 5562306a36Sopenharmony_ci .compatible = "fsl,bsc9132qds", 5662306a36Sopenharmony_ci .setup_arch = bsc913x_qds_setup_arch, 5762306a36Sopenharmony_ci .init_IRQ = bsc913x_qds_pic_init, 5862306a36Sopenharmony_ci#ifdef CONFIG_PCI 5962306a36Sopenharmony_ci .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 6062306a36Sopenharmony_ci#endif 6162306a36Sopenharmony_ci .get_irq = mpic_get_irq, 6262306a36Sopenharmony_ci .progress = udbg_progress, 6362306a36Sopenharmony_ci}; 64