Created attachment 301476 [details] /proc/asound/card1/codec#0 CPU: AMD Ryzen 6800U Codec: Realtek ALC294
Created attachment 301517 [details] DSDT
$ amixer scontents Simple mixer control 'Master',0 Capabilities: pvolume pswitch pswitch-joined Playback channels: Front Left - Front Right Limits: Playback 0 - 65536 Mono: Front Left: Playback 9215 [14%] [on] Front Right: Playback 9215 [14%] [on] Simple mixer control 'Capture',0 Capabilities: cvolume cswitch cswitch-joined Capture channels: Front Left - Front Right Limits: Capture 0 - 65536 Front Left: Capture 26213 [40%] [on] Front Right: Capture 26213 [40%] [on] The device is found, but it is unable to record any sound.
If your design has a DMIC connected, the kernel needs to know about it. Either via an ACPI entryor via a kernel quirk. Have you tried to add your system to the quirk list in https://github.com/torvalds/linux/blob/master/sound/soc/amd/yc/acp6x-mach.c#L47 to see if that gets things working?
It is unsuccessful. I'm unsure if I'm doing it correctly. diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c index e0b24e1daef3..5eab3baf3573 100644 --- a/sound/soc/amd/yc/acp6x-mach.c +++ b/sound/soc/amd/yc/acp6x-mach.c @@ -171,6 +171,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "21J6"), } }, + { + .driver_data = &acp6x_card, + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "UM5302TA"), + } + }, {} }; --- Base Board Information Manufacturer: ASUSTeK COMPUTER INC. Product Name: UM5302TA
Edited: I can see "kernel: acp_yc_mach acp_yc_mach.0: Enabling ACP DMIC support via DMI" in dmesg.
> Edited: I can see "kernel: acp_yc_mach acp_yc_mach.0: Enabling ACP DMIC > support via DMI" in dmesg. OK then your quirk "worked", but there must be a different design here in this system.
My apologies. It is effective. I chose the incorrect device for capturing previously. (Despite the fact that the volume is quite low)
Ah glad it works. Can you submit it to upstream?
I can confirm that adding an entry to this quirks table for the Lenovo Yoga Slim 7 Pro X fixes the missing microphone. I applied this patch diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c index e0b24e1daef3..735acfb23bc4 100644 --- a/sound/soc/amd/yc/acp6x-mach.c +++ b/sound/soc/amd/yc/acp6x-mach.c @@ -171,6 +171,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "21J6"), } }, + { + .driver_data = &acp6x_card, + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "82"), + } + }, {} }; --- Where and how should I report this? Is there already a growing patch set somewhere for growing this quirks table? BTW the table contains many entries for vendor LENOVO with specific product name matchers like DMI_MATCH(DMI_PRODUCT_NAME, "21J6"). Wouldn't it be sufficient to compress all these matches into a single line DMI_MATCH(DMI_PRODUCT_NAME, "21"), i.e., only mentioning the first two letters, which seems to be the product line?
AMD devs are aware over here: https://bugzilla.kernel.org/show_bug.cgi?id=216299
Hello, I have the same problem on my HP OMEN 16 running 6800H. I tried to add those lines: { .driver_data = &acp6x_card, .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "HP"), DMI_MATCH(DMI_PRODUCT_NAME, "OMEN by HP Gaming Laptop 16-n0xxx"), } }, at the end of the quirks table but then can't start a pull request (it shows "An owner of this repository has limited the ability to open a pull request to users that are collaborators on this repository.") Can't someone help please?
Duc Anh Le, Kernel patches are submitted over plain text email, not pull requests. Here is the submission guide for patches. https://www.kernel.org/doc/html/next/process/submitting-patches.html BTW, look for other keys for your system. There might be a better one to match than DMI_PRODUCT_NAME. Maybe DMI_PRODUCT_FAMILY or DMI_BOARD_NAME.
Hi Mario Limonciello, thanks for your response. Follow the guide from your link, I applied this patch and used DMI_BOARD_NAME instead of DMI_PRODUCT_NAME: diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c index 36314753923b..baad3bce3b7c 100644 --- a/sound/soc/amd/yc/acp6x-mach.c +++ b/sound/soc/amd/yc/acp6x-mach.c @@ -255,6 +255,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "15NBC1011"), } }, + { + .driver_data = &acp6x_card, + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "HP"), + DMI_MATCH(DMI_BOARD_NAME, "8A43"), + } + }, {} }; Hope that the patch will be online soon.
> Hope that the patch will be online soon. Would you be able to submit it the ASLA mailing list following that guide? If you're not comfortable, I can do it for you.
> Would you be able to submit it the ASLA mailing list following that guide? > If you're not comfortable, I can do it for you. I have just received the feedback for the patch which I sent. I tried my best but look like I didn't send it in the canonical format. I appreciate very much if you can do it. Sorry I just have another question, do I need to update the kernel when the patch is online? I'm really a beginner into Linux.
It looks like it was just included in this commit: 22ce6843abec ("ASoC: amd: yp: Add OMEN by HP Gaming Laptop 16z-n000 to quirks") It should be part of kernel 6.3.
> It looks like it was just included in this commit: > 22ce6843abec ("ASoC: amd: yp: Add OMEN by HP Gaming Laptop 16z-n000 to > quirks") > > It should be part of kernel 6.3. They used DMI_PRODUCT_NAME "16z-n000" when mine is "16-n0xxx". Will it work for me? Now I understand why you want to use DMI_BOARD_NAME instead of DMI_PRODUCT_NAME.
It might not. I suggest you open a thread with the author of that commit and the mailing list to discuss what to do in this case.
Hi guys, is it still possible to add edits for my laptop? Model: Asus s16x 6800H gen. dmi output: Base Board Information Manufacturer: ASUSTeK COMPUTER INC. Product Name: M5602RA