diff options
-rw-r--r-- | arch/cris/Kconfig | 6 | ||||
-rw-r--r-- | arch/cris/Makefile | 4 | ||||
-rw-r--r-- | arch/cris/boot/dts/Makefile | 6 | ||||
-rw-r--r-- | arch/cris/kernel/Makefile | 1 | ||||
-rw-r--r-- | arch/cris/kernel/devicetree.c | 14 | ||||
-rw-r--r-- | arch/cris/kernel/setup.c | 15 |
6 files changed, 46 insertions, 0 deletions
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig index c34561869856..23fb82f3715e 100644 --- a/arch/cris/Kconfig +++ b/arch/cris/Kconfig | |||
@@ -54,6 +54,8 @@ config CRIS | |||
54 | select OLD_SIGACTION | 54 | select OLD_SIGACTION |
55 | select ARCH_REQUIRE_GPIOLIB | 55 | select ARCH_REQUIRE_GPIOLIB |
56 | select IRQ_DOMAIN if ETRAX_ARCH_V32 | 56 | select IRQ_DOMAIN if ETRAX_ARCH_V32 |
57 | select OF if ETRAX_ARCH_V32 | ||
58 | select OF_EARLY_FLATTREE if ETRAX_ARCH_V32 | ||
57 | 59 | ||
58 | config HZ | 60 | config HZ |
59 | int | 61 | int |
@@ -63,6 +65,10 @@ config NR_CPUS | |||
63 | int | 65 | int |
64 | default "1" | 66 | default "1" |
65 | 67 | ||
68 | config BUILTIN_DTB | ||
69 | string "DTB to build into the kernel image" | ||
70 | depends on OF | ||
71 | |||
66 | source "init/Kconfig" | 72 | source "init/Kconfig" |
67 | 73 | ||
68 | source "kernel/Kconfig.freezer" | 74 | source "kernel/Kconfig.freezer" |
diff --git a/arch/cris/Makefile b/arch/cris/Makefile index 39dc7d00083e..4a5404b3d0e4 100644 --- a/arch/cris/Makefile +++ b/arch/cris/Makefile | |||
@@ -40,6 +40,10 @@ else | |||
40 | MACH := | 40 | MACH := |
41 | endif | 41 | endif |
42 | 42 | ||
43 | ifneq ($(CONFIG_BUILTIN_DTB),"") | ||
44 | core-$(CONFIG_OF) += arch/cris/boot/dts/ | ||
45 | endif | ||
46 | |||
43 | LD = $(CROSS_COMPILE)ld -mcrislinux | 47 | LD = $(CROSS_COMPILE)ld -mcrislinux |
44 | 48 | ||
45 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S | 49 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S |
diff --git a/arch/cris/boot/dts/Makefile b/arch/cris/boot/dts/Makefile new file mode 100644 index 000000000000..faf69fb9919f --- /dev/null +++ b/arch/cris/boot/dts/Makefile | |||
@@ -0,0 +1,6 @@ | |||
1 | BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_BUILTIN_DTB)).dtb.o | ||
2 | ifneq ($(CONFIG_BUILTIN_DTB),"") | ||
3 | obj-$(CONFIG_OF) += $(BUILTIN_DTB) | ||
4 | endif | ||
5 | |||
6 | clean-files := *.dtb.S | ||
diff --git a/arch/cris/kernel/Makefile b/arch/cris/kernel/Makefile index b45640b3e600..edef71f12bb8 100644 --- a/arch/cris/kernel/Makefile +++ b/arch/cris/kernel/Makefile | |||
@@ -7,6 +7,7 @@ CPPFLAGS_vmlinux.lds := -DDRAM_VIRTUAL_BASE=0x$(CONFIG_ETRAX_DRAM_VIRTUAL_BASE) | |||
7 | extra-y := vmlinux.lds | 7 | extra-y := vmlinux.lds |
8 | 8 | ||
9 | obj-y := process.o traps.o irq.o ptrace.o setup.o time.o sys_cris.o | 9 | obj-y := process.o traps.o irq.o ptrace.o setup.o time.o sys_cris.o |
10 | obj-y += devicetree.o | ||
10 | 11 | ||
11 | obj-$(CONFIG_MODULES) += crisksyms.o | 12 | obj-$(CONFIG_MODULES) += crisksyms.o |
12 | obj-$(CONFIG_MODULES) += module.o | 13 | obj-$(CONFIG_MODULES) += module.o |
diff --git a/arch/cris/kernel/devicetree.c b/arch/cris/kernel/devicetree.c new file mode 100644 index 000000000000..53ff8d73e7e1 --- /dev/null +++ b/arch/cris/kernel/devicetree.c | |||
@@ -0,0 +1,14 @@ | |||
1 | #include <linux/init.h> | ||
2 | #include <linux/bootmem.h> | ||
3 | #include <linux/printk.h> | ||
4 | |||
5 | void __init early_init_dt_add_memory_arch(u64 base, u64 size) | ||
6 | { | ||
7 | pr_err("%s(%llx, %llx)\n", | ||
8 | __func__, base, size); | ||
9 | } | ||
10 | |||
11 | void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align) | ||
12 | { | ||
13 | return alloc_bootmem_align(size, align); | ||
14 | } | ||
diff --git a/arch/cris/kernel/setup.c b/arch/cris/kernel/setup.c index 905b70ea9939..bb12aa93201d 100644 --- a/arch/cris/kernel/setup.c +++ b/arch/cris/kernel/setup.c | |||
@@ -19,6 +19,9 @@ | |||
19 | #include <linux/utsname.h> | 19 | #include <linux/utsname.h> |
20 | #include <linux/pfn.h> | 20 | #include <linux/pfn.h> |
21 | #include <linux/cpu.h> | 21 | #include <linux/cpu.h> |
22 | #include <linux/of.h> | ||
23 | #include <linux/of_fdt.h> | ||
24 | #include <linux/of_platform.h> | ||
22 | #include <asm/setup.h> | 25 | #include <asm/setup.h> |
23 | #include <arch/system.h> | 26 | #include <arch/system.h> |
24 | 27 | ||
@@ -64,6 +67,10 @@ void __init setup_arch(char **cmdline_p) | |||
64 | unsigned long start_pfn, max_pfn; | 67 | unsigned long start_pfn, max_pfn; |
65 | unsigned long memory_start; | 68 | unsigned long memory_start; |
66 | 69 | ||
70 | #ifdef CONFIG_OF | ||
71 | early_init_dt_scan(__dtb_start); | ||
72 | #endif | ||
73 | |||
67 | /* register an initial console printing routine for printk's */ | 74 | /* register an initial console printing routine for printk's */ |
68 | 75 | ||
69 | init_etrax_debug(); | 76 | init_etrax_debug(); |
@@ -141,6 +148,8 @@ void __init setup_arch(char **cmdline_p) | |||
141 | 148 | ||
142 | reserve_bootmem(PFN_PHYS(start_pfn), bootmap_size, BOOTMEM_DEFAULT); | 149 | reserve_bootmem(PFN_PHYS(start_pfn), bootmap_size, BOOTMEM_DEFAULT); |
143 | 150 | ||
151 | unflatten_and_copy_device_tree(); | ||
152 | |||
144 | /* paging_init() sets up the MMU and marks all pages as reserved */ | 153 | /* paging_init() sets up the MMU and marks all pages as reserved */ |
145 | 154 | ||
146 | paging_init(); | 155 | paging_init(); |
@@ -204,3 +213,9 @@ static int __init topology_init(void) | |||
204 | 213 | ||
205 | subsys_initcall(topology_init); | 214 | subsys_initcall(topology_init); |
206 | 215 | ||
216 | static int __init cris_of_init(void) | ||
217 | { | ||
218 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
219 | return 0; | ||
220 | } | ||
221 | core_initcall(cris_of_init); | ||