xref: /linux/arch/powerpc/platforms/85xx/bsc913x_rdb.c (revision d729b900e589e1f20294de1abaef067d6b9b2124)
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