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 printk(KERN_INFO "MPC5121 ADS board from Freescale Semiconductor\n"); 28 /* 29 * cpld regs are needed early 30 */ 31 mpc5121_ads_cpld_map(); 32 33 mpc512x_setup_arch(); 34 } 35 36 static void __init mpc5121_ads_setup_pci(void) 37 { 38 #ifdef CONFIG_PCI 39 struct device_node *np; 40 41 for_each_compatible_node(np, "pci", "fsl,mpc5121-pci") 42 mpc83xx_add_bridge(np); 43 #endif 44 } 45 46 static void __init mpc5121_ads_init_IRQ(void) 47 { 48 mpc512x_init_IRQ(); 49 mpc5121_ads_cpld_pic_init(); 50 } 51 52 /* 53 * Called very early, MMU is off, device-tree isn't unflattened 54 */ 55 static int __init mpc5121_ads_probe(void) 56 { 57 if (!of_machine_is_compatible("fsl,mpc5121ads")) 58 return 0; 59 60 mpc512x_init_early(); 61 62 return 1; 63 } 64 65 define_machine(mpc5121_ads) { 66 .name = "MPC5121 ADS", 67 .probe = mpc5121_ads_probe, 68 .setup_arch = mpc5121_ads_setup_arch, 69 .discover_phbs = mpc5121_ads_setup_pci, 70 .init = mpc512x_init, 71 .init_IRQ = mpc5121_ads_init_IRQ, 72 .get_irq = ipic_get_irq, 73 .calibrate_decr = generic_calibrate_decr, 74 .restart = mpc512x_restart, 75 }; 76