Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp2801304rwl; Fri, 6 Jan 2023 11:00:15 -0800 (PST) X-Google-Smtp-Source: AMrXdXvqyYMmtqQL9TrHk/YW1pmKNhONW21p3tkESQwvDiRjyHA4yEqzjlZQemsUqSOx43xjQ2Ij X-Received: by 2002:a17:902:b70f:b0:192:bd3b:5720 with SMTP id d15-20020a170902b70f00b00192bd3b5720mr21922467pls.68.1673031615447; Fri, 06 Jan 2023 11:00:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673031615; cv=none; d=google.com; s=arc-20160816; b=KsSBfg6fKId79A/Klj+4sRypEaqCvOwx7Xmj7Xsxf9dfR8kuigoP7Z1V33aRQziPOd Zrj5eQqXXaKoAD51ldP+jFCSmxQnLDqiGsBuvOkhutXcX8yvhz4nDQVxXY+VftTgQ9uF R5D8VWCmrjntvsiHuJT+kqI/kfmau8w0thaYmSqHWR8Cwcn/Lx8RFube0+UX7lGoujV0 uhDvFP+d3BcwH4sA20cpvC1vOEEK3+v1Z/xijeRwaFs6EI9w+hetz8Fgnt/F56EpDWkk XpMaUi2xzl7fGpOzvoLcWqq54lUNqE0N06Ws2T6ofZcIpZq+vr3ZYGNIYxxmrt9baSL5 SdYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to :dkim-signature:from; bh=cmuSZI2wSW+SHZPdnbO0emuwaThGtTGOIMyX+UN5J0g=; b=Nk/CvugGspjtfnw1z7qUdWWq+uKF9q7bX0Bd4Yd6vMkNlR/nDjhMClWMILISHS2iP4 enhAD4oyuEo9KYgTWPfUDe9iv5cI3PUzXP0tACzDgE8MWkXs3IpoLldifrDENsqQbyKa yaYfgf7tVAvErFtbU5C2syYg9NfdOD+sVGHbZq24tCmUr6Pe3dshhuOd57g1t+UNVt93 k3NIC1Z7Jhlkfyo4Xc9AT1pmvavu3y8KWT5gOoQaZKxIs6f1RC6NF5IwPxhXVH7lBekW hpy1VCjvXYE47uvR1glLCxNtdFdcB/uIg/vMz2ieZBnRrNO6BGQaP6xS9XLAyeXJpLwh z8KA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mutex.one header.s=default header.b="Z+SIrCO/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i15-20020a17090332cf00b00189c10f6b4csi1923026plr.417.2023.01.06.11.00.08; Fri, 06 Jan 2023 11:00:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@mutex.one header.s=default header.b="Z+SIrCO/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233994AbjAFSsJ (ORCPT + 54 others); Fri, 6 Jan 2023 13:48:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38956 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233160AbjAFSr7 (ORCPT ); Fri, 6 Jan 2023 13:47:59 -0500 X-Greylist: delayed 516 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Fri, 06 Jan 2023 10:47:58 PST Received: from mail.mutex.one (mail.mutex.one [62.77.152.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 672ADE3D for ; Fri, 6 Jan 2023 10:47:58 -0800 (PST) Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.mutex.one (Postfix) with ESMTP id AEF6616C000A; Fri, 6 Jan 2023 20:47:56 +0200 (EET) X-Virus-Scanned: Debian amavisd-new at mail.mutex.one Received: from mail.mutex.one ([127.0.0.1]) by localhost (mail.mutex.one [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OFXBDppdFQVh; Fri, 6 Jan 2023 20:47:55 +0200 (EET) From: Marian Postevca DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mutex.one; s=default; t=1673030875; bh=tp1wwYL+dWnG3JQw8MZJx330UNMQf42TIrG39TK3gRY=; h=From:To:Cc:Subject:Date:From; b=Z+SIrCO/3K7QzEBb7e7mbglitdz5lX24ZKP69dZkhD7kSbZNVKh02LLdqwrh13HB+ 3nf+Pn7OKidjwyS+4HMHJH29WXwKvJcjIbbIKLDvgZBrUiyv8KO14Rip5xsUeB8wea kSO95Cws6tKYlwAuL6n2coxch1vvjS3faOdnNaGQ= To: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Cc: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Vijendar Mukunda , Mario Limonciello , V sujith kumar Reddy , syed sabakareem Subject: [RFC] Sound support for Huawei line of AMD laptops using ACP and ES8336 codec Date: Fri, 06 Jan 2023 20:47:54 +0200 Message-ID: <871qo7fqjp.fsf@mutex.one> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I have a Huawei Matebook 14 AMD 2021 laptop for which the sound isn't supported on Linux. On further investigation in Windows and ACPI tables I could determine that this particular SKU has an ES8336 codec connected to the CPU ACP module. The CPU of my laptop is an AMD Ryzen 5 5500U which seems to be codenamed Lucienne and is a derivation of the Renoir family. Acording to lspci the ACP is revision 1: 03:00.5 Multimedia controller [0480]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2/FireFlight/Renoir Audio Processor [1022:15e2] (rev 01) Subsystem: Device [1e83:3e4d] Kernel driver in use: snd_rn_pci_acp3x Kernel modules: snd_pci_acp3x, snd_rn_pci_acp3x, snd_pci_acp5x, snd_pci_acp6x, snd_acp_pci, snd_rpl_pci_acp6x, snd_sof_amd_renoir I have written a machine driver for this platform and managed to make the sound and internal microphone work. I am looking to integrate this support but there are some issues with the current implementation of ACP support. As far as I can tell there are 4 directions I could take to add support: 1. A standalone machine driver in sound/soc/amd that uses the platform drivers from sound/soc/amd/raven/ 2. An embedded driver in sound/soc/amd/acp/acp-legacy-mach.c 3. A standalone machine driver in sound/soc/amd that uses the platform drivers from sound/soc/amd/renoir 4. Use the SOF infrastructure Now as far as I can tell, all of these directions have issues: 1. The pci driver from sound/soc/amd/raven/pci-acp3x.c doesn't support Lucienne since it blocks rev 1 devices in : /* Raven device detection */ if (pci->revision != 0x00) return -ENODEV; This is the approach I took and just changed the check to add support for rev 1. The sound and internal microphone worked ok and I didn't encounter any issues with it. Of course I don't know the internals of ACP and don't know what are the differences between rev 0 and rev 1. 2. This approach could work but I would need to change the structure acp_card_drvdata and struct snd_soc_dapm_widget acp_widgets, to add proper support for jack handling (and maybe some other modifications). This driver seems to support rev 1 (in sound/soc/amd/acp/acp-pci.c): switch (pci->revision) { case 0x01: chip->name = "acp_asoc_renoir"; chip->acp_rev = ACP3X_DEV; break; Also from the module description it seems that these drivers are meant only for chromebook support. 3. This seems like it would the best approach in theory, but the problem is that the drivers inside only seem to add support for DMIC. 4. I tried to use SOF early when I started tinkering, but I always got a timeout during init phase when loading the renoir firmware. So the reason for this email is to get some idea, on how to best add support for these laptops.