Author: uwe
Date: 2007-09-25 02:22:18 +0200 (Tue, 25 Sep 2007)
New Revision: 500

Modified:
   LinuxBIOSv3/arch/x86/linuxbios_table.c
   LinuxBIOSv3/include/tables.h
Log:
Add a pointer to the root device to the LinuxBIOS table. Used for
example to access the device list from Open Firmware.

Signed-off-by: Jens Freimann <[EMAIL PROTECTED]>
Acked-by: Uwe Hermann <[EMAIL PROTECTED]>



Modified: LinuxBIOSv3/arch/x86/linuxbios_table.c
===================================================================
--- LinuxBIOSv3/arch/x86/linuxbios_table.c      2007-09-25 00:16:31 UTC (rev 
499)
+++ LinuxBIOSv3/arch/x86/linuxbios_table.c      2007-09-25 00:22:18 UTC (rev 
500)
@@ -385,6 +385,25 @@
        return mem;
 }
 
+/**
+ * Add pointer to device tree to LinuxBIOS table.
+ *
+ * @param head Pointer to lbtable header.
+ * @return TODO
+ */
+struct lb_devtree *lb_devtree(struct lb_header *head)
+{
+       struct lb_devtree *lbdev = NULL;
+       struct device *dev = NULL;
+
+       lbdev = (struct lb_devtree *)lb_new_record(head);
+       lbdev->tag = LB_TAG_DEVTREE_PTR;
+       lbdev->size = sizeof(*lbdev);
+       lbdev->dev_root_ptr = &dev_root;
+
+       return lbdev;
+}
+
 unsigned long write_linuxbios_table( 
        unsigned long low_table_start, unsigned long low_table_end, 
        unsigned long rom_table_start, unsigned long rom_table_end)
@@ -431,12 +450,15 @@
         * size of the linuxbios table.
         */
 
-       /* Record our motheboard */
+       /* Record our motherboard */
        lb_mainboard(head);
 
        /* Record our various random string information */
        lb_strings(head);
 
+       /* Record a pointer to the LinuxBIOS device tree */
+       lb_devtree(head);
+
        /* Remember where my valid memory ranges are */
        return lb_table_fini(head);
        

Modified: LinuxBIOSv3/include/tables.h
===================================================================
--- LinuxBIOSv3/include/tables.h        2007-09-25 00:16:31 UTC (rev 499)
+++ LinuxBIOSv3/include/tables.h        2007-09-25 00:22:18 UTC (rev 500)
@@ -167,6 +167,14 @@
        u8  string[0];
 };
 
+#define LB_TAG_DEVTREE_PTR     0x000e
+
+struct lb_devtree {
+       u32 tag;
+       u32 size;
+       u32 dev_root_ptr; /* Pointer to the root device */
+};
+
 /* The following structures are for the cmos definitions table */
 #define LB_TAG_CMOS_OPTION_TABLE 200
 /* cmos header record */


-- 
linuxbios mailing list
[email protected]
http://www.linuxbios.org/mailman/listinfo/linuxbios

Reply via email to