ARC: [arcfpga] consolidate machine description, DT
[firefly-linux-kernel-4.4.55.git] / arch / arc / plat-arcfpga / platform.c
1 /*
2  * ARC FPGA Platform support code
3  *
4  * Copyright (C) 2012 Synopsys, Inc. (www.synopsys.com)
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  */
10
11 #include <linux/types.h>
12 #include <linux/init.h>
13 #include <linux/device.h>
14 #include <linux/platform_device.h>
15 #include <linux/io.h>
16 #include <linux/console.h>
17 #include <linux/of_platform.h>
18 #include <asm/setup.h>
19 #include <asm/clk.h>
20 #include <asm/mach_desc.h>
21 #include <plat/memmap.h>
22 #include <plat/smp.h>
23 #include <plat/irq.h>
24
25 static void __init plat_fpga_early_init(void)
26 {
27         pr_info("[plat-arcfpga]: registering early dev resources\n");
28
29 #ifdef CONFIG_ISS_SMP_EXTN
30         iss_model_init_early_smp();
31 #endif
32 }
33
34 static void __init plat_fpga_populate_dev(void)
35 {
36         /*
37          * Traverses flattened DeviceTree - registering platform devices
38          * (if any) complete with their resources
39          */
40         of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
41 }
42
43 /*----------------------- Machine Descriptions ------------------------------
44  *
45  * Machine description is simply a set of platform/board specific callbacks
46  * This is not directly related to DeviceTree based dynamic device creation,
47  * however as part of early device tree scan, we also select the right
48  * callback set, by matching the DT compatible name.
49  */
50
51 static const char *legacy_fpga_compat[] __initconst = {
52         "snps,arc-angel4",
53         "snps,arc-ml509",
54         NULL,
55 };
56
57 MACHINE_START(LEGACY_FPGA, "legacy_fpga")
58         .dt_compat      = legacy_fpga_compat,
59         .init_early     = plat_fpga_early_init,
60         .init_machine   = plat_fpga_populate_dev,
61 #ifdef CONFIG_ISS_SMP_EXTN
62         .init_smp       = iss_model_init_smp,
63 #endif
64 MACHINE_END
65
66 static const char *simulation_compat[] __initconst = {
67         "snps,nsim",
68         "snps,nsimosci",
69         NULL,
70 };
71
72 MACHINE_START(SIMULATION, "simulation")
73         .dt_compat      = simulation_compat,
74         .init_machine   = plat_fpga_populate_dev,
75 MACHINE_END