diff options
-rw-r--r-- | tools/intel_bios.h | 28 | ||||
-rw-r--r-- | tools/intel_vbt_decode.c | 9 | ||||
-rw-r--r-- | 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 65e64ccb..8d1bf7ae 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 836a9783..2e4eba29 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 5481304d..8bdb2292 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; |