Bug 71083

Summary: (struct drm_encoder_helper_funcs)->mode_set not re-called after display (and EDID) change
Product: DRI Reporter: Rafał Miłecki <zajec5>
Component: DRM/otherAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED INVALID QA Contact:
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

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.
Comment 3 Martin Peres 2019-10-14 13:20:22 UTC
Hi,

Freedesktop's Bugzilla instance is EOLed and open bugs are about to be migrated to http://gitlab.freedesktop.org.

To avoid migrating out of date bugs, I am now closing all the bugs that did not see any activity in the past year. If the issue is still happening, please create a new bug in the relevant project at https://gitlab.freedesktop.org/drm (use misc by default).

Sorry about the noise!

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.