[PATCH i-g-t 1/2] intel_bios_reader: Read the child device size from VBT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>

New stuff has been added to the end of the child device block at various
times, so using a hardcoded size for the block is a bad idea.
Fortunately the size of the block is listed in the VBT just before the
blocks themselves, so grab it from there.

Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
---
 tools/intel_bios.h        | 2 +-
 tools/intel_bios_reader.c | 7 ++++---
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/tools/intel_bios.h b/tools/intel_bios.h
index aedc5fc..64e723d 100644
--- a/tools/intel_bios.h
+++ b/tools/intel_bios.h
@@ -269,7 +269,7 @@ struct bdb_general_definitions {
 	 * TV and LVDS are missing, so be careful when interpreting
 	 * [4] and [5].
 	 */
-	struct child_device_config devices[0];
+	uint8_t devices[0];
 	/* may be another device block here on some platforms */
 } __attribute__ ((packed));
 
diff --git a/tools/intel_bios_reader.c b/tools/intel_bios_reader.c
index 4fa47a9..641cb38 100644
--- a/tools/intel_bios_reader.c
+++ b/tools/intel_bios_reader.c
@@ -338,7 +338,6 @@ static void dump_child_device(struct child_device_config *child)
 static void dump_general_definitions(const struct bdb_block *block)
 {
 	struct bdb_general_definitions *defs = block->data;
-	struct child_device_config *child;
 	int i;
 	int child_device_num;
 
@@ -351,9 +350,11 @@ static void dump_general_definitions(const struct bdb_block *block)
 	printf("\tBoot display type: 0x%02x%02x\n", defs->boot_display[1],
 	       defs->boot_display[0]);
 	printf("\tTV data block present: %s\n", YESNO(tv_present));
-	child_device_num = (block->size - sizeof(*defs)) / sizeof(*child);
+	printf("\tChild device size: %d\n", defs->child_dev_size);
+	child_device_num = (block->size - sizeof(*defs)) /
+		defs->child_dev_size;
 	for (i = 0; i < child_device_num; i++)
-		dump_child_device(&defs->devices[i]);
+		dump_child_device((void*)&defs->devices[i * defs->child_dev_size]);
 }
 
 static void dump_child_devices(const struct bdb_block *block)
-- 
2.0.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux