Bug 13462
Summary: | Unused bands in intefb console and smaller 180x56 -> 128x48 | ||
---|---|---|---|
Product: | Drivers | Reporter: | Santi (santi) |
Component: | Video(DRI - non Intel) | Assignee: | drivers_video-dri |
Status: | CLOSED CODE_FIX | ||
Severity: | normal | CC: | keithp, rjw |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | v2.6.30-rc8-5-gc9fb15f | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Bug Depends on: | |||
Bug Blocks: | 13070 | ||
Attachments: | Xorg.0.log, just in case there is useful info |
Description
Santi
2009-06-05 16:30:04 UTC
The problem here appears to be that the TV output is mis-detected, which makes the fb code limit the size to 1024x768. Ok, I've discovered why this patch has this effect -- the bisected patch changes when crtcs are determined to be 'active'. In the past, a crtc was determined to be active if any encoders were using it, now we also require that said encoders be hooked to some connector. The intel load detection code wasn't hooking the TV connector to the TV encoder, and so the mode setting operation during load detection wasn't actually turning on the hardware, so the load detection depended on whether the TV was already running. I've posted the following patch to drm-devel and intel-gfx: commit 1cdeb72d2dfc0e724b9d150db38e512fc438b13a Author: Keith Packard <keithp@keithp.com> Date: Fri Jun 5 18:16:11 2009 -0700 drm/i915: Hook connector to encoder during load detection (fixes tv/vga detect) With the DRM-driven DPMS code, encoders are considered idle unless a connector is hooked to them, so mode setting is skipped. This makes load detection fail as none of the hardware is enabled. Signed-off-by: Keith Packard <keithp@keithp.com> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 220d54d..dcb5e49 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -1676,6 +1676,7 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_output *intel_output, } encoder->crtc = crtc; + intel_output->base.encoder = encoder; intel_output->load_detect_temp = true; intel_crtc = to_intel_crtc(crtc); @@ -1711,6 +1712,7 @@ void intel_release_load_detect_pipe(struct intel_output *intel_output, int dpms_ if (intel_output->load_detect_temp) { encoder->crtc = NULL; + intel_output->base.encoder = NULL; intel_output->load_detect_temp = false; crtc->enabled = drm_helper_crtc_in_use(crtc); drm_helper_disable_unused_functions(dev); Ok, thanks. This patch fixes the bug. First-Bad-Commit : c9fb15f60eb517c958dec64dca9357bf62bf2201 Handled-By : Keith Packard <keithp@keithp.com> Patch : http://bugzilla.kernel.org/show_bug.cgi?id=13462#c2 |