]> git.karo-electronics.de Git - linux-beck.git/commitdiff
powerpc: use libfdt accessors for header data
authorRob Herring <robh@kernel.org>
Mon, 31 Mar 2014 20:15:00 +0000 (15:15 -0500)
committerRob Herring <robh@kernel.org>
Wed, 30 Apr 2014 05:59:18 +0000 (00:59 -0500)
With libfdt support, we can take advantage of helper accessors in libfdt
for accessing the FDT header data. This makes the code more readable and
makes the FDT blob structure more opaque to the kernel. This also
prepares for removing struct boot_param_header completely.

Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Tested-by: Grant Likely <grant.likely@linaro.org>
Tested-by: Stephen Chivers <schivers@csc.com>
arch/powerpc/kernel/Makefile
arch/powerpc/kernel/prom.c

index fcc9a89a46950867c81aaec671f9ac6d782c0a77..fab19ec25597c0a8ac95732b42354a8f58a335a4 100644 (file)
@@ -2,6 +2,7 @@
 # Makefile for the linux kernel.
 #
 
+CFLAGS_prom.o          = -I$(src)/../../../scripts/dtc/libfdt
 CFLAGS_ptrace.o                += -DUTS_MACHINE='"$(UTS_MACHINE)"'
 
 subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
index 73b7e9b450546e4108f04fe0b26f48f87b3fbe9e..613a860a203c9665287910d4218498de40432973 100644 (file)
@@ -33,6 +33,7 @@
 #include <linux/memblock.h>
 #include <linux/of.h>
 #include <linux/of_fdt.h>
+#include <linux/libfdt.h>
 
 #include <asm/prom.h>
 #include <asm/rtas.h>
@@ -117,14 +118,14 @@ static void __init move_device_tree(void)
        DBG("-> move_device_tree\n");
 
        start = __pa(initial_boot_params);
-       size = be32_to_cpu(initial_boot_params->totalsize);
+       size = fdt_totalsize(initial_boot_params);
 
        if ((memory_limit && (start + size) > PHYSICAL_START + memory_limit) ||
                        overlaps_crashkernel(start, size) ||
                        overlaps_initrd(start, size)) {
                p = __va(memblock_alloc(size, PAGE_SIZE));
                memcpy(p, initial_boot_params, size);
-               initial_boot_params = (struct boot_param_header *)p;
+               initial_boot_params = p;
                DBG("Moved device tree to 0x%p\n", p);
        }
 
@@ -324,9 +325,9 @@ static int __init early_init_dt_scan_cpus(unsigned long node,
                 * version 2 of the kexec param format adds the phys cpuid of
                 * booted proc.
                 */
-               if (be32_to_cpu(initial_boot_params->version) >= 2) {
+               if (fdt_version(initial_boot_params) >= 2) {
                        if (be32_to_cpu(intserv[i]) ==
-                           be32_to_cpu(initial_boot_params->boot_cpuid_phys)) {
+                           fdt_boot_cpuid_phys(initial_boot_params)) {
                                found = boot_cpu_count;
                                found_thread = i;
                        }
@@ -599,7 +600,7 @@ static void __init early_reserve_mem(void)
        __be64 *reserve_map;
 
        reserve_map = (__be64 *)(((unsigned long)initial_boot_params) +
-                       be32_to_cpu(initial_boot_params->off_mem_rsvmap));
+                       fdt_off_mem_rsvmap(initial_boot_params));
 
        /* Look for the new "reserved-regions" property in the DT */
        early_reserve_mem_dt();