| /* |
| * ARC FPGA Platform support code |
| * |
| * Copyright (C) 2012 Synopsys, Inc. (www.synopsys.com) |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| */ |
| |
| #include <linux/types.h> |
| #include <linux/init.h> |
| #include <linux/device.h> |
| #include <linux/platform_device.h> |
| #include <linux/io.h> |
| #include <linux/console.h> |
| #include <linux/of_platform.h> |
| #include <asm/setup.h> |
| #include <asm/clk.h> |
| #include <asm/mach_desc.h> |
| #include <plat/memmap.h> |
| #include <plat/smp.h> |
| #include <plat/irq.h> |
| |
| static void __init plat_fpga_early_init(void) |
| { |
| pr_info("[plat-arcfpga]: registering early dev resources\n"); |
| |
| #ifdef CONFIG_ISS_SMP_EXTN |
| iss_model_init_early_smp(); |
| #endif |
| } |
| |
| static void __init plat_fpga_populate_dev(void) |
| { |
| /* |
| * Traverses flattened DeviceTree - registering platform devices |
| * (if any) complete with their resources |
| */ |
| of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); |
| } |
| |
| /*----------------------- Machine Descriptions ------------------------------ |
| * |
| * Machine description is simply a set of platform/board specific callbacks |
| * This is not directly related to DeviceTree based dynamic device creation, |
| * however as part of early device tree scan, we also select the right |
| * callback set, by matching the DT compatible name. |
| */ |
| |
| static const char *aa4_compat[] __initconst = { |
| "snps,arc-angel4", |
| NULL, |
| }; |
| |
| MACHINE_START(ANGEL4, "angel4") |
| .dt_compat = aa4_compat, |
| .init_early = plat_fpga_early_init, |
| .init_machine = plat_fpga_populate_dev, |
| #ifdef CONFIG_ISS_SMP_EXTN |
| .init_smp = iss_model_init_smp, |
| #endif |
| MACHINE_END |
| |
| static const char *ml509_compat[] __initconst = { |
| "snps,arc-ml509", |
| NULL, |
| }; |
| |
| MACHINE_START(ML509, "ml509") |
| .dt_compat = ml509_compat, |
| .init_early = plat_fpga_early_init, |
| .init_machine = plat_fpga_populate_dev, |
| #ifdef CONFIG_SMP |
| .init_smp = iss_model_init_smp, |
| #endif |
| MACHINE_END |
| |
| static const char *nsimosci_compat[] __initconst = { |
| "snps,nsimosci", |
| NULL, |
| }; |
| |
| MACHINE_START(NSIMOSCI, "nsimosci") |
| .dt_compat = nsimosci_compat, |
| .init_early = NULL, |
| .init_machine = plat_fpga_populate_dev, |
| MACHINE_END |