Skip to contentSkip to conversation

drm/i915: don't always force the panel's fixed_mode

PATCH Applied Paulo Zanoni 3 participants 3 messages Feb 3, 2012 – Feb 8, 2012

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 2/2 drm/i915: don't always force the panel's fixed_mode

From: Paulo Zanoni <[email protected]>

My laptop has two 1440x900 modes: one is the fixed_mode and the other has different timings. If I use xrandr to switch from the fixed mode to the "other" 1440x900 mode, xrandr will tell me the change was successful, but nothing was actually done: I'm still using the fixed_mode. This patch allows us to use other modes if hdisplay and vdisplay are the same.

---
 drivers/gpu/drm/i915/intel_panel.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

Apply on top of danvet's interlaced branch.

drivers/gpu/drm/i915/intel_panel.c +6 -0
index 230a141..62ca771 100644
@@ -36,6 +36,12 @@ void
 intel_fixed_panel_mode(struct drm_display_mode *fixed_mode,
 		       struct drm_display_mode *adjusted_mode)
 {
+	/* Allow modes that match the panel fixed_mode resolution but have
+	 * different timings */
+	if (adjusted_mode->hdisplay == fixed_mode->hdisplay &&
+	    adjusted_mode->vdisplay == fixed_mode->vdisplay)
+		return;
+
 	adjusted_mode->hdisplay = fixed_mode->hdisplay;
 	adjusted_mode->hsync_start = fixed_mode->hsync_start;
 	adjusted_mode->hsync_end = fixed_mode->hsync_end;
Signature · 1 line
1.7.8.3
#1 lore raw
Quoted 10 lines · Paulo Zanoni

From: Paulo Zanoni <[email protected]>

My laptop has two 1440x900 modes: one is the fixed_mode and the other has different timings. If I use xrandr to switch from the fixed mode to the "other" 1440x900 mode, xrandr will tell me the change was successful, but nothing was actually done: I'm still using the fixed_mode. This patch allows us to use other modes if hdisplay and vdisplay are the same.

Hm, I've thought we should only use this to dynamically switch between a mode with high refresh rate and one with a low one. Otoh we have a bunch of boards where we need a generic 'ignore lvds fixed mode because it's actually not a panel' - I think that would be slightly more useful since we could then quirk that. But who knows, I don't have much clue ... -Daniel

Signature · 3 lines
Daniel Vetter
Mail: [email protected]
Mobile: +41 (0)79 365 57 48
#2 lore raw
Quoted 10 lines · Daniel Vetter
Quoted 9 lines · Paulo Zanoni

From: Paulo Zanoni <[email protected]>

My laptop has two 1440x900 modes: one is the fixed_mode and the other has different timings. If I use xrandr to switch from the fixed mode to the "other" 1440x900 mode, xrandr will tell me the change was successful, but nothing was actually done: I'm still using the fixed_mode. This patch allows us to use other modes if hdisplay and vdisplay are the same.

Quoted 4 lines
Quoted 1 line

Hm, I've thought we should only use this to dynamically switch between a mode with high refresh rate and one with a low one.

I hesitated for the same reason. Except that by filtering out all modes except for the one true mode, we prevent the user from being able to make a choice. They'll invariably make the wrong choice and file a bug, but nevertheless... ;-)

I also don't think this is the way we want to approach this. The overrides required for fake LVDS headers would seem to be a superset of this functionality.
-Chris

Signature · 1 line
Chris Wilson, Intel Open Source Technology Centre