1 /* 2 * MPC8536 DS Board Setup 3 * 4 * Copyright 2008 Freescale Semiconductor, Inc. 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License as published by the 8 * Free Software Foundation; either version 2 of the License, or (at your 9 * option) any later version. 10 */ 11 12 #include <linux/stddef.h> 13 #include <linux/kernel.h> 14 #include <linux/pci.h> 15 #include <linux/kdev_t.h> 16 #include <linux/delay.h> 17 #include <linux/seq_file.h> 18 #include <linux/interrupt.h> 19 #include <linux/of_platform.h> 20 21 #include <asm/time.h> 22 #include <asm/machdep.h> 23 #include <asm/pci-bridge.h> 24 #include <mm/mmu_decl.h> 25 #include <asm/prom.h> 26 #include <asm/udbg.h> 27 #include <asm/mpic.h> 28 #include <asm/swiotlb.h> 29 30 #include <sysdev/fsl_soc.h> 31 #include <sysdev/fsl_pci.h> 32 33 #include "mpc85xx.h" 34 35 void __init mpc8536_ds_pic_init(void) 36 { 37 struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN, 38 0, 256, " OpenPIC "); 39 BUG_ON(mpic == NULL); 40 mpic_init(mpic); 41 } 42 43 /* 44 * Setup the architecture 45 */ 46 static void __init mpc8536_ds_setup_arch(void) 47 { 48 if (ppc_md.progress) 49 ppc_md.progress("mpc8536_ds_setup_arch()", 0); 50 51 fsl_pci_assign_primary(); 52 53 swiotlb_detect_4g(); 54 55 printk("MPC8536 DS board from Freescale Semiconductor\n"); 56 } 57 58 machine_arch_initcall(mpc8536_ds, mpc85xx_common_publish_devices); 59 60 machine_arch_initcall(mpc8536_ds, swiotlb_setup_bus_notifier); 61 62 /* 63 * Called very early, device-tree isn't unflattened 64 */ 65 static int __init mpc8536_ds_probe(void) 66 { 67 unsigned long root = of_get_flat_dt_root(); 68 69 return of_flat_dt_is_compatible(root, "fsl,mpc8536ds"); 70 } 71 72 define_machine(mpc8536_ds) { 73 .name = "MPC8536 DS", 74 .probe = mpc8536_ds_probe, 75 .setup_arch = mpc8536_ds_setup_arch, 76 .init_IRQ = mpc8536_ds_pic_init, 77 #ifdef CONFIG_PCI 78 .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 79 .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 80 #endif 81 .get_irq = mpic_get_irq, 82 .restart = fsl_rstcr_restart, 83 .calibrate_decr = generic_calibrate_decr, 84 .progress = udbg_progress, 85 }; 86