diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2013-01-18 15:12:20 +0530 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2013-02-15 23:15:56 +0530 |
commit | 450dd430bf45ab212a91acfb9bed2528d17f30cd (patch) | |
tree | deaf7d7aef0616834e804de041eea9de3e0a52c8 /arch/arc/kernel/devtree.c | |
parent | 999159a5381bff3bd6f688c5d20fbec9d8789e53 (diff) | |
download | linux-450dd430bf45ab212a91acfb9bed2528d17f30cd.tar.bz2 |
ARC: [DeviceTree] Convert some Kconfig items to runtime values
* mem size now runtime configured (prev CONFIG_ARC_PLAT_SDRAM_SIZE)
* core cpu clk runtime configured (prev CONFIG_ARC_PLAT_CLK)
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'arch/arc/kernel/devtree.c')
-rw-r--r-- | arch/arc/kernel/devtree.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arc/kernel/devtree.c b/arch/arc/kernel/devtree.c index 48e157efad15..c8166dc02c38 100644 --- a/arch/arc/kernel/devtree.c +++ b/arch/arc/kernel/devtree.c @@ -15,6 +15,7 @@ #include <linux/of.h> #include <linux/of_fdt.h> #include <asm/prom.h> +#include <asm/clk.h> /* called from unflatten_device_tree() to bootstrap devicetree itself */ void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align) @@ -34,7 +35,9 @@ int __init setup_machine_fdt(void *dt) struct boot_param_header *devtree = dt; unsigned long dt_root; char *model, *compat; + void *clk; char manufacturer[16]; + unsigned long len; /* check device tree validity */ if (be32_to_cpu(devtree->magic) != OF_DT_HEADER) @@ -60,5 +63,15 @@ int __init setup_machine_fdt(void *dt) /* Retrieve various information from the /chosen node */ of_scan_flat_dt(early_init_dt_scan_chosen, boot_command_line); + /* Initialize {size,address}-cells info */ + of_scan_flat_dt(early_init_dt_scan_root, NULL); + + /* Setup memory, calling early_init_dt_add_memory_arch */ + of_scan_flat_dt(early_init_dt_scan_memory, NULL); + + clk = of_get_flat_dt_prop(dt_root, "clock-frequency", &len); + if (clk) + arc_set_core_freq(of_read_ulong(clk, len/4)); + return 0; } |