These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / arch / mips / jz4740 / setup.c
index ef796f9..510fc0d 100644 (file)
 
 #include <linux/init.h>
 #include <linux/io.h>
+#include <linux/irqchip.h>
 #include <linux/kernel.h>
+#include <linux/libfdt.h>
+#include <linux/of_fdt.h>
+#include <linux/of_platform.h>
 
 #include <asm/bootinfo.h>
+#include <asm/prom.h>
 
 #include <asm/mach-jz4740/base.h>
 
@@ -51,11 +56,40 @@ static void __init jz4740_detect_mem(void)
 
 void __init plat_mem_setup(void)
 {
+       int offset;
+
        jz4740_reset_init();
-       jz4740_detect_mem();
+       __dt_setup_arch(__dtb_start);
+
+       offset = fdt_path_offset(__dtb_start, "/memory");
+       if (offset < 0)
+               jz4740_detect_mem();
 }
 
+void __init device_tree_init(void)
+{
+       if (!initial_boot_params)
+               return;
+
+       unflatten_and_copy_device_tree();
+}
+
+static int __init populate_machine(void)
+{
+       of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
+       return 0;
+}
+arch_initcall(populate_machine);
+
 const char *get_system_type(void)
 {
+       if (config_enabled(CONFIG_MACH_JZ4780))
+               return "JZ4780";
+
        return "JZ4740";
 }
+
+void __init arch_init_irq(void)
+{
+       irqchip_init();
+}