Bug 51358

Summary: Ноутбук ASUS UX3405MA Meteor Lake MTL. Cirrus CSC3551. Нет звука внутренних динамиков
Product: Sisyphus Reporter: Toxblh <toxblh>
Component: kernel-image-un-defAssignee: Vitaly Chikunov <vt>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: aen, kernelbot, placeholder, rider, sbolshakov, toxblh, vt
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
dmesg 6.11rc5 + DSDT
none
6.6.48-un-def-alt1 + DSDT patch
none
Какие флаги докинул в ядро
none
dmesg 6.11 + patch + DSDT none

Description Toxblh 2024-08-31 23:04:51 MSK
Created attachment 16764 [details]
dmesg 6.11rc5 + DSDT

Доброго дня. Начало было тут https://bugzilla.altlinux.org/51357 - остался нерабочий Cirrus Amplifier.

Коротко. Система Alt Regular. Сизиф. Ядра un-def и последнее 6.11.0-rc5 пробовал. В Fedora работает из коробки, но с не правильной калибровкой. В Альт, как не пробовал у меня ни в какую не видит этот усилитель, как только его я не подкладывал в систему. Просьба помочь, очень не хочется пересобирать ядро в слепую. BIOS был как в статье 304 и 305, и 307, а вчера обновил до 308, так что тут точно новый с поправленным ACPI. 

Длинно. 
Изначально пробовал Альт, ничего не работало, пошёл искать дистр где работает - оказалось на Fedora работает с коробки, но калибровочные файлы и прошивка грузились не верные, а точнее стандартные из-за чего тихий моно звук был. Возможно это как-то поможет. 

Дальше пошёл заводить звук в Альте. Поправили sof, dummy output пропал. Но вот CS3551 никак вообще не подаёт признаков жизни не смотря на всё. Итак что есть это всё? 

1. Первое и быстрое решение https://github.com/smallcms/asus_zenbook_ux3405ma применить патч DSDT, который уже подготовлен и должен был помочь системе понять, что усилитель есть и какой. 

По итогу у меня есть аналогичные ошибки дубля ACPI https://github.com/smallcms/asus_zenbook_ux3405ma/issues/7#issuecomment-2211962440 как у товарища в первом код-блоке, который ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.SPI1.SPK1], AE_ALREADY_EXISTS и далее. 
Основное отличие, что у него так же далее в dmesg есть попытка старта усилителя cs35l41-hda spi1-CSC3551:00-cs35l41-hda.0: Falling back to default firmware.  

А в моём случае полная тишина. 

Мой:
[root@asus ~]# dmesg | grep -Ei 'sof|snd|hda|cs35l41'
[    0.061423] software IO TLB: area num 16.
[    0.323116] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.354008] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.354009] software IO TLB: mapped [mem 0x0000000046e69000-0x000000004ae69000] (64MB)
[    4.865757] snd_hda_intel 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver
[    5.003959] sof-audio-pci-intel-mtl 0000:00:1f.3: enabling device (0000 -> 0002)
[    5.004061] sof-audio-pci-intel-mtl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100
[    5.004132] sof-audio-pci-intel-mtl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    5.010881] sof-audio-pci-intel-mtl 0000:00:1f.3: use msi interrupt mode
[    5.032525] sof-audio-pci-intel-mtl 0000:00:1f.3: hda codecs found, mask 5
[    5.032529] sof-audio-pci-intel-mtl 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now
[    5.032532] sof-audio-pci-intel-mtl 0000:00:1f.3: DMICs detected in NHLT tables: 2
[    5.035468] sof-audio-pci-intel-mtl 0000:00:1f.3: Firmware paths/files for ipc type 1:
[    5.035471] sof-audio-pci-intel-mtl 0000:00:1f.3:  Firmware file:     intel/sof-ipc4/mtl/sof-mtl.ri
[    5.035472] sof-audio-pci-intel-mtl 0000:00:1f.3:  Firmware lib path: intel/sof-ipc4-lib/mtl
[    5.035472] sof-audio-pci-intel-mtl 0000:00:1f.3:  Topology file:     intel/sof-ace-tplg/sof-hda-generic-2ch.tplg
[    5.036178] sof-audio-pci-intel-mtl 0000:00:1f.3: Loaded firmware library: ADSPFW, version: 2.10.0.1
[    5.196145] sof-audio-pci-intel-mtl 0000:00:1f.3: Booted firmware version: 2.10.0.1
[    5.201120] sof-audio-pci-intel-mtl 0000:00:1f.3: Topology: ABI 3:29:0 Kernel ABI 3:23:0
[    5.201383] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: Parent card not yet available, widget card binding deferred
[    5.218032] snd_hda_codec_realtek ehdaudio0D0: autoconfig for ALC294: line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:speaker
[    5.218037] snd_hda_codec_realtek ehdaudio0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    5.218039] snd_hda_codec_realtek ehdaudio0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    5.218041] snd_hda_codec_realtek ehdaudio0D0:    mono: mono_out=0x0
[    5.218042] snd_hda_codec_realtek ehdaudio0D0:    inputs:
[    5.673109] skl_hda_dsp_generic skl_hda_dsp_generic: hda_dsp_hdmi_build_controls: no PCM in topology for HDMI converter 3
[    5.689485] input: sof-hda-dsp Headphone as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input32
[    5.689537] input: sof-hda-dsp HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input33
[    5.689573] input: sof-hda-dsp HDMI/DP,pcm=4 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input34
[    5.689609] input: sof-hda-dsp HDMI/DP,pcm=5 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input35

При этом 
[root@asus ~]# lsmod | grep -Ei 'cs35l41'
snd_hda_scodec_cs35l41_spi    12288  0
snd_hda_scodec_cs35l41_i2c    12288  0
snd_hda_scodec_cs35l41    65536  2 snd_hda_scodec_cs35l41_i2c,snd_hda_scodec_cs35l41_spi
snd_hda_cs_dsp_ctls    16384  1 snd_hda_scodec_cs35l41
snd_soc_cs_amp_lib     16384  1 snd_hda_scodec_cs35l41
cs_dsp                 73728  3 snd_hda_scodec_cs35l41,snd_hda_cs_dsp_ctls,snd_soc_cs_amp_lib
snd_soc_cs35l41_lib    40960  3 snd_hda_scodec_cs35l41_i2c,snd_hda_scodec_cs35l41,snd_hda_scodec_cs35l41_spi
snd                   147456  28 snd_ctl_led,snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_sof,snd_hda_scodec_cs35l41,snd_timer,snd_soc_hdac_hdmi,snd_compress,snd_soc_core,snd_pcm,snd_hda_cs_dsp_ctls,snd_rawmidi

И новые прошивки есть под усилитель 
[root@asus ~]# ls /lib/firmware/cirrus/*10431a63*
/lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid0-l0.bin     /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid1-l0.bincfg
/lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid0-l0.bincfg  /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid1-r0.bin
/lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid0-r0.bin     /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid1-r0.bincfg
/lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid0-r0.bincfg  /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63.wmfw
/lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid1-l0.bin

И SOF как упомянул ранее стоит и починили. 

2. Есть гайд "как завести звук" https://asus-linux.org/guides/cirrus-amps/ я пробовал сделать свой DSDT. Тоже не получилось. Попытки притвориться другой аудиокартой через 
добавление в /etc/modprobe.d/alsa-base.conf содержимого options snd-hda-intel model=1043:17f3 или иных из статьи - результата не дали. И не уверен, что вообще должны были. 

Как итог. Я на сегодня перепробовал разные подходы с DSDT и система в упор не видит CS3551

Вложение dmesg с прошлых разов https://bugzilla.altlinux.org/attachment.cgi?id=16763
И прикреплю полный dmesg 6.11rc5 с DSDT патчем https://github.com/smallcms/asus_zenbook_ux3405ma
ошибки ACPI, как у товарища с github :365 
Но заветной инициализации усилителя на 1075+ нет.
undef ведёт себя так же. 
Пробовал 6.11rc5 из-за патча https://github.com/torvalds/linux/commit/5f9f982dd71b418aeba7a0b37f87312545c06df4, который должен был принести это исправление специально для данного усилителя. 

При это в Fedora, оно как-то работает почему-то. 
Внешние устройства тоже работают корректно. А вот усилитель нет.
Comment 1 Toxblh 2024-08-31 23:12:17 MSK
Created attachment 16765 [details]
6.6.48-un-def-alt1 + DSDT patch

Ну и для справедливости 6.6.48-un-def-alt1 с DSDT
Comment 2 Toxblh 2024-09-01 17:33:00 MSK
Есть одна зацепка.
У федоры есть такой вот странный флаг 
CONFIG_SND_HDA_CIRRUS_SCODEC_KUNIT_TEST 
https://src.fedoraproject.org/rpms/kernel/blob/rawhide/f/kernel-x86_64-fedora.config#_6773

Он отсылает нас к https://lore.kernel.org/lkml/20230918095129.440-1-rf@opensource.cirrus.com/T/ 

А у арча 
CONFIG_SND_HDA_CIRRUS_SCODEC=m
https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/blob/main/config?ref_type=heads#L7275 

Предположу что на арче тоже работает. Так как для AUR пакет ничего нет особенного дополнительно
Comment 3 Toxblh 2024-09-01 17:55:20 MSK
Провёл анализ чего есть у них и чего нет в альт https://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=blob;f=config;h=e82601aea85fbc9b1c90d904aeb62a4db1b45302;hb=9f24c7de98f4f6c1fe693d094597a4c912782397 тут

Разница с arch 
+ CONFIG_SND_HDA_CIRRUS_SCODEC=m
+ CONFIG_SND_HDA_SCODEC_COMPONENT=m
+ CONFIG_SND_HDA_SCODEC_CS35L56_I2C=m
+ CONFIG_SND_HDA_SCODEC_CS35L56_SPI=m
+ CONFIG_SND_HDA_SCODEC_CS35L56=m
+ CONFIG_SND_HDA_SCODEC_TAS2781_I2C=m

Разница с Fedora
- CONFIG_SND_HDA_CS_DSP_CONTROLS=m
- CONFIG_SND_HDA_GENERIC_LEDS=y
+ CONFIG_SND_HDA_CIRRUS_SCODEC_KUNIT_TEST=m
+ CONFIG_SND_HDA_PREALLOC_SIZE=0
+ CONFIG_SND_HDA_SCODEC_CS35L56_I2C=m
+ CONFIG_SND_HDA_SCODEC_CS35L56_SPI=m
+ CONFIG_SND_HDA_SCODEC_TAS2781_I2C=m

Из того что изменено относительно fedora/arch 
alt CONFIG_SND_HDA_INPUT_BEEP_MODE=1
arch CONFIG_SND_HDA_INPUT_BEEP_MODE=0
fedora CONFIG_SND_HDA_INPUT_BEEP_MODE=0

alt CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
arch CONFIG_SND_HDA_POWER_SAVE_DEFAULT=10
fedora CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1

С последним - https://www.kernel.org/doc/html/latest/sound/designs/powersave.html получается в Alt выключено сбережение совсем.
Comment 4 Toxblh 2024-09-02 17:05:03 MSK
Всё же решился пересобрать ядро. Это не так страшно, как 3 или 4 предупреждения, что так делать не стоит, на wiki. А ещё там кажется пропущена установка, после сборки. 

Что сделал. 
Стянул 6.11
Добавил флаги в конфиг, а именно:

```diff
diff --git a/config b/config
index 3c46b37df730..c6f47f6d202a 100644
--- a/config
+++ b/config
@@ -6780,6 +6780,12 @@ CONFIG_SND_HDA_CODEC_SI3054=m
 CONFIG_SND_HDA_GENERIC=m
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
 CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
+CONFIG_SND_HDA_CIRRUS_SCODEC=m
+CONFIG_SND_HDA_SCODEC_COMPONENT=m
+CONFIG_SND_HDA_SCODEC_CS35L56_I2C=m
+CONFIG_SND_HDA_SCODEC_CS35L56_SPI=m
+CONFIG_SND_HDA_SCODEC_CS35L56=m
+CONFIG_SND_HDA_SCODEC_TAS2781_I2C=m
 # end of HD-Audio
 
 CONFIG_SND_HDA_CORE=m
```

gear-create-tag -n test1 -s kflavour=un-def
gear-hsh -t test1    

Установил ядро и headers... вообщем всё что не debuginfo установил и не domU, было в папке. 

>>> Звука нет. 

В dmesg появилась только одна строчка новая

[   16.524944] platform CSC3551:00: deferred probe pending: Serial bus multi instantiate pseudo device driver: failed to allocate SPI device CSC3551:00 from ACPI

Которая вроде подтверждает, что ядро собралось с CS35L56 флагом и даже есть попытка запуска.

Раз сборка не такая страшная, как описывают. Могу попробовать у себя локально патчи на драйвера пособирать. Хоть и собирается ядро полчаса.
Comment 5 Toxblh 2024-09-02 19:51:13 MSK
Пошёл пробовать собрать с 

CONFIG_PINCTRL_METEORLAKE=m

У меня ж метеор. И этой части нет
Comment 6 Toxblh 2024-09-02 19:54:04 MSK
Чтобы не забыть, скажу там ещё один новый в 6.11 есть:
CONFIG_PINCTRL_METEORPOINT
Comment 7 Toxblh 2024-09-03 02:10:30 MSK
Created attachment 16777 [details]
Какие флаги докинул в ядро

Юху! Заработало.

Так пробовал отдельно METEOR флаги и флаги для звука. По отдельности не работают. А вот вместе всё заработало.
Comment 8 Toxblh 2024-09-03 02:11:15 MSK
Это патч над 6.11 если что.
Comment 9 Toxblh 2024-09-03 02:14:00 MSK
Created attachment 16778 [details]
dmesg 6.11 + patch + DSDT
Comment 10 Toxblh 2024-09-03 02:42:37 MSK
Без DSDT патча по dmesg всё поднимается, а в реальности не работает :(
Но с ним всё отлично.
Comment 11 Vitaly Chikunov 2024-09-03 07:16:33 MSK
(In reply to Toxblh from comment #7)
> Created attachment 16777 [details]
> Какие флаги докинул в ядро

Эти опции конфига я включу.
Comment 12 Vitaly Chikunov 2024-09-03 08:29:16 MSK
Можно еще попробовать включить CONFIG_SND_SOC_INTEL_SOF_SSP_AMP_MACH
Comment 13 Toxblh 2024-09-03 19:15:44 MSK
С этим конфигом по началу всё сломалось, как показалось. А оказывается эта штука кажется активировала режим сбережения. Пока звук в 0 не увёл и не начал добавлять, звука вообще не было.
Comment 14 Toxblh 2024-09-03 19:17:34 MSK
Зато.. с ним не нужен DSDT патч! 
Огонь!

:)
Comment 15 Vitaly Chikunov 2024-09-03 19:22:36 MSK
(In reply to Toxblh from comment #14)
> Зато.. с ним не нужен DSDT патч! 
> Огонь!
> 
> :)

Спасибо за тест. Я добавлю эти опции пока в 6.10 и 6.11 (при следующей сборке), а потом и в остальные.

https://git.altlinux.org/people/kernelbot/packages/?p=kernel-image.git;a=shortlog;h=refs/heads/6.11/sisyphus
Comment 16 Vitaly Chikunov 2024-09-03 19:27:14 MSK
За и вообще спасибо за поиск решения проблемы.
Comment 17 Toxblh 2024-09-03 20:40:59 MSK
Это в моих же интересах, купил себе ноут, хочется, чтобы всё работало)
Я ещё попробую на un-def ядре собрать с этими флагами, понять, как оно работает.
Comment 18 Toxblh 2024-09-04 03:06:54 MSK
Обнаружилось ещё. Ну наверное можно в другой баг вынести
Meteor по PState пакета не ходит от слова совсем 
Это те что в powerstat на вкладке Idle stats -> Pkg(HW). Всегда сидит в С2. А не проваливается до C10, как на других дистрах.
Comment 19 Toxblh 2024-09-11 00:44:27 MSK
Проверил на чистую установку. 
После установки нового 6.10, всё работает из коробки с нюансом, что сначала нужно сделать громкость 0 и начинает работать.