1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 3 * Copyright (C) 2007, 2008 Freescale Semiconductor, Inc. All rights reserved. 4 * 5 * Author: John Rigby, <jrigby@freescale.com>, Thur Mar 29 2007 6 * 7 * Description: 8 * MPC5121 ADS board setup 9 */ 10 11 #include <linux/kernel.h> 12 #include <linux/io.h> 13 #include <linux/of_platform.h> 14 15 #include <asm/machdep.h> 16 #include <asm/ipic.h> 17 #include <asm/prom.h> 18 #include <asm/time.h> 19 20 #include <sysdev/fsl_pci.h> 21 22 #include "mpc512x.h" 23 #include "mpc5121_ads.h" 24 25 static void __init mpc5121_ads_setup_arch(void) 26 { 27 #ifdef CONFIG_PCI 28 struct device_node *np; 29 #endif 30 printk(KERN_INFO "MPC5121 ADS board from Freescale Semiconductor\n"); 31 /* 32 * cpld regs are needed early 33 */ 34 mpc5121_ads_cpld_map(); 35 36 #ifdef CONFIG_PCI 37 for_each_compatible_node(np, "pci", "fsl,mpc5121-pci") 38 mpc83xx_add_bridge(np); 39 #endif 40 41 mpc512x_setup_arch(); 42 } 43 44 static void __init mpc5121_ads_init_IRQ(void) 45 { 46 mpc512x_init_IRQ(); 47 mpc5121_ads_cpld_pic_init(); 48 } 49 50 /* 51 * Called very early, MMU is off, device-tree isn't unflattened 52 */ 53 static int __init mpc5121_ads_probe(void) 54 { 55 if (!of_machine_is_compatible("fsl,mpc5121ads")) 56 return 0; 57 58 mpc512x_init_early(); 59 60 return 1; 61 } 62 63 define_machine(mpc5121_ads) { 64 .name = "MPC5121 ADS", 65 .probe = mpc5121_ads_probe, 66 .setup_arch = mpc5121_ads_setup_arch, 67 .init = mpc512x_init, 68 .init_IRQ = mpc5121_ads_init_IRQ, 69 .get_irq = ipic_get_irq, 70 .calibrate_decr = generic_calibrate_decr, 71 .restart = mpc512x_restart, 72 }; 73