2013-01-18 16:42:20 +07:00
|
|
|
/*
|
|
|
|
* 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>
|
2013-01-18 16:42:20 +07:00
|
|
|
#include <linux/device.h>
|
2013-01-18 16:42:20 +07:00
|
|
|
#include <linux/platform_device.h>
|
2013-01-18 16:42:24 +07:00
|
|
|
#include <linux/io.h>
|
2013-01-18 16:42:20 +07:00
|
|
|
#include <linux/console.h>
|
2013-01-18 16:42:21 +07:00
|
|
|
#include <linux/of_platform.h>
|
2013-01-18 16:42:20 +07:00
|
|
|
#include <asm/setup.h>
|
|
|
|
#include <asm/clk.h>
|
2013-01-23 18:02:48 +07:00
|
|
|
#include <asm/mach_desc.h>
|
2013-01-18 16:42:20 +07:00
|
|
|
#include <plat/memmap.h>
|
2013-01-23 18:02:48 +07:00
|
|
|
#include <plat/smp.h>
|
2013-01-18 16:42:26 +07:00
|
|
|
#include <plat/irq.h>
|
2013-01-18 16:42:20 +07:00
|
|
|
|
2013-01-23 18:02:48 +07:00
|
|
|
static void __init plat_fpga_early_init(void)
|
2013-01-18 16:42:20 +07:00
|
|
|
{
|
|
|
|
pr_info("[plat-arcfpga]: registering early dev resources\n");
|
2013-01-18 16:42:20 +07:00
|
|
|
|
2014-02-28 15:13:44 +07:00
|
|
|
#ifdef CONFIG_ISS_SMP_EXTN
|
2013-01-18 16:42:26 +07:00
|
|
|
iss_model_init_early_smp();
|
|
|
|
#endif
|
2013-01-18 16:42:20 +07:00
|
|
|
}
|
|
|
|
|
2013-01-23 18:02:48 +07:00
|
|
|
static void __init plat_fpga_populate_dev(void)
|
2013-01-18 16:42:20 +07:00
|
|
|
{
|
2013-01-18 16:42:21 +07:00
|
|
|
/*
|
|
|
|
* Traverses flattened DeviceTree - registering platform devices
|
2014-06-24 15:25:13 +07:00
|
|
|
* (if any) complete with their resources
|
2013-01-18 16:42:21 +07:00
|
|
|
*/
|
2014-06-24 15:25:13 +07:00
|
|
|
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
2013-01-18 16:42:20 +07:00
|
|
|
}
|
2013-01-23 18:02:48 +07:00
|
|
|
|
|
|
|
/*----------------------- 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.
|
|
|
|
*/
|
|
|
|
|
2014-01-27 21:34:17 +07:00
|
|
|
static const char *aa4_compat[] __initconst = {
|
2013-01-23 18:02:48 +07:00
|
|
|
"snps,arc-angel4",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
MACHINE_START(ANGEL4, "angel4")
|
|
|
|
.dt_compat = aa4_compat,
|
|
|
|
.init_early = plat_fpga_early_init,
|
|
|
|
.init_machine = plat_fpga_populate_dev,
|
2014-02-28 15:13:44 +07:00
|
|
|
#ifdef CONFIG_ISS_SMP_EXTN
|
2013-01-23 18:02:48 +07:00
|
|
|
.init_smp = iss_model_init_smp,
|
|
|
|
#endif
|
|
|
|
MACHINE_END
|
|
|
|
|
2014-01-27 21:34:17 +07:00
|
|
|
static const char *ml509_compat[] __initconst = {
|
2013-01-23 18:02:48 +07:00
|
|
|
"snps,arc-ml509",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
MACHINE_START(ML509, "ml509")
|
|
|
|
.dt_compat = ml509_compat,
|
|
|
|
.init_early = plat_fpga_early_init,
|
|
|
|
.init_machine = plat_fpga_populate_dev,
|
2014-09-04 12:27:33 +07:00
|
|
|
#ifdef CONFIG_ISS_SMP_EXTN
|
2013-01-23 18:02:48 +07:00
|
|
|
.init_smp = iss_model_init_smp,
|
|
|
|
#endif
|
|
|
|
MACHINE_END
|
2013-04-18 16:40:39 +07:00
|
|
|
|
2014-01-27 21:34:17 +07:00
|
|
|
static const char *nsimosci_compat[] __initconst = {
|
2013-04-18 16:40:39 +07:00
|
|
|
"snps,nsimosci",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
MACHINE_START(NSIMOSCI, "nsimosci")
|
|
|
|
.dt_compat = nsimosci_compat,
|
|
|
|
.init_early = NULL,
|
|
|
|
.init_machine = plat_fpga_populate_dev,
|
|
|
|
MACHINE_END
|