Bug 208699

Summary: ACP invalid audio mode7
Product: Drivers Reporter: Janpieter Sollie (janpieter.sollie)
Component: Sound(ALSA)Assignee: Jaroslav Kysela (perex)
Status: RESOLVED INSUFFICIENT_DATA    
Severity: normal CC: tiwai, zilexa
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 5.7.10-5.8.7 Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg + lsmod + lspci / filtered dmesg with IOMMU
kernel .config file
patch to allow I2S_MODE 2

Description Janpieter Sollie 2020-07-27 07:13:47 UTC
Created attachment 290597 [details]
dmesg + lsmod + lspci / filtered dmesg with IOMMU

I replaced my MSI B450i with a udoo bolt dev board (running a very similar 2400GE -> V1607B ryzen chip).
ALSA does not report any sound card on the udoo bolt.  While both snd-hda-intel and snd_pci_acp3x seem to have a target on the PCI bus, none of the drivers reports a working sound card.
running firmware 20200721.
When I look at the ACP code, I'd think of an issue when not using the IOMMU (which was being used on the B450i).  
When running the system with IOMMU, this issue gets reduced to acp3x driver only.  Also the error message has changed, and the cards are detected by the ALSA subsystem
Attachment: dmesg + lspci + lsmod + .config for 5.8 without IOMMU
Comment 1 Janpieter Sollie 2020-07-27 07:17:27 UTC
Created attachment 290599 [details]
kernel .config file

linux .config file with IOMMU
without IOMMU: only IOMMU drivers are disabled + IOMMU disabled in BIOS
Comment 2 Janpieter Sollie 2020-09-15 07:23:43 UTC
Update:

In linux 5.8, PCI ID 1022:15e2 is taken over by the renoir ACP module (the device is a raven ridge CPU), but output here does not really reveal too much about it:
> [ 2.420200] snd_pci_acp3x 0000:03:00.5: enabling device (0000 -> 0002)
> [ 2.420373] snd_pci_acp3x 0000:03:00.5: Invalid ACP audio mode : 2
> [ 2.589650] acp_pdm_mach acp_pdm_mach.0: snd_soc_register_card(acp) failed:
> -517
> [ 2.589745] acp_pdm_mach acp_pdm_mach.0: dmic-hifi <-> acp_rn_pdm_dma.0
> mapping ok
> [ 24.092970] acp_rn_pdm_dma acp_rn_pdm_dma.0: ASoC: error at
> snd_soc_pcm_dai_trigger on acp_rn_pdm_dma.0: -110

The acp3x module however, shows a different error:

> [    4.302988] snd_pci_acp3x 0000:05:00.5: enabling device (0000 -> 0002)
> [    4.303721] snd_pci_acp3x 0000:05:00.5: Invalid ACP audio mode : 2

What's about the PCI ID being registered to both renoir and ACP3x module? is this meant to be?
Comment 3 Janpieter Sollie 2020-09-15 09:51:30 UTC
Created attachment 292509 [details]
patch to allow I2S_MODE 2

Investigating the amd/acp.h information, I saw there are actually 2 modes defined for ACP: 4 and 2 (4 is never used).
I tried to initialize the chip defining mode 2 the same way compared to mode 4 (patch included) and  this seems to work.  However, I still do not know of any application that actually uses this DSP
Comment 4 zilexa 2020-11-08 21:52:32 UTC
(In reply to Janpieter Sollie from comment #3)


I still have this issue on a Lenovo Ryzen 4800u laptop (Ideapad S540-13ARE): 

> [ 4.346318] snd_pci_acp3x 0000:03:00.5: Invalid ACP audio mode : 0

Full details, see my first and the last post here: 
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1897392

That last post is with Ubuntu 20.04.1 and kernel 5.8.18.

How can I solve this? (I am not really a developer but I know some scripting).
Comment 5 Takashi Iwai 2020-12-08 13:06:51 UTC
Unfortunately no AMD developers are on kernel bugzilla.  Care to report the issues about ACP to alsa-devel ML instead?
Comment 6 Janpieter Sollie 2020-12-08 13:26:43 UTC
(In reply to Takashi Iwai from comment #5)
> Unfortunately no AMD developers are on kernel bugzilla.  Care to report the
> issues about ACP to alsa-devel ML instead?

sure, no problem, but does it actually do anything? what's the purpose of this chip?
Comment 7 Takashi Iwai 2020-12-08 13:52:57 UTC
All such questions should be headed to AMD guys :)