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