diff --git a/src/bios_reader/bios_reader.c b/src/bios_reader/bios_reader.c index 974c272..91a55bb 100644 --- a/src/bios_reader/bios_reader.c +++ b/src/bios_reader/bios_reader.c @@ -275,6 +275,8 @@ static void dump_lvds_ptr_data(void) struct bdb_block *block; struct bdb_lvds_lfp_data_ptrs *ptrs; struct lvds_fp_timing *fp_timing; + unsigned char *timing_ptr; + int HDisplay, VDisplay, HSyncStart, HSyncEnd, HTotal, VSyncStart, VSyncEnd, VTotal, Clock; block = find_section(BDB_LVDS_LFP_DATA_PTRS); if (!block) { @@ -286,11 +288,31 @@ static void dump_lvds_ptr_data(void) fp_timing = (struct lvds_fp_timing *)((uint8_t *)bdb + ptrs->ptr[panel_type].fp_timing_offset); + timing_ptr = (unsigned char *)((uint8_t *)bdb + ptrs->ptr[panel_type].dvo_timing_offset); printf("LVDS timing pointer data:\n"); printf(" Number of entries: %d\n", ptrs->lvds_entries); printf("\tpanel type %02i: %dx%d\n", panel_type, fp_timing->x_res, fp_timing->y_res); + HDisplay = _H_ACTIVE(timing_ptr); + VDisplay = _V_ACTIVE(timing_ptr); + HSyncStart = HDisplay + + _H_SYNC_OFF(timing_ptr); + HSyncEnd = HSyncStart + + _H_SYNC_WIDTH(timing_ptr); + HTotal = HDisplay + + _H_BLANK(timing_ptr); + VSyncStart = VDisplay + + _V_SYNC_OFF(timing_ptr); + VSyncEnd = VSyncStart + + _V_SYNC_WIDTH(timing_ptr); + VTotal = VDisplay + + _V_BLANK(timing_ptr); +Clock = _PIXEL_CLOCK(timing_ptr) / 1000; + + + printf("\t\ttimings: %d %d %d %d %d %d %d %d\n%d\n", + HDisplay, HSyncStart, HSyncEnd, HTotal, VDisplay, VSyncStart, VSyncEnd, VTotal, Clock); free(block); } diff --git a/src/i830_bios.c b/src/i830_bios.c index 007530d..604570c 100644 --- a/src/i830_bios.c +++ b/src/i830_bios.c @@ -122,7 +122,7 @@ parse_panel_data(I830Ptr pI830, struct bdb_header *bdb) fixed_mode->HSyncEnd = fixed_mode->HSyncStart + _H_SYNC_WIDTH(timing_ptr); fixed_mode->HTotal = fixed_mode->HDisplay + - _H_BLANK(timing_ptr); + _H_BLANK(timing_ptr) + 40; fixed_mode->VSyncStart = fixed_mode->VDisplay + _V_SYNC_OFF(timing_ptr); fixed_mode->VSyncEnd = fixed_mode->VSyncStart + diff --git a/src/i830_lvds.c b/src/i830_lvds.c index 239bc89..79a6850 100644 --- a/src/i830_lvds.c +++ b/src/i830_lvds.c @@ -1254,6 +1254,7 @@ i830_lvds_init(ScrnInfoPtr pScrn) /* Set up the LVDS DDC channel. Most panels won't support it, but it can * be useful if available. */ +#if 0 I830I2CInit(pScrn, &intel_output->pDDCBus, GPIOC, "LVDSDDC_C"); if (pI830->skip_panel_detect) { @@ -1291,7 +1292,7 @@ i830_lvds_init(ScrnInfoPtr pScrn) pI830->lvds_fixed_mode = lvds_ddc_mode; goto found_mode; } - +#endif /* Get the LVDS fixed mode out of the BIOS. We should support LVDS with * the BIOS being unavailable or broken, but lack the configuration options * for now.