diff options
Diffstat (limited to 'arch/powerpc/platforms/85xx/bsc913x_qds.c')
| -rw-r--r-- | arch/powerpc/platforms/85xx/bsc913x_qds.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/85xx/bsc913x_qds.c b/arch/powerpc/platforms/85xx/bsc913x_qds.c new file mode 100644 index 000000000000..f0927e58af25 --- /dev/null +++ b/arch/powerpc/platforms/85xx/bsc913x_qds.c | |||
| @@ -0,0 +1,74 @@ | |||
| 1 | /* | ||
| 2 | * BSC913xQDS Board Setup | ||
| 3 | * | ||
| 4 | * Author: | ||
| 5 | * Harninder Rai <harninder.rai@freescale.com> | ||
| 6 | * Priyanka Jain <Priyanka.Jain@freescale.com> | ||
| 7 | * | ||
| 8 | * Copyright 2014 Freescale Semiconductor Inc. | ||
| 9 | * | ||
| 10 | * This program is free software; you can redistribute it and/or modify it | ||
| 11 | * under the terms of the GNU General Public License as published by the | ||
| 12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 13 | * option) any later version. | ||
| 14 | */ | ||
| 15 | |||
| 16 | #include <linux/of_platform.h> | ||
| 17 | #include <linux/pci.h> | ||
| 18 | #include <asm/mpic.h> | ||
| 19 | #include <sysdev/fsl_soc.h> | ||
| 20 | #include <asm/udbg.h> | ||
| 21 | |||
| 22 | #include "mpc85xx.h" | ||
| 23 | #include "smp.h" | ||
| 24 | |||
| 25 | void __init bsc913x_qds_pic_init(void) | ||
| 26 | { | ||
| 27 | struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN | | ||
| 28 | MPIC_SINGLE_DEST_CPU, | ||
| 29 | 0, 256, " OpenPIC "); | ||
| 30 | |||
| 31 | if (!mpic) | ||
| 32 | pr_err("bsc913x: Failed to allocate MPIC structure\n"); | ||
| 33 | else | ||
| 34 | mpic_init(mpic); | ||
| 35 | } | ||
| 36 | |||
| 37 | /* | ||
| 38 | * Setup the architecture | ||
| 39 | */ | ||
| 40 | static void __init bsc913x_qds_setup_arch(void) | ||
| 41 | { | ||
| 42 | if (ppc_md.progress) | ||
| 43 | ppc_md.progress("bsc913x_qds_setup_arch()", 0); | ||
| 44 | |||
| 45 | #if defined(CONFIG_SMP) | ||
| 46 | mpc85xx_smp_init(); | ||
| 47 | #endif | ||
| 48 | |||
| 49 | pr_info("bsc913x board from Freescale Semiconductor\n"); | ||
| 50 | } | ||
| 51 | |||
| 52 | machine_device_initcall(bsc9132_qds, mpc85xx_common_publish_devices); | ||
| 53 | |||
| 54 | /* | ||
| 55 | * Called very early, device-tree isn't unflattened | ||
| 56 | */ | ||
| 57 | |||
| 58 | static int __init bsc9132_qds_probe(void) | ||
| 59 | { | ||
| 60 | unsigned long root = of_get_flat_dt_root(); | ||
| 61 | |||
| 62 | return of_flat_dt_is_compatible(root, "fsl,bsc9132qds"); | ||
| 63 | } | ||
| 64 | |||
| 65 | define_machine(bsc9132_qds) { | ||
| 66 | .name = "BSC9132 QDS", | ||
| 67 | .probe = bsc9132_qds_probe, | ||
| 68 | .setup_arch = bsc913x_qds_setup_arch, | ||
| 69 | .init_IRQ = bsc913x_qds_pic_init, | ||
| 70 | .get_irq = mpic_get_irq, | ||
| 71 | .restart = fsl_rstcr_restart, | ||
| 72 | .calibrate_decr = generic_calibrate_decr, | ||
| 73 | .progress = udbg_progress, | ||
| 74 | }; | ||
