[Intel-gfx] [PATCH] Fix LVDS EDID to match all possible default modes

Ma, Ling ling.ma at intel.com
Mon Dec 29 06:46:43 CET 2008


 hi Keith,
I happen to encounter the same issue, and did a patch for situation when we can't find EDID from display, and set the flag (edid_mon->features.msc |= 0x1).
Could you have some opinion on it ?

Thanks
Ma Ling

>-----Original Message-----
>From: intel-gfx-bounces at lists.freedesktop.org 
>[mailto:intel-gfx-bounces at lists.freedesktop.org] On Behalf Of 
>Keith Packard
>Sent: 2008年11月26日 16:32
>To: intel-gfx at lists.freedesktop.org
>Cc: dri-devel at lists.sourceforge.net
>Subject: [Intel-gfx] [PATCH] Fix LVDS EDID to match all 
>possible default modes
>
>If the EDID data from the LVDS doesn't indicate support for a 
>wide range of
>continuous frequencies, it will not match any of the default 
>modes although
>our LVDS scaler logic ignores refresh rates when programming 
>LVDS modes. Fix
>this by smashing the compute EDID data to open up the sync rates.
>
>Signed-off-by: Keith Packard <keithp at keithp.com>
>---
> src/i830_lvds.c |   30 ++++++++++++++++++++++++++++++
> 1 files changed, 30 insertions(+), 0 deletions(-)
>
>diff --git a/src/i830_lvds.c b/src/i830_lvds.c
>index 0d67d50..66e706c 100644
>--- a/src/i830_lvds.c
>+++ b/src/i830_lvds.c
>@@ -787,6 +787,36 @@ i830_lvds_get_modes(xf86OutputPtr output)
>     DisplayModePtr	    modes;
> 
>     edid_mon = xf86OutputGetEDID (output, intel_output->pDDCBus);
>+
>+    /* Our LVDS scaler can hit any size, so mark the EDID data as
>+     * supporting continuous timings
>+     */
>+    if (edid_mon) {
>+	int i, j = -1;
>+	edid_mon->features.msc |= 0x1;
>+
>+	/* Either find a DS_RANGES block, or replace a DS_VENDOR block,
>+	 * smashing it into a DS_RANGES block with wide open refresh to
>+	 * match all default modes
>+	 */
>+	for (i = 0; i < sizeof (edid_mon->det_mon) / sizeof 
>(edid_mon->det_mon[0]); i++)
>+	{
>+	    if (edid_mon->det_mon[i].type >= DS_VENDOR && j == -1)
>+		j = i;
>+	    if (edid_mon->det_mon[i].type == DS_RANGES) {
>+		j = i;
>+		break;
>+	    }
>+	}
>+	if (j != -1) {
>+	    struct monitor_ranges   *ranges = 
>&edid_mon->det_mon[j].section.ranges;
>+	    edid_mon->det_mon[j].type = DS_RANGES;
>+	    ranges->min_v = 0;
>+	    ranges->max_v = 200;
>+	    ranges->min_h = 0;
>+	    ranges->max_h = 200;
>+	}
>+    }
>     xf86OutputSetEDID (output, edid_mon);
>     
>     modes = xf86OutputGetEDIDModes (output);
>-- 
>1.5.6.5
>
>_______________________________________________
>Intel-gfx mailing list
>Intel-gfx at lists.freedesktop.org
>http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 19247.patch
Type: application/octet-stream
Size: 536 bytes
Desc: 19247.patch
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20081229/dc5733d5/attachment.obj>


More information about the Intel-gfx mailing list