[Bug 237340] Unable to make HDMI sound works with HD630
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 02 Oct 2025 17:55:49 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=237340
--- Comment #29 from Damjan Jovanovic <damjan.jov@gmail.com> ---
So after recently fixing bug 289441 (O_NONBLOCK does nothing in open() of
/dev/dsp, affecting at least Wine) and bug 216568 (32 bit compatibility for
OSS), maybe now I can take on this difficult but badly needed bug.
@Richard Russo in comment 27 got it working on his Broadwell system, back in
2022, by using a patch
(https://github.com/freebsd/drm-kmod/issues/187#issuecomment-1216914479).
On my Haswell system, FreeBSD 14.3, without that patch:
---snip---
$ sysctl dev.hdaa.0
dev.hdaa.0.init_clear: 0
dev.hdaa.0.reconfig: 0
dev.hdaa.0.gpo_config:
dev.hdaa.0.gpo_state:
dev.hdaa.0.gpio_config:
dev.hdaa.0.gpio_state:
dev.hdaa.0.gpi_state:
dev.hdaa.0.config: forcestereo,ivref50,ivref80,ivref100,ivref,vref
dev.hdaa.0.nid3_original: 0x18560010 as=1 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
dev.hdaa.0.nid3_config: 0x18560010 as=1 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
dev.hdaa.0.nid3: pin: Digital-out (Jack)
Widget cap: 0x0040778d PWR DIGITAL UNSOL 8CH
Association: 0 (0x0001)
Pin cap: 0x09000094 PDC OUT HDMI DP HBR
Pin config: 0x18560010 as=1 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
Pin control: 0x00000040 OUT
Output amp: 0x80000000 mute=1 step=0 size=0 offset=0 (0/0dB)
Connections: 1
+ <- nid=2 [audio output]
dev.hdaa.0.nid2: audio output
Widget cap: 0x00006611 PWR DIGITAL 8CH
Association: 0 (0x0001)
OSS: pcm (pcm)
Stream cap: 0x00000005 AC3 PCM
PCM cap: 0x001e07f0 16 20 24 32 bits, 32 44 48 88 96 176 192 KHz
dev.hdaa.0.%iommu:
dev.hdaa.0.%parent: hdacc0
dev.hdaa.0.%pnpinfo: type=0x01 subsystem=0x80860101
dev.hdaa.0.%location: nid=1
dev.hdaa.0.%driver: hdaa
dev.hdaa.0.%desc: Intel Haswell Audio Function Group
---snip---
With that patch:
---snip---
$ sysctl dev.hdaa.0
dev.hdaa.0.init_clear: 0
dev.hdaa.0.reconfig: 0
dev.hdaa.0.gpo_config:
dev.hdaa.0.gpo_state:
dev.hdaa.0.gpio_config:
dev.hdaa.0.gpio_state:
dev.hdaa.0.gpi_state:
dev.hdaa.0.config: forcestereo,ivref50,ivref80,ivref100,ivref,vref
dev.hdaa.0.nid8: vendor widget [DISABLED]
Widget cap: 0x00f00000
dev.hdaa.0.nid7_original: 0x18560030 as=3 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
dev.hdaa.0.nid7_config: 0x18560030 as=3 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
dev.hdaa.0.nid7: pin: Digital-out (Jack) [DISABLED]
Widget cap: 0x0040778d PWR DIGITAL UNSOL 8CH
Pin cap: 0x0b000094 PDC OUT HDMI DP HBR
Pin config: 0x18560030 as=3 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
Pin control: 0x00000000
Output amp: 0x80000000 mute=1 step=0 size=0 offset=0 (0/0dB)
Connections: 3
+ [DISABLED] <- nid=0 [GHOST!] [UNKNOWN] (selected)
+ [DISABLED] <- nid=0 [GHOST!] [UNKNOWN]
+ [DISABLED] <- nid=0 [GHOST!] [UNKNOWN]
dev.hdaa.0.nid6_original: 0x18560020 as=2 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
dev.hdaa.0.nid6_config: 0x18560020 as=2 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
dev.hdaa.0.nid6: pin: Digital-out (Jack) [DISABLED]
Widget cap: 0x0040778d PWR DIGITAL UNSOL 8CH
Pin cap: 0x0b000094 PDC OUT HDMI DP HBR
Pin config: 0x18560020 as=2 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
Pin control: 0x00000000
Output amp: 0x80000000 mute=1 step=0 size=0 offset=0 (0/0dB)
Connections: 3
+ [DISABLED] <- nid=0 [GHOST!] [UNKNOWN] (selected)
+ [DISABLED] <- nid=0 [GHOST!] [UNKNOWN]
+ [DISABLED] <- nid=0 [GHOST!] [UNKNOWN]
dev.hdaa.0.nid5_original: 0x18560010 as=1 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
dev.hdaa.0.nid5_config: 0x18560010 as=1 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
dev.hdaa.0.nid5: pin: Digital-out (Jack) [DISABLED]
Widget cap: 0x0040778d PWR DIGITAL UNSOL 8CH
Pin cap: 0x0b000094 PDC OUT HDMI DP HBR
Pin config: 0x18560010 as=1 seq=0 device=Digital-out conn=Jack
ctype=Digital loc=0x18 color=Unknown misc=0
Pin control: 0x00000000
Output amp: 0x80000000 mute=1 step=0 size=0 offset=0 (0/0dB)
Connections: 3
+ [DISABLED] <- nid=0 [GHOST!] [UNKNOWN] (selected)
+ [DISABLED] <- nid=0 [GHOST!] [UNKNOWN]
+ [DISABLED] <- nid=0 [GHOST!] [UNKNOWN]
dev.hdaa.0.nid4: audio output [DISABLED]
Widget cap: 0x00006611 PWR DIGITAL 8CH
Stream cap: 0x00000005 AC3 PCM
PCM cap: 0x001e07f0 16 20 24 32 bits, 32 44 48 88 96 176 192 KHz
dev.hdaa.0.nid3: audio output [DISABLED]
Widget cap: 0x00006611 PWR DIGITAL 8CH
Stream cap: 0x00000005 AC3 PCM
PCM cap: 0x001e07f0 16 20 24 32 bits, 32 44 48 88 96 176 192 KHz
dev.hdaa.0.nid2: audio output [DISABLED]
Widget cap: 0x00006611 PWR DIGITAL 8CH
Stream cap: 0x00000005 AC3 PCM
PCM cap: 0x001e07f0 16 20 24 32 bits, 32 44 48 88 96 176 192 KHz
dev.hdaa.0.%iommu:
dev.hdaa.0.%parent: hdacc0
dev.hdaa.0.%pnpinfo: type=0x01 subsystem=0x80860101
dev.hdaa.0.%location: nid=1
dev.hdaa.0.%driver: hdaa
dev.hdaa.0.%desc: Intel Haswell Audio Function Group
---snip---
So the patch definitely does something. However that isn't enough. In fact it's
worse with the patch: despite having more nids, it has no HDMI device any
longer in /dev/sndstat, so I cannot even try to play sound over HDMI.
Where does that patch come from?
It seems to be taken from sound/hda/codecs/hdmi/intelhdmi.c in the Linux
kernel.
How does that patch work?
It seems to send vendor-specific "verbs" to enable pins and connectors, and
enable DisplayPort 1.2. It also seems to do something with clocks. FreeBSD does
not do any of this, which is probably why audio over HDMI works on Linux, but
doesn't work on FreeBSD.
--
You are receiving this mail because:
You are the assignee for the bug.