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 <[EMAIL PROTECTED]>
---
 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


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to