]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - arch/arc/plat-arcfpga/platform.c
Merge tag 'arc-v3.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc
[mirror_ubuntu-artful-kernel.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 *aa4_compat[] __initconst = {
52 "snps,arc-angel4",
53 NULL,
54 };
55
56 MACHINE_START(ANGEL4, "angel4")
57 .dt_compat = aa4_compat,
58 .init_early = plat_fpga_early_init,
59 .init_machine = plat_fpga_populate_dev,
60 #ifdef CONFIG_ISS_SMP_EXTN
61 .init_smp = iss_model_init_smp,
62 #endif
63 MACHINE_END
64
65 static const char *ml509_compat[] __initconst = {
66 "snps,arc-ml509",
67 NULL,
68 };
69
70 MACHINE_START(ML509, "ml509")
71 .dt_compat = ml509_compat,
72 .init_early = plat_fpga_early_init,
73 .init_machine = plat_fpga_populate_dev,
74 #ifdef CONFIG_SMP
75 .init_smp = iss_model_init_smp,
76 #endif
77 MACHINE_END
78
79 static const char *nsimosci_compat[] __initconst = {
80 "snps,nsimosci",
81 NULL,
82 };
83
84 MACHINE_START(NSIMOSCI, "nsimosci")
85 .dt_compat = nsimosci_compat,
86 .init_early = NULL,
87 .init_machine = plat_fpga_populate_dev,
88 MACHINE_END