xref: /linux/arch/powerpc/platforms/85xx/p1010rdb.c (revision 79790b6818e96c58fe2bffee1b418c16e64e7b80)
12874c5fdSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later
22d05c392SPrabhakar Kushwaha /*
32d05c392SPrabhakar Kushwaha  * P1010RDB Board Setup
42d05c392SPrabhakar Kushwaha  *
52d05c392SPrabhakar Kushwaha  * Copyright 2011 Freescale Semiconductor Inc.
62d05c392SPrabhakar Kushwaha  */
72d05c392SPrabhakar Kushwaha 
82d05c392SPrabhakar Kushwaha #include <linux/stddef.h>
92d05c392SPrabhakar Kushwaha #include <linux/kernel.h>
102d05c392SPrabhakar Kushwaha #include <linux/pci.h>
112d05c392SPrabhakar Kushwaha #include <linux/delay.h>
122d05c392SPrabhakar Kushwaha #include <linux/interrupt.h>
1381d7cac4SRob Herring #include <linux/of.h>
142d05c392SPrabhakar Kushwaha 
152d05c392SPrabhakar Kushwaha #include <asm/time.h>
162d05c392SPrabhakar Kushwaha #include <asm/machdep.h>
172d05c392SPrabhakar Kushwaha #include <asm/pci-bridge.h>
182d05c392SPrabhakar Kushwaha #include <mm/mmu_decl.h>
192d05c392SPrabhakar Kushwaha #include <asm/udbg.h>
202d05c392SPrabhakar Kushwaha #include <asm/mpic.h>
212d05c392SPrabhakar Kushwaha 
222d05c392SPrabhakar Kushwaha #include <sysdev/fsl_soc.h>
232d05c392SPrabhakar Kushwaha #include <sysdev/fsl_pci.h>
242d05c392SPrabhakar Kushwaha 
25199bfbe6SKumar Gala #include "mpc85xx.h"
26199bfbe6SKumar Gala 
p1010_rdb_pic_init(void)27*1c57b9f6SArnd Bergmann static void __init p1010_rdb_pic_init(void)
282d05c392SPrabhakar Kushwaha {
29e55d7f73SKyle Moffett 	struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN |
305019609fSKyle Moffett 	  MPIC_SINGLE_DEST_CPU,
312d05c392SPrabhakar Kushwaha 	  0, 256, " OpenPIC  ");
322d05c392SPrabhakar Kushwaha 
332d05c392SPrabhakar Kushwaha 	BUG_ON(mpic == NULL);
342d05c392SPrabhakar Kushwaha 
352d05c392SPrabhakar Kushwaha 	mpic_init(mpic);
362d05c392SPrabhakar Kushwaha }
372d05c392SPrabhakar Kushwaha 
382d05c392SPrabhakar Kushwaha 
392d05c392SPrabhakar Kushwaha /*
402d05c392SPrabhakar Kushwaha  * Setup the architecture
412d05c392SPrabhakar Kushwaha  */
p1010_rdb_setup_arch(void)422d05c392SPrabhakar Kushwaha static void __init p1010_rdb_setup_arch(void)
432d05c392SPrabhakar Kushwaha {
442d05c392SPrabhakar Kushwaha 	if (ppc_md.progress)
452d05c392SPrabhakar Kushwaha 		ppc_md.progress("p1010_rdb_setup_arch()", 0);
462d05c392SPrabhakar Kushwaha 
47905e75c4SJia Hongtao 	fsl_pci_assign_primary();
482d05c392SPrabhakar Kushwaha 
492d05c392SPrabhakar Kushwaha 	printk(KERN_INFO "P1010 RDB board from Freescale Semiconductor\n");
502d05c392SPrabhakar Kushwaha }
512d05c392SPrabhakar Kushwaha 
52905e75c4SJia Hongtao machine_arch_initcall(p1010_rdb, mpc85xx_common_publish_devices);
532d05c392SPrabhakar Kushwaha 
542d05c392SPrabhakar Kushwaha /*
552d05c392SPrabhakar Kushwaha  * Called very early, device-tree isn't unflattened
562d05c392SPrabhakar Kushwaha  */
p1010_rdb_probe(void)572d05c392SPrabhakar Kushwaha static int __init p1010_rdb_probe(void)
582d05c392SPrabhakar Kushwaha {
5956571384SBenjamin Herrenschmidt 	if (of_machine_is_compatible("fsl,P1010RDB"))
602d05c392SPrabhakar Kushwaha 		return 1;
6156571384SBenjamin Herrenschmidt 	if (of_machine_is_compatible("fsl,P1010RDB-PB"))
62fd1348d0SZhao Qiang 		return 1;
632d05c392SPrabhakar Kushwaha 	return 0;
642d05c392SPrabhakar Kushwaha }
652d05c392SPrabhakar Kushwaha 
define_machine(p1010_rdb)662d05c392SPrabhakar Kushwaha define_machine(p1010_rdb) {
672d05c392SPrabhakar Kushwaha 	.name			= "P1010 RDB",
682d05c392SPrabhakar Kushwaha 	.probe			= p1010_rdb_probe,
692d05c392SPrabhakar Kushwaha 	.setup_arch		= p1010_rdb_setup_arch,
702d05c392SPrabhakar Kushwaha 	.init_IRQ		= p1010_rdb_pic_init,
712d05c392SPrabhakar Kushwaha #ifdef CONFIG_PCI
722d05c392SPrabhakar Kushwaha 	.pcibios_fixup_bus	= fsl_pcibios_fixup_bus,
7348b16180SWang Dongsheng 	.pcibios_fixup_phb      = fsl_pcibios_fixup_phb,
742d05c392SPrabhakar Kushwaha #endif
752d05c392SPrabhakar Kushwaha 	.get_irq		= mpic_get_irq,
762d05c392SPrabhakar Kushwaha 	.progress		= udbg_progress,
772d05c392SPrabhakar Kushwaha };
78