Summary: | Green Screen in LG Projector using HDMI output | ||
---|---|---|---|
Product: | DRI | Reporter: | George Tavares ( www.sabiax.com ) <tavares.george> |
Component: | DRM/Intel | Assignee: | Chris Wilson <chris> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | high | CC: | michael.fu, zhenyu.z.wang |
Version: | DRI git | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
Description
George Tavares ( www.sabiax.com )
2010-03-03 06:57:29 UTC
Created attachment 33723 [details]
dmesg
Created attachment 33724 [details]
xorg
Created attachment 33725 [details]
xrandr
Created attachment 33726 [details]
regdump (the projector is not green this time)
I found a workaround , modifying drivers/gpu/drm/i915/intel_hdmi.c, editing the function intel_hdmi_mode_set, and commenting these lines : static void intel_hdmi_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode) { struct drm_device *dev = encoder->dev; struct drm_i915_private *dev_priv = dev->dev_private; struct drm_crtc *crtc = encoder->crtc; struct intel_crtc *intel_crtc = to_intel_crtc(crtc); struct intel_output *intel_output = enc_to_intel_output(encoder); struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv; u32 sdvox; sdvox = SDVO_ENCODING_HDMI | SDVO_BORDER_ENABLE | SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH; // if (hdmi_priv->has_hdmi_sink) // sdvox |= SDVO_AUDIO_ENABLE; if (intel_crtc->pipe == 1) sdvox |= SDVO_PIPE_B_SELECT; I915_WRITE(hdmi_priv->sdvox_reg, sdvox); POSTING_READ(hdmi_priv->sdvox_reg); } The projector maybe stay tinted green sometimes, if the audio initialization is started. I suggest do some kind of quirks to avoid audio initialization in some devices (LG Projectors) Yakui, can you take a look and maybe add a quirk? (In reply to comment #6) > Yakui, can you take a look and maybe add a quirk? Ok. I will look at this issue and try to find why AUDIO enable is not required on this HDMI monitor. Thanks. Created attachment 34747 [details] [review] try the debug patch that dumps more EDID info Hi, George Thanks for the you work. It is very interesting that the issue can be workaround by avoiding audio initialization. It is a great progress. Will you please try the attached debug patch and attach the output of dmesg? Thanks. Created attachment 34852 [details]
Here is the output that you request
copying fengguang, who owns the audio enabling. Is there a way to check if audio is supported on the sink device? Created attachment 35459 [details] [review] Add one function to check whether the audio is supported in HDMI sink Created attachment 35460 [details] [review] [Patch 2/2]: configure audio bit correctly for HDMI monitor HI, George Sorry for the late response. Will you please try the two patches in comment #11/12 on 2.6.33 kernel and see whether the issue still exists? Thanks. Yakui George, have you had a chance to try those patches? Let's have a looksee: xrandr => 1280_720 (0x121) 95.7MHz -HSync +VSync *current h: width 1280 start 1352 end 1488 total 1696 skew 0 clock 56.4KHz v: height 720 start 721 end 724 total 752 clock 75.0Hz So I think your workaround was off by a couple of lines... sdvox = SDVO_ENCODING_HDMI | SDVO_BORDER_ENABLE | SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH; So can you try Adam Jackson's patch: commit b5e2a2f66488fbd43cdb100951413aab435910a8 Author: Adam Jackson <ajax@redhat.com> Date: Fri Jul 16 18:46:32 2010 +0000 drm/i915/sdvo: Set sync polarity based on actual mode Signed-off-by: Adam Jackson <ajax@redhat.com> However, Yakui's patches look good. Created attachment 37319 [details] [review] Set sync polarity from mode. Rewrote Yakui's patches for HEAD - forgot he had already written some code to check for audio capability in the EDID! I'll push these upstream at the next opportunity. * wry smile. I too have a green TV from using DVI -> HDMI due to unwanted audio. I have raised the importance of this bug one notch. The 'Set sync polarity from mode' patch hit Linus' kernel tree somewhere between 2.6.35 and .36, and renders my LCD panel unable to sync. BenQ G2400W connected to G35 via HDMI. git bisect leads to: dagb@dagb-home ~/kernelbug/linux-git $ (22:38) git bisect bad 81a14b46846fea0741902e8d8dfcc6c6c78154c8 is the first bad commit commit 81a14b46846fea0741902e8d8dfcc6c6c78154c8 Author: Adam Jackson <ajax@redhat.com> Date: Fri Jul 16 14:46:32 2010 -0400 drm/i915/sdvo: Set sync polarity based on actual mode Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Eric Anholt <eric@anholt.net> :040000 040000 14d1cbdc13c728833820e7f971589e7a8e10bc16 d8b0939bd85186d4b1860deb9853517d22563f09 M drivers Also see #30888 , which also ends up giving the commit in question a nasty look. Created attachment 40052 [details]
edid from BenQ G2400W
edid from my LCD monitor
Comment on attachment 40052 [details]
edid from BenQ G2400W
bad edid
Created attachment 40054 [details]
edid from digital port
the right edid from my BenQ G2400W
The HDMI audio detect is upstream. Dag you have a different bug due to your hardware misreporting the EDID. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.