Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 360147
b: refs/heads/master
c: 450dd43
h: refs/heads/master
i:
  360145: 6420a11
  360143: cd5cd75
v: v3
  • Loading branch information
Vineet Gupta committed Feb 15, 2013
1 parent 88d7867 commit 209fc5b
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 999159a5381bff3bd6f688c5d20fbec9d8789e53
refs/heads/master: 450dd430bf45ab212a91acfb9bed2528d17f30cd
12 changes: 0 additions & 12 deletions trunk/arch/arc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -249,10 +249,6 @@ source "arch/arc/plat-arcfpga/Kconfig"

#New platform adds here

config ARC_PLAT_CLK
int "Clk speed in Hz"
default "80000000"

config LINUX_LINK_BASE
hex "Linux Link Address"
default "0x80000000"
Expand All @@ -266,14 +262,6 @@ config LINUX_LINK_BASE
Linux needs to be scooted a bit.
If you don't know what the above means, leave this setting alone.

config ARC_PLAT_SDRAM_SIZE
hex "SD RAM Size"
default "0x10000000"
help
Implies the amount of SDRAM/DRAM Linux is going to claim/own.
The actual memory itself could be larger than this number. But for
all software purposes, this is the amt of memory.

endmenu # "Platform Board Configuration"

config ARC_STACK_NONEXEC
Expand Down
6 changes: 5 additions & 1 deletion trunk/arch/arc/boot/dts/skeleton.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,13 @@

/ {
compatible = "snps,arc";
clock-frequency = <80000000>; /* 80 MHZ */
#address-cells = <1>;
#size-cells = <1>;
chosen { };
aliases { };
memory { device_type = "memory"; reg = <0 0>; };
memory {
device_type = "memory";
reg = <0x00000000 0x10000000>; /* 256M */
};
};
2 changes: 2 additions & 0 deletions trunk/arch/arc/include/asm/clk.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,6 @@ static inline unsigned long arc_get_core_freq(void)
return core_freq;
}

extern int arc_set_core_freq(unsigned long);

#endif
12 changes: 11 additions & 1 deletion trunk/arch/arc/kernel/clk.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,14 @@

#include <asm/clk.h>

unsigned long core_freq = CONFIG_ARC_PLAT_CLK;
unsigned long core_freq = 800000000;

/*
* As of now we default to device-tree provided clock
* In future we can determine this in early boot
*/
int arc_set_core_freq(unsigned long freq)
{
core_freq = freq;
return 0;
}
13 changes: 13 additions & 0 deletions trunk/arch/arc/kernel/devtree.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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;
}
9 changes: 6 additions & 3 deletions trunk/arch/arc/mm/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ char empty_zero_page[PAGE_SIZE] __aligned(PAGE_SIZE);
EXPORT_SYMBOL(empty_zero_page);

/* Default tot mem from .config */
static unsigned long arc_mem_sz = CONFIG_ARC_PLAT_SDRAM_SIZE;
static unsigned long arc_mem_sz = 0x20000000; /* some default */

/* User can over-ride above with "mem=nnn[KkMm]" in cmdline */
static int __init setup_mem_sz(char *str)
Expand All @@ -41,7 +41,8 @@ early_param("mem", setup_mem_sz);

void __init early_init_dt_add_memory_arch(u64 base, u64 size)
{
pr_err("%s(%llx, %llx)\n", __func__, base, size);
arc_mem_sz = size & PAGE_MASK;
pr_info("Memory size set via devicetree %ldM\n", TO_MB(arc_mem_sz));
}

/*
Expand All @@ -62,7 +63,9 @@ void __init setup_arch_memory(void)

/*
* We do it here, so that memory is correctly instantiated
* even if "mem=xxx" cmline over-ride is not given
* even if "mem=xxx" cmline over-ride is given and/or
* DT has memory node. Each causes an update to @arc_mem_sz
* and we finally add memory one here
*/
memblock_add(CONFIG_LINUX_LINK_BASE, arc_mem_sz);

Expand Down

0 comments on commit 209fc5b

Please sign in to comment.