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 35void __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 */ 46static 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 58machine_arch_initcall(mpc8536_ds, mpc85xx_common_publish_devices); 59 60machine_arch_initcall(mpc8536_ds, swiotlb_setup_bus_notifier); 61 62/* 63 * Called very early, device-tree isn't unflattened 64 */ 65static 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 72define_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