Re: [Patch 1/4] DRM: Add the default mode table
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
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, +