18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * BSC913xRDB Board Setup 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Author: Priyanka Jain <Priyanka.Jain@freescale.com> 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Copyright 2011-2012 Freescale Semiconductor Inc. 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <linux/of_platform.h> 118c2ecf20Sopenharmony_ci#include <linux/pci.h> 128c2ecf20Sopenharmony_ci#include <asm/mpic.h> 138c2ecf20Sopenharmony_ci#include <sysdev/fsl_soc.h> 148c2ecf20Sopenharmony_ci#include <asm/udbg.h> 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci#include "mpc85xx.h" 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_civoid __init bsc913x_rdb_pic_init(void) 198c2ecf20Sopenharmony_ci{ 208c2ecf20Sopenharmony_ci struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN | 218c2ecf20Sopenharmony_ci MPIC_SINGLE_DEST_CPU, 228c2ecf20Sopenharmony_ci 0, 256, " OpenPIC "); 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci if (!mpic) 258c2ecf20Sopenharmony_ci pr_err("bsc913x: Failed to allocate MPIC structure\n"); 268c2ecf20Sopenharmony_ci else 278c2ecf20Sopenharmony_ci mpic_init(mpic); 288c2ecf20Sopenharmony_ci} 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci/* 318c2ecf20Sopenharmony_ci * Setup the architecture 328c2ecf20Sopenharmony_ci */ 338c2ecf20Sopenharmony_cistatic void __init bsc913x_rdb_setup_arch(void) 348c2ecf20Sopenharmony_ci{ 358c2ecf20Sopenharmony_ci if (ppc_md.progress) 368c2ecf20Sopenharmony_ci ppc_md.progress("bsc913x_rdb_setup_arch()", 0); 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci pr_info("bsc913x board from Freescale Semiconductor\n"); 398c2ecf20Sopenharmony_ci} 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_cimachine_device_initcall(bsc9131_rdb, mpc85xx_common_publish_devices); 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci/* 448c2ecf20Sopenharmony_ci * Called very early, device-tree isn't unflattened 458c2ecf20Sopenharmony_ci */ 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_cistatic int __init bsc9131_rdb_probe(void) 488c2ecf20Sopenharmony_ci{ 498c2ecf20Sopenharmony_ci return of_machine_is_compatible("fsl,bsc9131rdb"); 508c2ecf20Sopenharmony_ci} 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_cidefine_machine(bsc9131_rdb) { 538c2ecf20Sopenharmony_ci .name = "BSC9131 RDB", 548c2ecf20Sopenharmony_ci .probe = bsc9131_rdb_probe, 558c2ecf20Sopenharmony_ci .setup_arch = bsc913x_rdb_setup_arch, 568c2ecf20Sopenharmony_ci .init_IRQ = bsc913x_rdb_pic_init, 578c2ecf20Sopenharmony_ci .get_irq = mpic_get_irq, 588c2ecf20Sopenharmony_ci .calibrate_decr = generic_calibrate_decr, 598c2ecf20Sopenharmony_ci .progress = udbg_progress, 608c2ecf20Sopenharmony_ci}; 61