diff options
Diffstat (limited to 'arch/c6x/kernel/devicetree.c')
-rw-r--r-- | arch/c6x/kernel/devicetree.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/arch/c6x/kernel/devicetree.c b/arch/c6x/kernel/devicetree.c new file mode 100644 index 000000000000..bdb56f09d0ac --- /dev/null +++ b/arch/c6x/kernel/devicetree.c | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | * Architecture specific OF callbacks. | ||
3 | * | ||
4 | * Copyright (C) 2011 Texas Instruments Incorporated | ||
5 | * Author: Mark Salter <msalter@redhat.com> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | * | ||
11 | */ | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/of.h> | ||
14 | #include <linux/of_fdt.h> | ||
15 | #include <linux/initrd.h> | ||
16 | #include <linux/memblock.h> | ||
17 | |||
18 | void __init early_init_devtree(void *params) | ||
19 | { | ||
20 | /* Setup flat device-tree pointer */ | ||
21 | initial_boot_params = params; | ||
22 | |||
23 | /* Retrieve various informations from the /chosen node of the | ||
24 | * device-tree, including the platform type, initrd location and | ||
25 | * size and more ... | ||
26 | */ | ||
27 | of_scan_flat_dt(early_init_dt_scan_chosen, c6x_command_line); | ||
28 | |||
29 | /* Scan memory nodes and rebuild MEMBLOCKs */ | ||
30 | of_scan_flat_dt(early_init_dt_scan_root, NULL); | ||
31 | of_scan_flat_dt(early_init_dt_scan_memory, NULL); | ||
32 | } | ||
33 | |||
34 | |||
35 | #ifdef CONFIG_BLK_DEV_INITRD | ||
36 | void __init early_init_dt_setup_initrd_arch(unsigned long start, | ||
37 | unsigned long end) | ||
38 | { | ||
39 | initrd_start = (unsigned long)__va(start); | ||
40 | initrd_end = (unsigned long)__va(end); | ||
41 | initrd_below_start_ok = 1; | ||
42 | } | ||
43 | #endif | ||
44 | |||
45 | void __init early_init_dt_add_memory_arch(u64 base, u64 size) | ||
46 | { | ||
47 | c6x_add_memory(base, size); | ||
48 | } | ||
49 | |||
50 | void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align) | ||
51 | { | ||
52 | return __va(memblock_alloc(size, align)); | ||
53 | } | ||