Bug 212449

Summary: DDC requires amdgpu.dc=0, HDMI sound requires amdgpu.dc=1. Make them work together!
Product: Drivers Reporter: Vyacheslav Dikonov (sdiconov)
Component: Video(DRI - non Intel)Assignee: drivers_video-dri
Status: NEW ---    
Severity: normal CC: alexdeucher
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 5.4.107 Subsystem:
Regression: No Bisected commit-id:
Attachments: dc=0, hw_i2c=0, DDC works no sound
dc=1, hw_i2c=0, DDC fails
dc=0, hw_i2c=1, DDC fails
dc=0, hw_i2c=1, DDC works no sound
Reference logs from a different computer attached to the same display

Description Vyacheslav Dikonov 2021-03-26 10:24:56 UTC
I need both DDC and HDMI audio functionality of my radeon RX card, but the amdgpu kernel driver fails to support both at the same time. I can either use DDC with 

"amdgpu.hw_i2c=0 amdgpu.dc=0"

OR HDMI audio  with

"amdgpu.dc=1".


The  "dc=1"  kernel switch disables DDC and "dc=0" disables HDMI audio. The "dcfeaturemask" option might need a new flag to selectively allow i2c communication with the display while still allowing audio to work over HDMI.




___Details___

I run a radeon RX card supported by the amdgpu module

"# lspci
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Baffin [Radeon RX 550 640SP / RX 560/560X] (rev cf)
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X]"

It has 1 DP, 1 DVI and 1 HDMI outs.


The GPU is connected to: 1) a Dell U3011 display via DVI (only 2560x1600 video) and 2) an audio receiver via HDMI (only audio).
The display is shared with another computer, which takes up the display's DP port. The receiver does not support 2K/4K video resolution and serves as a hifi DAC+amplifier only. HDMI is the only way to pass digtal PCM 5.1 audio.  

I need DDC to switch video inputs of the Dell U3011 display, because its sensor buttons and on-screen menus are a real pain to use. gddccontrol is a handy linux gui app to do it, but it needs i2c and ddc support (which get disabled by the dc=1 switch).
Comment 1 Alex Deucher 2021-03-26 13:28:54 UTC
When DC is enabled the i2c buses are also exposed.  Maybe you are just not using the right i2c bus?
Comment 2 Vyacheslav Dikonov 2021-03-28 10:00:56 UTC
I doubt that. 
Please, see my ddccontrol logs with different settings. It shows that ddccontrol cannot access the controls unless the options are set as dc=0, hw_itc=0.  All logs are taken under root and with POSIX locale. 
I also add a reference log drom a different machine attached to the same display.
Comment 3 Vyacheslav Dikonov 2021-03-28 10:02:17 UTC
Created attachment 296103 [details]
dc=0, hw_i2c=0, DDC works no sound
Comment 4 Vyacheslav Dikonov 2021-03-28 10:03:03 UTC
Created attachment 296105 [details]
dc=1, hw_i2c=0, DDC fails
Comment 5 Vyacheslav Dikonov 2021-03-28 10:03:42 UTC
Created attachment 296107 [details]
dc=0, hw_i2c=1, DDC fails
Comment 6 Vyacheslav Dikonov 2021-03-28 10:04:57 UTC
Comment on attachment 296107 [details]
dc=0, hw_i2c=1, DDC fails

Sorry, misprint. dc=1, hw_i2c=1, DDC fails
Comment 7 Vyacheslav Dikonov 2021-03-28 10:07:32 UTC
Created attachment 296109 [details]
dc=0, hw_i2c=1, DDC works no sound
Comment 8 Vyacheslav Dikonov 2021-03-28 10:07:52 UTC
Comment on attachment 296109 [details]
dc=0, hw_i2c=1, DDC works no sound

DDC FAILS
Comment 9 Vyacheslav Dikonov 2021-03-28 10:09:29 UTC
Created attachment 296111 [details]
Reference logs from a different computer attached to the same display
Comment 10 Vyacheslav Dikonov 2021-03-28 10:11:55 UTC
Excuse me for mistypes in the attachment notes. DDC works ONLY with dc=0 and hw_i2c=0. Everything else leads to errors, Each file contains a correct description.