1*d729b900SPrabhakar Kushwaha /* 2*d729b900SPrabhakar Kushwaha * BSC913xRDB Board Setup 3*d729b900SPrabhakar Kushwaha * 4*d729b900SPrabhakar Kushwaha * Author: Priyanka Jain <Priyanka.Jain@freescale.com> 5*d729b900SPrabhakar Kushwaha * 6*d729b900SPrabhakar Kushwaha * Copyright 2011-2012 Freescale Semiconductor Inc. 7*d729b900SPrabhakar Kushwaha * 8*d729b900SPrabhakar Kushwaha * This program is free software; you can redistribute it and/or modify it 9*d729b900SPrabhakar Kushwaha * under the terms of the GNU General Public License as published by the 10*d729b900SPrabhakar Kushwaha * Free Software Foundation; either version 2 of the License, or (at your 11*d729b900SPrabhakar Kushwaha * option) any later version. 12*d729b900SPrabhakar Kushwaha */ 13*d729b900SPrabhakar Kushwaha 14*d729b900SPrabhakar Kushwaha #include <linux/of_platform.h> 15*d729b900SPrabhakar Kushwaha #include <linux/pci.h> 16*d729b900SPrabhakar Kushwaha #include <asm/mpic.h> 17*d729b900SPrabhakar Kushwaha #include <sysdev/fsl_soc.h> 18*d729b900SPrabhakar Kushwaha #include <asm/udbg.h> 19*d729b900SPrabhakar Kushwaha 20*d729b900SPrabhakar Kushwaha #include "mpc85xx.h" 21*d729b900SPrabhakar Kushwaha 22*d729b900SPrabhakar Kushwaha void __init bsc913x_rdb_pic_init(void) 23*d729b900SPrabhakar Kushwaha { 24*d729b900SPrabhakar Kushwaha struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN | 25*d729b900SPrabhakar Kushwaha MPIC_SINGLE_DEST_CPU, 26*d729b900SPrabhakar Kushwaha 0, 256, " OpenPIC "); 27*d729b900SPrabhakar Kushwaha 28*d729b900SPrabhakar Kushwaha if (!mpic) 29*d729b900SPrabhakar Kushwaha pr_err("bsc913x: Failed to allocate MPIC structure\n"); 30*d729b900SPrabhakar Kushwaha else 31*d729b900SPrabhakar Kushwaha mpic_init(mpic); 32*d729b900SPrabhakar Kushwaha } 33*d729b900SPrabhakar Kushwaha 34*d729b900SPrabhakar Kushwaha /* 35*d729b900SPrabhakar Kushwaha * Setup the architecture 36*d729b900SPrabhakar Kushwaha */ 37*d729b900SPrabhakar Kushwaha static void __init bsc913x_rdb_setup_arch(void) 38*d729b900SPrabhakar Kushwaha { 39*d729b900SPrabhakar Kushwaha if (ppc_md.progress) 40*d729b900SPrabhakar Kushwaha ppc_md.progress("bsc913x_rdb_setup_arch()", 0); 41*d729b900SPrabhakar Kushwaha 42*d729b900SPrabhakar Kushwaha pr_info("bsc913x board from Freescale Semiconductor\n"); 43*d729b900SPrabhakar Kushwaha } 44*d729b900SPrabhakar Kushwaha 45*d729b900SPrabhakar Kushwaha machine_device_initcall(bsc9131_rdb, mpc85xx_common_publish_devices); 46*d729b900SPrabhakar Kushwaha 47*d729b900SPrabhakar Kushwaha /* 48*d729b900SPrabhakar Kushwaha * Called very early, device-tree isn't unflattened 49*d729b900SPrabhakar Kushwaha */ 50*d729b900SPrabhakar Kushwaha 51*d729b900SPrabhakar Kushwaha static int __init bsc9131_rdb_probe(void) 52*d729b900SPrabhakar Kushwaha { 53*d729b900SPrabhakar Kushwaha unsigned long root = of_get_flat_dt_root(); 54*d729b900SPrabhakar Kushwaha 55*d729b900SPrabhakar Kushwaha return of_flat_dt_is_compatible(root, "fsl,bsc9131rdb"); 56*d729b900SPrabhakar Kushwaha } 57*d729b900SPrabhakar Kushwaha 58*d729b900SPrabhakar Kushwaha define_machine(bsc9131_rdb) { 59*d729b900SPrabhakar Kushwaha .name = "BSC9131 RDB", 60*d729b900SPrabhakar Kushwaha .probe = bsc9131_rdb_probe, 61*d729b900SPrabhakar Kushwaha .setup_arch = bsc913x_rdb_setup_arch, 62*d729b900SPrabhakar Kushwaha .init_IRQ = bsc913x_rdb_pic_init, 63*d729b900SPrabhakar Kushwaha .get_irq = mpic_get_irq, 64*d729b900SPrabhakar Kushwaha .restart = fsl_rstcr_restart, 65*d729b900SPrabhakar Kushwaha .calibrate_decr = generic_calibrate_decr, 66*d729b900SPrabhakar Kushwaha .progress = udbg_progress, 67*d729b900SPrabhakar Kushwaha }; 68