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 jens@freimann.org Acked-by: Uwe Hermann uwe@hermann-uwe.de
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 */