Bug 71083 - (struct drm_encoder_helper_funcs)->mode_set not re-called after display (and EDID) change
Summary: (struct drm_encoder_helper_funcs)->mode_set not re-called after display (and ...
Status: NEW
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/other (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Default DRI bug account
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-10-31 10:34 UTC by Rafał Miłecki
Modified: 2013-10-31 13:42 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Rafał Miłecki 2013-10-31 10:34:13 UTC
I use my DCE5 Barts (HD69xx) with AV-receiver Onkyo TX-SR605 and one of the following displays:
1) TV Sony Bravia KDL-52X3500
2) Projector Epson EH-TW6100

My problem is that when I change display connected to the Onkyo's output EDID changes, but drm doesn't call mode_set as long as I use the same resolution.

To force drm to call mode_set I've to change resolution (xrandr --output HDMI-0 --mode X) and then swtich back to the mode I want.

While the display seems to be working fine without that mode_set call, the audio engine doesn't. As part of the modesetting handler we read ELD-related info from EDID and write it to the audio engine of the GPU. Without this happening I can't play correctly audio (because also sees info about previous device, not the current one).

I think mode_set should be called every time EDID changes. Is that right?

In case someone's curious:

1) EDID with Onkyo + Sony TV:
00ffffffffffff003dcb610700000000
0011010380a05a780a0dc9a057479827
12484c21080081800101010101010101
010101010101023a801871382d40582c
450040846300001e011d007251d01e20
6e28550040846300001e000000fc0054
582d53523630350a20202020000000fd
00303e0e460f000a2020202020200185
02034c705c1f03041213051420071610
15110206010f1e0b1a191d0e0a242625
2335097f070f7f071707503f06c05706
005f7e01671e00834f00006c030c0012
00b82dc000000000e3050301023a80d0
72382d40102c458040846300001e011d
00bc52d01e20b828554040846300001e
00000000000000000000000000000078

2) EDID with Onkyo + Epson projector:
00ffffffffffff004ca333d000000000
0c150104952616780aa0558d515a962a
1c505400000001010101010101010101
0101010101016a4d80a07038fc413020
36007ed710000018d49a80a07038fc41
302036007ed710000038000000fc0053
414d53554e470a2020202020000000fc
00313733485430322d4330310a200035
Comment 1 Alex Deucher 2013-10-31 13:17:40 UTC
Are you unplugging the cable from the card when you switch the monitors?  That should generate a hotplug event which will trigger the graphics stack to reprobe the displays.  If you are just changing the monitor connected to the receiver, it sounds like the receiver never sends a hotplug event to the card.  As such the card has no way of knowing that the EDID has changed.
Comment 2 Rafał Miłecki 2013-10-31 13:42:18 UTC
I do! I unplug HDMI that is between notebook and Onkyo and then start switching operation. I also get a notification about changed display configuration in KDE, so I'm sure events are generate correctly.


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.