[Intel-gfx] [i-g-t PATCH 05/10] tools/intel_vbt_decode: migrate timing dumping to kernel struct

Jani Nikula jani.nikula at intel.com
Mon Aug 28 12:19:57 UTC 2017


Adapt the dumping according to the changes, and do what the kernel does.

Signed-off-by: Jani Nikula <jani.nikula at intel.com>
---
 tools/intel_bios.h       | 28 ----------------------------
 tools/intel_vbt_decode.c |  9 ++++++---
 tools/intel_vbt_defs.h   | 31 +++++++++++++++++++++++++++++++
 3 files changed, 37 insertions(+), 31 deletions(-)

diff --git a/tools/intel_bios.h b/tools/intel_bios.h
index 65e64ccb41ef..8d1bf7ae0c81 100644
--- a/tools/intel_bios.h
+++ b/tools/intel_bios.h
@@ -155,34 +155,6 @@ struct bdb_child_devices {
 	struct child_device_config children[DEVICE_CHILD_SIZE];
 } __attribute__ ((packed));
 
-struct lvds_dvo_timing {
-	uint16_t clock;		/**< In 10khz */
-	uint8_t hactive_lo;
-	uint8_t hblank_lo;
-	uint8_t hblank_hi:4;
-	uint8_t hactive_hi:4;
-	uint8_t vactive_lo;
-	uint8_t vblank_lo;
-	uint8_t vblank_hi:4;
-	uint8_t vactive_hi:4;
-	uint8_t hsync_off_lo;
-	uint8_t hsync_pulse_width;
-	uint8_t vsync_pulse_width:4;
-	uint8_t vsync_off:4;
-	uint8_t rsvd0:6;
-	uint8_t hsync_off_hi:2;
-	uint8_t h_image;
-	uint8_t v_image;
-	uint8_t max_hv;
-	uint8_t h_border;
-	uint8_t v_border;
-	uint8_t rsvd1:3;
-	uint8_t digital:2;
-	uint8_t vsync_positive:1;
-	uint8_t hsync_positive:1;
-	uint8_t rsvd2:1;
-} __attribute__((packed));
-
 struct blc_struct {
 	uint8_t inverter_type:2;
 	uint8_t inverter_polarity:1;	/* 1 means inverted (0 = max brightness) */
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 836a9783d54e..beb33672835e 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -950,7 +950,8 @@ print_detail_timing_data(const struct lvds_dvo_timing *dvo_timing)
 	display = (dvo_timing->hactive_hi << 8) | dvo_timing->hactive_lo;
 	sync_start = display +
 		((dvo_timing->hsync_off_hi << 8) | dvo_timing->hsync_off_lo);
-	sync_end = sync_start + dvo_timing->hsync_pulse_width;
+	sync_end = sync_start + ((dvo_timing->hsync_pulse_width_hi) << 8 |
+				 dvo_timing->hsync_pulse_width_lo);
 	total = display +
 		((dvo_timing->hblank_hi << 8) | dvo_timing->hblank_lo);
 	printf("\thdisplay: %d\n", display);
@@ -959,8 +960,10 @@ print_detail_timing_data(const struct lvds_dvo_timing *dvo_timing)
 	printf("\thtotal: %d\n", total);
 
 	display = (dvo_timing->vactive_hi << 8) | dvo_timing->vactive_lo;
-	sync_start = display + dvo_timing->vsync_off;
-	sync_end = sync_start + dvo_timing->vsync_pulse_width;
+	sync_start = display + ((dvo_timing->vsync_off_hi << 8) |
+				dvo_timing->vsync_off_lo);
+	sync_end = sync_start + ((dvo_timing->vsync_pulse_width_hi << 8) |
+				 dvo_timing->vsync_pulse_width_lo);
 	total = display +
 		((dvo_timing->vblank_hi << 8) | dvo_timing->vblank_lo);
 	printf("\tvdisplay: %d\n", display);
diff --git a/tools/intel_vbt_defs.h b/tools/intel_vbt_defs.h
index 5481304d2ac2..8bdb2292747b 100644
--- a/tools/intel_vbt_defs.h
+++ b/tools/intel_vbt_defs.h
@@ -379,6 +379,37 @@ struct lvds_fp_timing {
 	u16 terminator;
 } __packed;
 
+struct lvds_dvo_timing {
+	u16 clock;		/**< In 10khz */
+	u8 hactive_lo;
+	u8 hblank_lo;
+	u8 hblank_hi:4;
+	u8 hactive_hi:4;
+	u8 vactive_lo;
+	u8 vblank_lo;
+	u8 vblank_hi:4;
+	u8 vactive_hi:4;
+	u8 hsync_off_lo;
+	u8 hsync_pulse_width_lo;
+	u8 vsync_pulse_width_lo:4;
+	u8 vsync_off_lo:4;
+	u8 vsync_pulse_width_hi:2;
+	u8 vsync_off_hi:2;
+	u8 hsync_pulse_width_hi:2;
+	u8 hsync_off_hi:2;
+	u8 himage_lo;
+	u8 vimage_lo;
+	u8 vimage_hi:4;
+	u8 himage_hi:4;
+	u8 h_border;
+	u8 v_border;
+	u8 rsvd1:3;
+	u8 digital:2;
+	u8 vsync_positive:1;
+	u8 hsync_positive:1;
+	u8 non_interlaced:1;
+} __packed;
+
 struct lvds_pnp_id {
 	u16 mfg_name;
 	u16 product_code;
-- 
2.11.0



More information about the Intel-gfx mailing list