Subject: [DRM/I915]: Sync the mode validation for INTERLACE/DBLSCAN From: Zhao Yakui <yakui.z...@intel.com>
Sync the mode validation for INTERLACE/DBLSCAN This covers: Check whether the INTERLACE/DBLSCAN is supported by output device. If not, the mode containing the flag of INTERLACE/DBLSCAN will be marked as unsupported. Signed-off-by: Zhao Yakui <yakui.z...@intel.com> --- drivers/gpu/drm/drm_crtc_helper.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) Index: linux-2.6/drivers/gpu/drm/drm_crtc_helper.c =================================================================== --- linux-2.6.orig/drivers/gpu/drm/drm_crtc_helper.c 2009-03-20 11:47:32.000000000 +0800 +++ linux-2.6/drivers/gpu/drm/drm_crtc_helper.c 2009-03-20 13:36:22.000000000 +0800 @@ -41,6 +41,23 @@ 968, 1056, 0, 600, 601, 605, 628, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, }; +static void drm_mode_validate_flag(struct drm_connector *connector, + int flags) +{ + struct drm_display_mode *mode, *t; + if (flags == (DRM_MODE_FLAG_DBLSCAN | + DRM_MODE_FLAG_INTERLACE)) + return ; + + list_for_each_entry_safe(mode, t, &connector->modes, head) { + if (mode->flags & DRM_MODE_FLAG_INTERLACE && + !(flags & DRM_MODE_FLAG_INTERLACE)) + mode->status = MODE_NO_INTERLACE; + if (mode->flags & DRM_MODE_FLAG_DBLSCAN && + !(flags & DRM_MODE_FLAG_DBLSCAN)) + mode->status = MODE_NO_DBLESCAN; + } +} /** * drm_helper_probe_connector_modes - get complete set of display modes @@ -96,6 +113,14 @@ if (maxX && maxY) drm_mode_validate_size(dev, &connector->modes, maxX, maxY, 0); + { + int flags = (connector->interlace_allowed ? + DRM_MODE_FLAG_INTERLACE : 0) | + (connector->doublescan_allowed ? + DRM_MODE_FLAG_DBLSCAN : 0); + drm_mode_validate_flag(connector, flags); + + } list_for_each_entry_safe(mode, t, &connector->modes, head) { if (mode->status == MODE_OK) mode->status = connector_funcs->mode_valid(connector, ------------------------------------------------------------------------------ Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are powering Web 2.0 with engaging, cross-platform capabilities. Quickly and easily build your RIAs with Flex Builder, the Eclipse(TM)based development software that enables intelligent coding and step-through debugging. Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel