[Bug 237340] Unable to make HDMI sound works with HD630

From: <bugzilla-noreply_at_freebsd.org>
Date: Sat, 04 Oct 2025 09:35:18 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=237340

--- Comment #30 from Damjan Jovanovic <damjan.jov@gmail.com> ---
Created attachment 264282
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=264282&action=edit
Preliminary patch

Here's a minimal, preliminary patch that gets HDMI sound working on my Intel
Haswell setup, and might also work on Broadwell, Skylake, Kaby Lake, Ice Lake,
and Tiger Lake.

It's based on the preliminary patch by Richard Russo on
https://github.com/freebsd/drm-kmod/issues/187#issuecomment-1216914479, with
these changes:
- the vendor verb is only sent to specific Intel cards, not to every codec in
the system.
- I took out the BCLK stuff, it breaks for me (complete silence on all HDMI
outputs).
- added support for some of the HDA codecs that came after Broadwell.
- moved definitions of the vendor verbs to hda_reg.h.
- DisplayPort 1.2 is currently only enabled on Broadwell, because it breaks
HDMI sound on Haswell, so I don't trust it on other codecs either.

Please check the device ID for your Intel HDA codec:
sysctl dev.hdacc | grep 8086
I get:
dev.hdacc.0.%pnpinfo: vendor=0x8086 device=0x2807 revision=0x00 stepping=0x00
Now see if the "device", 0x2807 in my case, is in the list below. If not,
report it here (full output of sysctl dev.hdacc), and if you can, add it to the
patch and test it (in the intel_hdmi_enable_all_pin_and_converter_widgets()
function).

Currently supported Intel HDA codec device IDs (they've been hard to find):
0x2807 (Haswell)
0x2808 (Broadwell)
0x2809 (Skylake)
0x280b (Kaby Lake)
0x280f (Ice Lake)
0x2812 (Tiger Lake)
0x2814 (Tiger Lake?)

If you can, please test. Unfortunately you'll need to patch and rebuild the
kernel, ie.
# Assuming the kernel version in /usr/src matches your running kernel:
cd /usr/src
patch -p1 < /where/you/downloaded/my.patch
make buildkernel
make installkernel
reboot
# Examine your new PCM outputs, which should include HDMI:
cat /dev/sndstat
# Set the correct default unit, 1 in my case:
sysctl hw.snd.default_unit=1
# Play sound and report back

Known issues include:
- While sound over HDMI works, I get constant static played through my PC
speakers. Other sounds can also be played, but doesn't make the static go away.
- Only minimally tested, all kinds of other issues might be there, and it is of
course without any warranty.

-- 
You are receiving this mail because:
You are the assignee for the bug.