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 ;-)
http://alsa-project.org/db/?f=057aac1a0e9591de3847dca5ebc424dd65c8a221
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