Re: [Patch 1/4] DRM: Add the default mode table

2009-09-04 Thread ykzhao
On Thu, 2009-09-03 at 09:33 +0800, Zhao, Yakui wrote:
 From: Zhao Yakui yakui.z...@intel.com
 
 When we add a standard timing mode in UMS, we will first check whether it can
 be found in default mode table. If it can't be found, then we will use cvt/gtf
 to add the standard timing mode.
 Add the default mode table so that we can check whether the given mode
 can be found in the default mode table as what we have done in UMS mode.
 
 If the status of one output device is connected but there is no EDID, it will
 have no correct mode. In such case we can add some default modes for it. Of
 course we only add the modes in the default modes list that visible part is 
 not
 greater than 1024x768.
 
 The default mode is autogenerated from the DMT spec. And it is copied from
 xserver/hw/xfree86/modes/xf86EdidModes.c. But the mode with reduced blank
 feature is removed.
Hi, Dave
Can you please review this patch set and see whether it can be
picked up?

Thanks.
 
 Signed-off-by: Zhao Yakui yakui.z...@intel.com
 ---
  drivers/gpu/drm/drm_edid.c |  237 
 +
  1 file changed, 237 insertions(+)
 
 Index: linux-2.6/drivers/gpu/drm/drm_edid.c
 ===
 --- linux-2.6.orig/drivers/gpu/drm/drm_edid.c 2009-09-03 08:56:50.0 
 +0800
 +++ linux-2.6/drivers/gpu/drm/drm_edid.c  2009-09-03 08:57:18.0 
 +0800
 @@ -243,6 +243,243 @@
   preferred_mode-type |= DRM_MODE_TYPE_PREFERRED;
  }
  
 +/*
 + * Add the Autogenerated from the DMT spec.
 + * This table is copied from xfree86/modes/xf86EdidModes.c.
 + * But the mode with Reduced blank feature is deleted.
 + */
 +static struct drm_display_mode drm_dmt_modes[] = {
 + /* 640x...@85hz */
 + { DRM_MODE(640x350, DRM_MODE_TYPE_DRIVER, 31500, 640, 672,
 +736, 832, 0, 350, 382, 385, 445, 0,
 +DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
 + /* 640x...@85hz */
 + { DRM_MODE(640x400, DRM_MODE_TYPE_DRIVER, 31500, 640, 672,
 +736, 832, 0, 400, 401, 404, 445, 0,
 +DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
 + /* 720x...@85hz */
 + { DRM_MODE(720x400, DRM_MODE_TYPE_DRIVER, 35500, 720, 756,
 +828, 936, 0, 400, 401, 404, 446, 0,
 +DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
 + /* 640x...@60hz */
 + { DRM_MODE(640x480, DRM_MODE_TYPE_DRIVER, 25175, 640, 656,
 +752, 800, 0, 480, 489, 492, 525, 0,
 +DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
 + /* 640x...@72hz */
 + { DRM_MODE(640x480, DRM_MODE_TYPE_DRIVER, 31500, 640, 664,
 +704, 832, 0, 480, 489, 492, 520, 0,
 +DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
 + /* 640x...@75hz */
 + { DRM_MODE(640x480, DRM_MODE_TYPE_DRIVER, 31500, 640, 656,
 +720, 840, 0, 480, 481, 484, 500, 0,
 +DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
 + /* 640x...@85hz */
 + { DRM_MODE(640x480, DRM_MODE_TYPE_DRIVER, 36000, 640, 696,
 +752, 832, 0, 480, 481, 484, 509, 0,
 +DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
 + /* 800x...@56hz */
 + { DRM_MODE(800x600, DRM_MODE_TYPE_DRIVER, 36000, 800, 824,
 +896, 1024, 0, 600, 601, 603, 625, 0,
 +DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
 + /* 800x...@60hz */
 + { DRM_MODE(800x600, DRM_MODE_TYPE_DRIVER, 4, 800, 840,
 +968, 1056, 0, 600, 601, 605, 628, 0,
 +DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
 + /* 800x...@72hz */
 + { DRM_MODE(800x600, DRM_MODE_TYPE_DRIVER, 5, 800, 856,
 +976, 1040, 0, 600, 637, 643, 666, 0,
 +DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
 + /* 800x...@75hz */
 + { DRM_MODE(800x600, DRM_MODE_TYPE_DRIVER, 49500, 800, 816,
 +896, 1056, 0, 600, 601, 604, 625, 0,
 +DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
 + /* 800x...@85hz */
 + { DRM_MODE(800x600, DRM_MODE_TYPE_DRIVER, 56250, 800, 832,
 +896, 1048, 0, 600, 601, 604, 631, 0,
 +DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
 + /* 848x...@60hz */
 + { DRM_MODE(848x480, DRM_MODE_TYPE_DRIVER, 33750, 848, 864,
 +976, 1088, 0, 480, 486, 494, 517, 0,
 +DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
 + /* 1024x...@43hz, interlace */
 + { DRM_MODE(1024x768, DRM_MODE_TYPE_DRIVER, 44900, 1024, 1032,
 +1208, 1264, 0, 768, 768, 772, 817, 0,
 +DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
 + DRM_MODE_FLAG_INTERLACE) },
 + /* 1024x...@60hz */
 + { DRM_MODE(1024x768, DRM_MODE_TYPE_DRIVER, 65000, 1024, 1048,
 +1184, 1344, 0, 768, 771, 777, 806, 0,
 +DRM_MODE_FLAG_NHSYNC | 

[Patch 1/4] DRM: Add the default mode table

2009-09-03 Thread yakui . zhao
From: Zhao Yakui yakui.z...@intel.com

When we add a standard timing mode in UMS, we will first check whether it can
be found in default mode table. If it can't be found, then we will use cvt/gtf
to add the standard timing mode.
Add the default mode table so that we can check whether the given mode
can be found in the default mode table as what we have done in UMS mode.

If the status of one output device is connected but there is no EDID, it will
have no correct mode. In such case we can add some default modes for it. Of
course we only add the modes in the default modes list that visible part is not
greater than 1024x768.

The default mode is autogenerated from the DMT spec. And it is copied from
xserver/hw/xfree86/modes/xf86EdidModes.c. But the mode with reduced blank
feature is removed.

Signed-off-by: Zhao Yakui yakui.z...@intel.com
---
 drivers/gpu/drm/drm_edid.c |  237 +
 1 file changed, 237 insertions(+)

Index: linux-2.6/drivers/gpu/drm/drm_edid.c
===
--- linux-2.6.orig/drivers/gpu/drm/drm_edid.c   2009-09-03 08:56:50.0 
+0800
+++ linux-2.6/drivers/gpu/drm/drm_edid.c2009-09-03 08:57:18.0 
+0800
@@ -243,6 +243,243 @@
preferred_mode-type |= DRM_MODE_TYPE_PREFERRED;
 }
 
+/*
+ * Add the Autogenerated from the DMT spec.
+ * This table is copied from xfree86/modes/xf86EdidModes.c.
+ * But the mode with Reduced blank feature is deleted.
+ */
+static struct drm_display_mode drm_dmt_modes[] = {
+   /* 640x...@85hz */
+   { DRM_MODE(640x350, DRM_MODE_TYPE_DRIVER, 31500, 640, 672,
+  736, 832, 0, 350, 382, 385, 445, 0,
+  DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC) },
+   /* 640x...@85hz */
+   { DRM_MODE(640x400, DRM_MODE_TYPE_DRIVER, 31500, 640, 672,
+  736, 832, 0, 400, 401, 404, 445, 0,
+  DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
+   /* 720x...@85hz */
+   { DRM_MODE(720x400, DRM_MODE_TYPE_DRIVER, 35500, 720, 756,
+  828, 936, 0, 400, 401, 404, 446, 0,
+  DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC) },
+   /* 640x...@60hz */
+   { DRM_MODE(640x480, DRM_MODE_TYPE_DRIVER, 25175, 640, 656,
+  752, 800, 0, 480, 489, 492, 525, 0,
+  DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
+   /* 640x...@72hz */
+   { DRM_MODE(640x480, DRM_MODE_TYPE_DRIVER, 31500, 640, 664,
+  704, 832, 0, 480, 489, 492, 520, 0,
+  DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
+   /* 640x...@75hz */
+   { DRM_MODE(640x480, DRM_MODE_TYPE_DRIVER, 31500, 640, 656,
+  720, 840, 0, 480, 481, 484, 500, 0,
+  DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
+   /* 640x...@85hz */
+   { DRM_MODE(640x480, DRM_MODE_TYPE_DRIVER, 36000, 640, 696,
+  752, 832, 0, 480, 481, 484, 509, 0,
+  DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
+   /* 800x...@56hz */
+   { DRM_MODE(800x600, DRM_MODE_TYPE_DRIVER, 36000, 800, 824,
+  896, 1024, 0, 600, 601, 603, 625, 0,
+  DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
+   /* 800x...@60hz */
+   { DRM_MODE(800x600, DRM_MODE_TYPE_DRIVER, 4, 800, 840,
+  968, 1056, 0, 600, 601, 605, 628, 0,
+  DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
+   /* 800x...@72hz */
+   { DRM_MODE(800x600, DRM_MODE_TYPE_DRIVER, 5, 800, 856,
+  976, 1040, 0, 600, 637, 643, 666, 0,
+  DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
+   /* 800x...@75hz */
+   { DRM_MODE(800x600, DRM_MODE_TYPE_DRIVER, 49500, 800, 816,
+  896, 1056, 0, 600, 601, 604, 625, 0,
+  DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
+   /* 800x...@85hz */
+   { DRM_MODE(800x600, DRM_MODE_TYPE_DRIVER, 56250, 800, 832,
+  896, 1048, 0, 600, 601, 604, 631, 0,
+  DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
+   /* 848x...@60hz */
+   { DRM_MODE(848x480, DRM_MODE_TYPE_DRIVER, 33750, 848, 864,
+  976, 1088, 0, 480, 486, 494, 517, 0,
+  DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
+   /* 1024x...@43hz, interlace */
+   { DRM_MODE(1024x768, DRM_MODE_TYPE_DRIVER, 44900, 1024, 1032,
+  1208, 1264, 0, 768, 768, 772, 817, 0,
+  DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
+   DRM_MODE_FLAG_INTERLACE) },
+   /* 1024x...@60hz */
+   { DRM_MODE(1024x768, DRM_MODE_TYPE_DRIVER, 65000, 1024, 1048,
+  1184, 1344, 0, 768, 771, 777, 806, 0,
+  DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
+   /* 1024x...@70hz */
+   { DRM_MODE(1024x768, DRM_MODE_TYPE_DRIVER, 75000, 1024, 1048,
+