From e79e2a58161d44754fd55507e155b7e12a09c4d2 Mon Sep 17 00:00:00 2001 From: Alan Hourihane Date: Thu, 28 Jun 2007 21:25:13 +0100 Subject: Fix type/flags usage problem to check for preferred modes. Add more debugging to help diagnose problems. --- linux-core/drm_crtc.c | 15 ++++++++------- linux-core/drm_modes.c | 8 +++++--- 2 files changed, 13 insertions(+), 10 deletions(-) (limited to 'linux-core') diff --git a/linux-core/drm_crtc.c b/linux-core/drm_crtc.c index 245fe5be..04d3b723 100644 --- a/linux-core/drm_crtc.c +++ b/linux-core/drm_crtc.c @@ -436,8 +436,11 @@ bool drm_crtc_set_mode(struct drm_crtc *crtc, struct drm_display_mode *mode, */ crtc->funcs->mode_set(crtc, mode, adjusted_mode, x, y); list_for_each_entry(output, &dev->mode_config.output_list, head) { - if (output->crtc == crtc) + if (output->crtc == crtc) { + dev_warn(&output->dev->pdev->dev, "%s: set mode %s\n", + output->name, mode->name); output->funcs->mode_set(output, mode, adjusted_mode); + } } /* Now, enable the clocks, plane, pipe, and outputs that we set up. */ @@ -787,16 +790,14 @@ static void drm_pick_crtcs (drm_device_t *dev) des_mode = NULL; list_for_each_entry(des_mode, &output->modes, head) { - if (des_mode->flags & DRM_MODE_TYPE_PREFERRED) + if (des_mode->type & DRM_MODE_TYPE_PREFERRED) break; } - /* No preferred mode, let's select another which should pick - * the default 640x480 if nothing else is here. - */ - if (!des_mode || !(des_mode->flags & DRM_MODE_TYPE_PREFERRED)) { + /* No preferred mode, let's just select the first available */ + if (!des_mode || !(des_mode->type & DRM_MODE_TYPE_PREFERRED)) { list_for_each_entry(des_mode, &output->modes, head) { - if (des_mode->flags & DRM_MODE_TYPE_DEFAULT) + if (des_mode) break; } } diff --git a/linux-core/drm_modes.c b/linux-core/drm_modes.c index 41b5fade..fd00841e 100644 --- a/linux-core/drm_modes.c +++ b/linux-core/drm_modes.c @@ -46,12 +46,12 @@ void drm_mode_debug_printmodeline(struct drm_device *dev, struct drm_display_mode *mode) { - DRM_DEBUG("Modeline %d:\"%s\" %d %d %d %d %d %d %d %d %d %d\n", + DRM_DEBUG("Modeline %d:\"%s\" %d %d %d %d %d %d %d %d %d %d 0x%x\n", mode->mode_id, mode->name, mode->vrefresh, mode->clock, mode->hdisplay, mode->hsync_start, mode->hsync_end, mode->htotal, mode->vdisplay, mode->vsync_start, - mode->vsync_end, mode->vtotal); + mode->vsync_end, mode->vtotal, mode->type); } EXPORT_SYMBOL(drm_mode_debug_printmodeline); @@ -387,8 +387,10 @@ void drm_mode_prune_invalid(struct drm_device *dev, list_for_each_entry_safe(mode, t, mode_list, head) { if (mode->status != MODE_OK) { list_del(&mode->head); - if (verbose) + if (verbose) { + drm_mode_debug_printmodeline(dev, mode); DRM_DEBUG("Not using %s mode %d\n", mode->name, mode->status); + } kfree(mode); } } -- cgit v1.2.3