Re: Audio out on DisplayPort but not HDMI, on AMD Ryzen APU/Vega
On Thu, 08 Jul 2021 14:26:54 +0200, Damjan Georgievski wrote:
On Thu, 8 Jul 2021 at 13:37, Takashi Iwai tiwai@suse.de wrote:
On Fri, 02 Jul 2021 15:27:30 +0200, Damjan Georgievski wrote:
I have a desktop computer with an AMD Ryzen 5 4650G PRO APU (CPU + on-die GPU). The motherboard (MSI Mortar B550m wifi / bios 1.6). has one displayport and one HDMI outputs. The displayport is connected to my Lenovo P27 monitor, and the HDMI to my Samsung TV.
When I choose the GPU as an audio out, I only get audio on the 3.5" headphones jack of the Lenovo monitor, while I would like to get the audio on the Samsung TV over HDMI. I can't find a way to switch the different outputs (neither over pipewire or just using native alsa).
pavucontrol configuration https://i.imgur.com/9nbVtNz.png alsamixer -c0 only has only one option to mute s/pdif, which mutes the output on the displayport -> Lenovo -> 3.5" jack.
$ aplay -l **** List of PLAYBACK Hardware Devices **** card 1: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 2: Generic_1 [HD-Audio Generic], device 0: ALCS1200A Analog [ALCS1200A Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 2: Generic_1 [HD-Audio Generic], device 1: ALCS1200A Digital [ALCS1200A Digital] Subdevices: 1/1 Subdevice #0: subdevice #0
Am I correct that card 1 here ^ should have at least two devices?
It could have more entries, depending on the configuration. I suppose you enabled CONFIG_SND_HDA_CODEC_HDMI properly?
yes - CONFIG_SND_HDA_CODEC_HDMI=m is enabled. I've been using the Arch distro kernel, which has that enabled; but also with self-compiled 5.13.0 from stable, with the same distro config; and with 5.14-git (77d34a468) with the same config. All have the same behaviour.
Should this hardware be supported with the sound/soc/amd/renoir/rn-pci-acp3x.c driver (instead of snd_hda_intel)? … since it is a Renoir desktop APU.
Please give alsa-info.sh output for more detailed analysis.
http://alsa-project.org/db/?f=00b31f3f0e6c58b56c73f98aec7c6b5ccaff700e
The codec proc output there shows that only one pin is enabled for HDMI/DP output, and that's the reason why the driver created only one stream. It's basically a BIOS setup.
The patch below should enable all pins forcibly and this should give more streams. Give it a try.
Takashi
--- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -1940,6 +1940,7 @@ static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t cvt_nid) static const struct snd_pci_quirk force_connect_list[] = { SND_PCI_QUIRK(0x103c, 0x870f, "HP", 1), SND_PCI_QUIRK(0x103c, 0x871a, "HP", 1), + SND_PCI_QUIRK(0x1462, 0xec94, "MS-7C94", 1), {} };
Should this hardware be supported with the sound/soc/amd/renoir/rn-pci-acp3x.c driver (instead of snd_hda_intel)? … since it is a Renoir desktop APU.
Please give alsa-info.sh output for more detailed analysis.
http://alsa-project.org/db/?f=00b31f3f0e6c58b56c73f98aec7c6b5ccaff700e
The codec proc output there shows that only one pin is enabled for HDMI/DP output, and that's the reason why the driver created only one stream. It's basically a BIOS setup.
The patch below should enable all pins forcibly and this should give more streams. Give it a try.
Takashi
--- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -1940,6 +1940,7 @@ static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t cvt_nid) static const struct snd_pci_quirk force_connect_list[] = { SND_PCI_QUIRK(0x103c, 0x870f, "HP", 1), SND_PCI_QUIRK(0x103c, 0x871a, "HP", 1),
SND_PCI_QUIRK(0x1462, 0xec94, "MS-7C94", 1), {}
};
This somewhat improved the situation. I get multiple HDMI devices on the card now, and the default seems to be the actual HDMI port (as opposed to the DisplayPort).
But I can't manually control where the audio goes, and at one point (I think when the TV was off), it automatically switched to the DisplayPort.
http://alsa-project.org/db/?f=eb8da3434b011820de868451e55ae4f22fbb350c
On Fri, 09 Jul 2021 16:40:18 +0200, Damjan Georgievski wrote:
Should this hardware be supported with the sound/soc/amd/renoir/rn-pci-acp3x.c driver (instead of snd_hda_intel)? … since it is a Renoir desktop APU.
Please give alsa-info.sh output for more detailed analysis.
http://alsa-project.org/db/?f=00b31f3f0e6c58b56c73f98aec7c6b5ccaff700e
The codec proc output there shows that only one pin is enabled for HDMI/DP output, and that's the reason why the driver created only one stream. It's basically a BIOS setup.
The patch below should enable all pins forcibly and this should give more streams. Give it a try.
Takashi
--- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -1940,6 +1940,7 @@ static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t cvt_nid) static const struct snd_pci_quirk force_connect_list[] = { SND_PCI_QUIRK(0x103c, 0x870f, "HP", 1), SND_PCI_QUIRK(0x103c, 0x871a, "HP", 1),
SND_PCI_QUIRK(0x1462, 0xec94, "MS-7C94", 1), {}
};
This somewhat improved the situation. I get multiple HDMI devices on the card now, and the default seems to be the actual HDMI port (as opposed to the DisplayPort).
But I can't manually control where the audio goes, and at one point (I think when the TV was off), it automatically switched to the DisplayPort.
The connection is indeed managed dynamically, hence you cannot expect which port is for what exactly. The actual connection should be checked by EDID (or ELD).
So, does the sound output from DP also work as expected, as well as HDMI?
Takashi
participants (2)
-
Damjan Georgievski
-
Takashi Iwai