Thanks for the scoop. I've added "options snd-hda-intel probe_mask=0x105" to /etc/modules-d/alsa.conf. Unfortunately that didn't help. The ALC892 didn't show up. Why the log below says "codec_mask forced to 0x5" but I've explicitly set the value to 0x105 I don't know.
[ 109.071253] snd_hda_intel 0000:00:1f.3: codec_mask forced to 0x5 [ 109.071329] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_exit [i915]) [ 109.092895] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input20 [ 109.093808] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input21 [ 109.093883] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input22 [ 109.093953] input: HDA Intel PCH HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input23 [ 109.095354] input: HDA Intel PCH HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input24
Gesendet: Sonntag, 13. Februar 2022 um 10:08 Uhr Von: "Takashi Iwai" tiwai@suse.de An: "Pierre-Louis Bossart" pierre-louis.bossart@linux.intel.com Cc: "Vehmanen, Kai" kai.vehmanen@intel.com, alsa-devel@alsa-project.org, dmummenschanz@web.de Betreff: Re: Cannon Lake PCH cAVS (ALC892) not detected by kernel driver On Sat, 12 Feb 2022 20:42:28 +0100, Pierre-Louis Bossart wrote:
On 2/12/22 05:33, dmummenschanz@web.de wrote:
I did some more digging into the code to find out what goes boink. For comparison I took my wife's desktop wich has a Cannon Lake
chipset
as well along with a working a ALC892 AVS device.
It seems there is a codec mask issue selected in the chip->bus
struct.
Inside the function
static int azx_probe_continue(struct azx *chip)
of hda_intel.c the bus->codec_mask on my wife's pc contains the
integer
value "5" and both ALC892 and the HDMI is found. On my device it is
"4"
and only the HDMI is found.
/* create codec instances */ if (bus->codec_mask) { err = azx_probe_codecs(chip, azx_max_codecs[chip->driver_type]); if (err < 0) goto out_free; }
After forcing the falue before probing: "bus->codec_mask = 5;" the ALC892 is finally detected on my system and I have sound! alsa-info below: Please pardon the trash printk's in the log ;-)
[1]http://alsa-project.org/db/?f=057aac1a0e9591de3847dca5ebc424dd65c8a2 21
I'll do some more digging into it next week but it would probably save tons of time if someone could point me is the right direction where to look further?
Adding Kai and Takashi, in case they haven't see this codec_mask
issue.
I personally don't recall having seen this before.
This means BIOS trying to hide this codec by some reason. It's seen sometimes in the past although it's rare. You can forcibly probe it via probe_mask=0x105 option for snd-hda-intel module in this case. If this is confirmed to work reliably, we can add a static quirk table in the driver cideo. HTH, Takashi
References
1. http://alsa-project.org/db/?f=057aac1a0e9591de3847dca5ebc424dd65c8a221