]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/platforms/iseries/dt.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
[linux-2.6-omap-h63xx.git] / arch / powerpc / platforms / iseries / dt.c
index e305deee7f44e19d08d41922f581836d66a743d4..4543c4bc3a56e158cb47a3387d97c715dabc515e 100644 (file)
@@ -41,6 +41,7 @@
 #include "call_pci.h"
 #include "pci.h"
 #include "it_exp_vpd_panel.h"
+#include "naca.h"
 
 #ifdef DEBUG
 #define DBG(fmt...) udbg_printf(fmt)
@@ -71,8 +72,6 @@ static char __initdata device_type_cpu[] = "cpu";
 static char __initdata device_type_memory[] = "memory";
 static char __initdata device_type_serial[] = "serial";
 static char __initdata device_type_network[] = "network";
-static char __initdata device_type_block[] = "block";
-static char __initdata device_type_byte[] = "byte";
 static char __initdata device_type_pci[] = "pci";
 static char __initdata device_type_vdevice[] = "vdevice";
 static char __initdata device_type_vscsi[] = "vscsi";
@@ -205,13 +204,11 @@ static void __init dt_prop_u32(struct iseries_flat_dt *dt, const char *name,
        dt_prop(dt, name, &data, sizeof(u32));
 }
 
-#ifdef notyet
 static void __init dt_prop_u64(struct iseries_flat_dt *dt, const char *name,
                u64 data)
 {
        dt_prop(dt, name, &data, sizeof(u64));
 }
-#endif
 
 static void __init dt_prop_u64_list(struct iseries_flat_dt *dt,
                const char *name, u64 *data, int n)
@@ -306,6 +303,17 @@ static void __init dt_model(struct iseries_flat_dt *dt)
        dt_prop_u32(dt, "ibm,partition-no", HvLpConfig_getLpIndex());
 }
 
+static void __init dt_initrd(struct iseries_flat_dt *dt)
+{
+#ifdef CONFIG_BLK_DEV_INITRD
+       if (naca.xRamDisk) {
+               dt_prop_u64(dt, "linux,initrd-start", (u64)naca.xRamDisk);
+               dt_prop_u64(dt, "linux,initrd-end",
+                       (u64)naca.xRamDisk + naca.xRamDiskSize * HW_PAGE_SIZE);
+       }
+#endif
+}
+
 static void __init dt_do_vdevice(struct iseries_flat_dt *dt,
                const char *name, u32 reg, int unit,
                const char *type, const char *compat, int end)
@@ -365,21 +373,6 @@ static void __init dt_vdevices(struct iseries_flat_dt *dt)
 
                dt_end_node(dt);
        }
-       reg += HVMAXARCHITECTEDVIRTUALLANS;
-
-       for (i = 0; i < HVMAXARCHITECTEDVIRTUALDISKS; i++)
-               dt_do_vdevice(dt, "viodasd", reg, i, device_type_block,
-                               "IBM,iSeries-viodasd", 1);
-       reg += HVMAXARCHITECTEDVIRTUALDISKS;
-
-       for (i = 0; i < HVMAXARCHITECTEDVIRTUALCDROMS; i++)
-               dt_do_vdevice(dt, "viocd", reg, i, device_type_block,
-                               "IBM,iSeries-viocd", 1);
-       reg += HVMAXARCHITECTEDVIRTUALCDROMS;
-
-       for (i = 0; i < HVMAXARCHITECTEDVIRTUALTAPES; i++)
-               dt_do_vdevice(dt, "viotape", reg, i, device_type_byte,
-                               "IBM,iSeries-viotape", 1);
 
        dt_end_node(dt);
 }
@@ -641,6 +634,7 @@ void * __init build_flat_dt(unsigned long phys_mem_size)
        /* /chosen */
        dt_start_node(iseries_dt, "chosen");
        dt_prop_str(iseries_dt, "bootargs", cmd_line);
+       dt_initrd(iseries_dt);
        dt_end_node(iseries_dt);
 
        dt_cpus(iseries_dt);