Summary: | [i965GM regression] HDMI audio on i965 in Dell Studio Hybrid 140g | ||
---|---|---|---|
Product: | DRI | Reporter: | Bernard B <b-freedesktop> |
Component: | DRM/Intel | Assignee: | Daniel Vetter <daniel> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | ben, chris, daniel, florian, jbarnes |
Version: | XOrg git | ||
Hardware: | x86 (IA32) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Bug Depends on: | |||
Bug Blocks: | 42991, 44622 | ||
Attachments: |
Description
Bernard B
2012-04-01 05:19:36 UTC
Created attachment 59335 [details]
dmesg from Ubuntu 3.2.0-20.33, without patch.
Created attachment 59336 [details]
dmesg from Ubuntu 3.2.0-20.33, with patch (and working audio)
For reference, can you please attach the exact patch for 3.2 which fixes this issue for you? Created attachment 59338 [details] [review] Patch which resolves the issue on Ubuntu's 3.2.0-20.33 kernel Attached. So intel_sdvo_get_mode_from_dtd() and intel_sdvo_get_dtd_from_mode() are not idempotent. We lose dtd.sdvo_flags and some bits from dtd.dtd_flags. I'm guessing that sdvo_flags is the relevant lossage in this case. > --- Comment #5 from Chris Wilson <chris@chris-wilson.co.uk> 2012-04-01 07:18:17 PDT --- > So > > intel_sdvo_get_mode_from_dtd() and intel_sdvo_get_dtd_from_mode() are not > idempotent. We lose dtd.sdvo_flags and some bits from dtd.dtd_flags. I'm > guessing that sdvo_flags is the relevant lossage in this case. Hm, I've figured the only relevant difference between mode and adjusted mode is the pixel clock multiplier adjustements at the end of intel_sdvo_mode_fixup (so that the pixelclock we send to the sdvo card is >= 100MHZ). With some more code-reading we seem to have a decent confusion between input and output modes (and timings). For is_tv || is_lvds we set the output timings in mode_fixup (bad style), for everything else we do it in mode_set, but with the adjusted mode (which I guess should be used only for the input timings). /me doesn't see through the mist, yet Created attachment 59346 [details] [review] separate the input/output sdvo timing Ok, I think I see what's going on here (hopefully). Please test the attached patch. If the patch works, please also test the for-bernard git branch from http://cgit.freedesktop.org/~danvet/drm/ It contains some additional cleanups and clarifications for this code. Created attachment 59351 [details]
xrandr --verbose output
Created attachment 59353 [details] [review] (hopefully) final patch for reference The thing is that if this patch is correct, things should have been broken on quite a few machines. Which means before I can submit this, I need to go bug-hunting and get more tested-bys on different machines. I think I've confused things here a bit. Can you please confirm whether the attached patch works for you or whether it does not work for you? I can confirm that just applying attachment #59353 [details] [review] works. (tested on top of Ubuntu's 3.2.0-20.33 kernel, based on 3.2.13). Patch is merged to -fixes as: commit 6651819b4b4fc3caa6964c5d825eb4bb996f3905 Author: Daniel Vetter <daniel.vetter@ffwll.ch> Date: Sun Apr 1 19:16:18 2012 +0200 drm/i915: handle input/output sdvo timings separately in mode_set Thanks for reporting this regression and bearing with our slow turn-around time. A patch referencing a commit referencing this bug report has been merged in Linux v3.7-rc3: commit e751823da27d37d25e5543abef2dc031f8813bc8 Author: Egbert Eich <eich@suse.de> Date: Sat Oct 13 14:29:31 2012 +0200 DRM/i915: Restore sdvo_flags after dtd->mode->dtd Roundrtrip. |
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.