MIPS: Netlogic: replace early_init_devtree() call
authorJayachandran C <jchandra@broadcom.com>
Mon, 4 Nov 2013 12:21:54 +0000 (17:51 +0530)
committerRob Herring <rob.herring@calxeda.com>
Wed, 6 Nov 2013 22:14:04 +0000 (16:14 -0600)
The early_init_devtree() API was removed in linux-next for 3.13 with
commit "mips: use early_init_dt_scan". This causes Netlogic XLP compile
to fail:

arch/mips/netlogic/xlp/setup.c:101: undefined reference to `early_init_devtree'

Add xlp_early_init_devtree() which uses the __dt_setup_arch() to
handle early device tree related initialization to fix this.

Signed-off-by: Jayachandran C <jchandra@broadcom.com>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
arch/mips/include/asm/netlogic/xlp-hal/xlp.h
arch/mips/netlogic/xlp/dt.c
arch/mips/netlogic/xlp/setup.c

index 17daffb280a30f602dfd3edd119cabe5989a997d..470f2095b34613e6ab93851334f560c8421cceff 100644 (file)
@@ -69,6 +69,7 @@ void nlm_hal_init(void);
 int xlp_get_dram_map(int n, uint64_t *dram_map);
 
 /* Device tree related */
+void xlp_early_init_devtree(void);
 void *xlp_dt_init(void *fdtp);
 
 static inline int cpu_is_xlpii(void)
index 88df445dda76b596f3f2d3b374e1730a69480122..8316d5454b1751d8f65e5f63a1017e198ce0bc31 100644 (file)
 #include <linux/of_platform.h>
 #include <linux/of_device.h>
 
+#include <asm/prom.h>
+
 extern u32 __dtb_xlp_evp_begin[], __dtb_xlp_svp_begin[],
        __dtb_xlp_fvp_begin[], __dtb_start[];
+static void *xlp_fdt_blob;
 
 void __init *xlp_dt_init(void *fdtp)
 {
@@ -67,19 +70,26 @@ void __init *xlp_dt_init(void *fdtp)
                        break;
                }
        }
-       initial_boot_params = fdtp;
+       xlp_fdt_blob = fdtp;
        return fdtp;
 }
 
+void __init xlp_early_init_devtree(void)
+{
+       __dt_setup_arch(xlp_fdt_blob);
+       strlcpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE);
+}
+
 void __init device_tree_init(void)
 {
        unsigned long base, size;
+       struct boot_param_header *fdtp = xlp_fdt_blob;
 
-       if (!initial_boot_params)
+       if (!fdtp)
                return;
 
-       base = virt_to_phys((void *)initial_boot_params);
-       size = be32_to_cpu(initial_boot_params->totalsize);
+       base = virt_to_phys(fdtp);
+       size = be32_to_cpu(fdtp->totalsize);
 
        /* Before we do anything, lets reserve the dt blob */
        reserve_bootmem(base, size, BOOTMEM_DEFAULT);
index 76a7131e486ee49fe5e6831f35eea11244c7c8a2..6d981bb337ecd8abf96324d1e0f2a006caa942de 100644 (file)
@@ -98,7 +98,7 @@ void __init plat_mem_setup(void)
        pm_power_off    = nlm_linux_exit;
 
        /* memory and bootargs from DT */
-       early_init_devtree(initial_boot_params);
+       xlp_early_init_devtree();
 
        if (boot_mem_map.nr_map == 0) {
                pr_info("Using DRAM BARs for memory map.\n");