]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/platforms/iseries/dt.c
[POWERPC] iSeries: Move detection of virtual tapes
[linux-2.6-omap-h63xx.git] / arch / powerpc / platforms / iseries / dt.c
index e305deee7f44e19d08d41922f581836d66a743d4..2e4ad6b34506ed73e9dc73e0cfba139afd578e1d 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)
@@ -72,7 +73,6 @@ 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 +205,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 +304,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)
@@ -370,16 +379,6 @@ static void __init dt_vdevices(struct iseries_flat_dt *dt)
        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 +640,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);