From nobody Fri Oct 10 20:50:14 2025 Received: from mx0b-001ae601.pphosted.com (mx0a-001ae601.pphosted.com [67.231.149.25]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A5F1E298CA6; Thu, 12 Jun 2025 16:00:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=67.231.149.25 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749744056; cv=fail; b=gOktjuFnIJbtDbSFwIfymFTIEtx89cJZnxT4NYMwYbsk0/K4diUZB83fNYjaP9CKR/uLSn4GZr3w9FJs7nbIEhpr2LsOa8ELz2P13KH5FJuzOpQR8Ci1pBrQkKqbrY2FgDtcKTFJxlWJocdT6NViVyDuABs2QRIqGHVrPdjpcbs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749744056; c=relaxed/simple; bh=a/fPeaMfVirCd3f2o7EQ4pOPY90+jJ3Zs7+u9SYvEAY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=QFR0JN68PFk45/2Xmey8ha+VEMistdHrkikp48RrPFKmdeiLVPcBDqd0tPXn8H/KxPAeluw5MUM/WGq2i4NS0r6Dyar1y8y7W6NYRoCXfFM9AipULbZQvAkmcxibOvRFJEkOdnZ3v9TustCUlEJ9XOxLKzc9Rl31SrSeo7aWu8Y= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=opensource.cirrus.com; spf=pass smtp.mailfrom=opensource.cirrus.com; dkim=pass (2048-bit key) header.d=cirrus.com header.i=@cirrus.com header.b=OZ7kbcE9; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=ui8Jxn8h; arc=fail smtp.client-ip=67.231.149.25 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=opensource.cirrus.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=opensource.cirrus.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cirrus.com header.i=@cirrus.com header.b="OZ7kbcE9"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="ui8Jxn8h" Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55C5a2KS001079; Thu, 12 Jun 2025 11:00:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cirrus.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= PODMain02222019; bh=wHwE8tnNoDaYUFLfqUiUDIgiCdUKEU/XvOkZMAAqujo=; b= OZ7kbcE9qs2QfO1+6ReDDJ61ARBvbXm2UlbN2EwsNkxRXwOtMBw0VrBWOhB+fKQ9 rFpXLMybJqz+aFtzaq9qDohor8y0IDnAaTMbHzOCfPFycFP82OsX1A4VN+z++y0A E7jKmSgBBFkP0q/RXP8hxvSetBk4N2JT2sv+jUFZRITdyDPS0wzrHczWYIaH+2Mf WB7K+y24R5B81pOpQS3LzXLfZ+/hzvNP+G/LIp5bwVLFnGWuQ/63+m6+KIC1TwaC UwJTuEH0MOD8a4Wrg33bxz+qkLTFu7GAyfMvF7gc1oZ8deE572bQBLRbXBP8YgDe na2VceAy1MuFNFauPLGjwA== Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2127.outbound.protection.outlook.com [40.107.100.127]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 476ksdc4tm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 12 Jun 2025 11:00:46 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u+0fiTZcFvPbb7xnxw9zay9wRIeCqBzMativSHA5Og5cCGt9XRs8Nar0SS9qZB5ghKkAGc6hVzXN3FfhKagy8yrjWf8Aib5Dbd2KjQy96Qu6ZSslo+34TMQIO3ShWe6lxEundwnFgV6VuhSonEdypa1en1aIp4jR6EBe/gpCiU2s2JtqWmrfU+pZ3LnDtCVUk4DrlTjlBZn30Cw2eRF9nw2fZfsSCafRTsN68MAp/umB7SON7cB1KLXZc4anR9jMt6CCylsgD7a4mtPlBlEuJItY5dFlKT5zJE8n+HOOKvbeFYIR3SfRv+woXHmpCB3MGVdSzAC+Q4Ia96MC1FpYdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wHwE8tnNoDaYUFLfqUiUDIgiCdUKEU/XvOkZMAAqujo=; b=ewoS+AHgSYWvDU61La8/Wjm/DRAosmRpfhEZQZNwu1zM5I8nneak0qhRfvfqKkEpEeS/IEsX6qRpOZFt0tiElAxaHaHHshFdbDiOi4OJ5lUgrZkNmKan2mEeFIsvce//YjRlGaKNjCOn7O8o3aQOdqC2jteUAcYM3i95ebJBelgwE6iZ49wIfs8IBDb4fU38OxcgDc+HkPkZBnK3mMW+oLGWcANO2xuG1ydYNL1WsdrKc0rOpylHptXL4cRLcH/8Vm49/K8R9R+QnA6FoKfdb21ji3VdrMUATgjnYTEcuumQOuucIdNgbk1gh7D3reTx297MzyMZmPbHBQa4rlWKsg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 84.19.233.75) smtp.rcpttodomain=cirrus.com smtp.mailfrom=opensource.cirrus.com; dmarc=fail (p=reject sp=reject pct=100) action=oreject header.from=opensource.cirrus.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cirrus4.onmicrosoft.com; s=selector2-cirrus4-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wHwE8tnNoDaYUFLfqUiUDIgiCdUKEU/XvOkZMAAqujo=; b=ui8Jxn8hRcc+VCCMDJfnVBFAft4CpycpAhkEpSpZiLWuHjceWXnnnAruABqvWV8BzPRz9HW8EGhrFbmMgKrlcme2O+/I+l+5tydWlZXPrHzHRufc1VS32uRkTUXwcLh1GpUJ010zCWHzsCXeqXeP33i30pqvCOnv+EZ4nRDyarU= Received: from BN0PR04CA0113.namprd04.prod.outlook.com (2603:10b6:408:ec::28) by CY8PR19MB7083.namprd19.prod.outlook.com (2603:10b6:930:55::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.25; Thu, 12 Jun 2025 16:00:42 +0000 Received: from BN1PEPF00006002.namprd05.prod.outlook.com (2603:10b6:408:ec:cafe::da) by BN0PR04CA0113.outlook.office365.com (2603:10b6:408:ec::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8792.24 via Frontend Transport; Thu, 12 Jun 2025 16:00:42 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 84.19.233.75) smtp.mailfrom=opensource.cirrus.com; dkim=none (message not signed) header.d=none;dmarc=fail action=oreject header.from=opensource.cirrus.com; Received-SPF: Fail (protection.outlook.com: domain of opensource.cirrus.com does not designate 84.19.233.75 as permitted sender) receiver=protection.outlook.com; client-ip=84.19.233.75; helo=edirelay1.ad.cirrus.com; Received: from edirelay1.ad.cirrus.com (84.19.233.75) by BN1PEPF00006002.mail.protection.outlook.com (10.167.243.234) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 16:00:42 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id 44DEA406541; Thu, 12 Jun 2025 16:00:41 +0000 (UTC) Received: from lonswws02.ad.cirrus.com (lonswws02.ad.cirrus.com [198.90.188.42]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id 16814820258; Thu, 12 Jun 2025 16:00:41 +0000 (UTC) From: Stefan Binding To: Jaroslav Kysela , Takashi Iwai Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com, Stefan Binding Subject: [PATCH v1 1/2] ALSA: hda: cs35l41: Add support for center channel in CS35L41 HDA Date: Thu, 12 Jun 2025 17:00:22 +0100 Message-ID: <20250612160029.848104-2-sbinding@opensource.cirrus.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250612160029.848104-1-sbinding@opensource.cirrus.com> References: <20250612160029.848104-1-sbinding@opensource.cirrus.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00006002:EE_|CY8PR19MB7083:EE_ X-MS-Office365-Filtering-Correlation-Id: 11d885cf-21c8-4aaa-ad99-08dda9ca489a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|61400799027|82310400026|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Vasb/9HLhTXibTh29yihnc0dQ36Puv6HaMOTUU8M1fHQBVevVl9UOGL81p0I?= =?us-ascii?Q?v50YkMwCVa8AxJ6GycijHQpSB8I3WAi7Ax/xn4Y8O7SrANc8hmzrvld+MnAQ?= =?us-ascii?Q?Rx+cqcjwJxvBzqK5A30pZ3jAT0ekrGk1+A4WP3bja1A+mHM0t2xNNqP6KG+/?= =?us-ascii?Q?r3lDU/jFCLpvPJZ1RLTrfyq3FJTve79ROCh9HnpdWZ9HuoUiggezkKIJCaoc?= =?us-ascii?Q?GHEByW5vluxCsD02nw1S1PMf/LD8Fca5s5F5K5F7DrM435Lj05EOq7HWVJAk?= =?us-ascii?Q?cnEhlr1Js96GCPoIKpzUGpoWRFbc9OL+p7bl4sxewo5QCaftOm55TldBNxbi?= =?us-ascii?Q?rvQiakmShJOujWiELjWYhsMzkoUfaiF/3Q2u4jtNjJ5ol/RELuNzCCcm6eAo?= =?us-ascii?Q?xxuPTh8dYHgWumYMGUjNgOuF3foTkO02fXcvxxbZJOBU+84B+ImZodFgm6FB?= =?us-ascii?Q?Wl7HPRTdVqeeqnkS2eAZ6+sa8tXYbxIDtT8BuQOX10EyuRuQEwTwhGxShmX4?= =?us-ascii?Q?WJv1IPYWUtjxs+oPHuyt4rdGb2RL7L+GFU7ZXEcIbTQotnGgSFEpyPk3fUAc?= =?us-ascii?Q?PxLFAlK+z5O31lGocwnUf6X0GpbXGAxv0efNU7MRQqVNt+Qomqgs2ym4I4XD?= =?us-ascii?Q?5ftMQEsrI0ocF/sJLIrVFHoj7/JDsZ0H6PxzL1ZyWCAeD/4ubSVWYDYfp3Cq?= =?us-ascii?Q?pfqTmM81XF2WFBQCYD7fieqfVG5mRIp8eaGb2iP9QcfDQa9FA+H0fYDa+jWV?= =?us-ascii?Q?Anral6mSfSEki+0IFyM4GtEYtT+JZQni+IwzlQTtLZpdiRpwwGd80nmYalnK?= =?us-ascii?Q?5/+Kb1/9xLlE/UI5eVUNApzMRzadtnSx/XK8WqkwVKEL/ePxWpcPhWAyXbB0?= =?us-ascii?Q?Yk+Z2Co5XISwDZNbWHhlB35amkBLLPvkE5StiZsfjPb0fk/wmmdXTKU+2NLO?= =?us-ascii?Q?H7bN37zbO2Pv6OekBk7pQmc7PdANqfprYmbNnFIwN+AmHjVBYiwtyjVDLIpV?= =?us-ascii?Q?cvPAfoozbzNQjNiqDSeVQx52CZfnCTOzv+fgIScwmtBviilSJYJQFn97CQv+?= =?us-ascii?Q?maivqIrdQ8PB/X72aV72u1olA4as/Q4xjsDciDOKPfFMrkP7xMjhlKcssogU?= =?us-ascii?Q?BO+U7kK0FKpSQ+vESHA3utay9iPLuX+M3PcTe0Ckqdtxe/mECJ5S0CmUQSrV?= =?us-ascii?Q?TukmN9gKXZwRPCLQCYm98fPKjrbq3LSK5M5PbgLuSjwI24ta7EUPi+mYI9NL?= =?us-ascii?Q?G3tyHy2diKT4ZhHZ6SF9v2cjPbxLNnfhIx7juRYHhqj/8poDVtriOzlbFtCd?= =?us-ascii?Q?FK6ciPRgLOCDrbhBzCAk9uj0dhKB5K/xoeTBwY3oE1sEZQjRMwKnNQzehcJT?= =?us-ascii?Q?N1eRyHgzwWBZ0i7y61MtvgaQVRXZJmObMzIfiZApM8Xh4+nLSuCPwdTTaXvJ?= =?us-ascii?Q?UUVetB5ILdz3XmspzQqxMSlbiJzJx0jI2hob0eq/SH5REn5g3oZvLxD6ICfB?= =?us-ascii?Q?eifX0fhyu2emU699jEZMYn/C9l/6G1ZNcFck?= X-Forefront-Antispam-Report: CIP:84.19.233.75;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:edirelay1.ad.cirrus.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(61400799027)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1102; X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 16:00:42.0909 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 11d885cf-21c8-4aaa-ad99-08dda9ca489a X-MS-Exchange-CrossTenant-Id: bec09025-e5bc-40d1-a355-8e955c307de8 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bec09025-e5bc-40d1-a355-8e955c307de8;Ip=[84.19.233.75];Helo=[edirelay1.ad.cirrus.com] X-MS-Exchange-CrossTenant-AuthSource: BN1PEPF00006002.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR19MB7083 X-Proofpoint-GUID: YNvKrb5iuyPP4qZVgoI-TboP1ruvqlrG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjEyMDEyMyBTYWx0ZWRfX1/PBkq4iSiZH OnW6EGKRYcZJhZjFbSUJFK4CPbzlxjsWeUERZ9DBsQKJvcvWsBnme57KAsQMuLRBx+SfSeuEV/T 3V0kUzdjFjdCJnjQwfqz/YRqeX71Kx3sdOm9sJdKJGIe/5HaoFaKbRao4+aJgCA1Gbyc8vg4byf om9fLLBQGqIQYA1WxYzLKR0ivD/mYymaAAdqiWBs5nQ6Fy3ki4pGjGPEAVrAp1ptAmMG7M/IUHw B+OP0xrcmwkkC3r3GNkjdufUsEOp+CpbrOHYWmcUTxAR9gDUiEINLVCdG6bke/Xlr5bhfi4+HUH L9RxKfUhyJ9IUpINEr/e9NuGAXpipbl1KiirGW231wuDLdCadqB++bQiAdDUqcqMjUNH9NhBjJ0 kpjjFoymDtIwyPKPrIvhcoWF3C9GjIET0n9PjOGMWb4CYKgUn5qxJwqG+ebKMsKnAUACOj72 X-Authority-Analysis: v=2.4 cv=c5OrQQ9l c=1 sm=1 tr=0 ts=684af9ae cx=c_pps a=RHCyCMrrLXgv8JsqJhyQhg==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=6IFa9wvqVegA:10 a=s63m1ICgrNkA:10 a=RWc_ulEos4gA:10 a=w1d2syhTAAAA:8 a=2DsETvQBno8s4t019a8A:9 X-Proofpoint-ORIG-GUID: YNvKrb5iuyPP4qZVgoI-TboP1ruvqlrG X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" Currently only left and right channels are supported for each amp. Support is needed for a center channel, using both left and right channel audio. Signed-off-by: Stefan Binding --- include/sound/cs35l41.h | 12 +++++ sound/pci/hda/cs35l41_hda.c | 103 +++++++++++++++++++++++------------- sound/pci/hda/cs35l41_hda.h | 1 + 3 files changed, 78 insertions(+), 38 deletions(-) diff --git a/include/sound/cs35l41.h b/include/sound/cs35l41.h index 43c6a9ef8d9f..7542cabfa726 100644 --- a/include/sound/cs35l41.h +++ b/include/sound/cs35l41.h @@ -609,6 +609,18 @@ #define CS35L41_DSP_NG_DELAY_MASK 0x0F00 #define CS35L41_DSP_NG_DELAY_SHIFT 8 =20 +#define CS35L41_ASP_RX1_EN_MASK 0x00010000 +#define CS35L41_ASP_RX1_EN_SHIFT 16 +#define CS35L41_ASP_RX2_EN_MASK 0x00020000 +#define CS35L41_ASP_RX2_EN_SHIFT 17 +#define CS35L41_ASP_TX1_EN_MASK 0x00000001 +#define CS35L41_ASP_TX1_EN_SHIFT 0 +#define CS35L41_ASP_TX2_EN_MASK 0x00000002 +#define CS35L41_ASP_TX2_EN_SHIFT 1 +#define CS35L41_ASP_TX3_EN_MASK 0x00000004 +#define CS35L41_ASP_TX3_EN_SHIFT 2 +#define CS35L41_ASP_TX4_EN_MASK 0x00000008 +#define CS35L41_ASP_TX4_EN_SHIFT 3 #define CS35L41_ASP_FMT_MASK 0x0700 #define CS35L41_ASP_FMT_SHIFT 8 #define CS35L41_ASP_DOUT_HIZ_MASK 0x03 diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c index d5bc81099d0d..c2cf3813872a 100644 --- a/sound/pci/hda/cs35l41_hda.c +++ b/sound/pci/hda/cs35l41_hda.c @@ -93,47 +93,36 @@ module_param(firmware_autostart, bool, 0444); MODULE_PARM_DESC(firmware_autostart, "Allow automatic firmware download on= boot" "(0=3DDisable, 1=3DEnable) (default=3D1); "); =20 +static const char channel_name[3] =3D { 'L', 'R', 'C' }; + static const struct reg_sequence cs35l41_hda_config[] =3D { { CS35L41_PLL_CLK_CTRL, 0x00000430 }, // 3072000Hz, BCLK Input, PLL_REFC= LK_EN =3D 1 { CS35L41_DSP_CLK_CTRL, 0x00000003 }, // DSP CLK EN { CS35L41_GLOBAL_CLK_CTRL, 0x00000003 }, // GLOBAL_FS =3D 48 kHz - { CS35L41_SP_ENABLES, 0x00010000 }, // ASP_RX1_EN =3D 1 { CS35L41_SP_RATE_CTRL, 0x00000021 }, // ASP_BCLK_FREQ =3D 3.072 MHz { CS35L41_SP_FORMAT, 0x20200200 }, // 32 bits RX/TX slots, I2S, clk cons= umer - { CS35L41_SP_HIZ_CTRL, 0x00000002 }, // Hi-Z unused { CS35L41_SP_TX_WL, 0x00000018 }, // 24 cycles/slot { CS35L41_SP_RX_WL, 0x00000018 }, // 24 cycles/slot - { CS35L41_DAC_PCM1_SRC, 0x00000008 }, // DACPCM1_SRC =3D ASPRX1 { CS35L41_ASP_TX1_SRC, 0x00000018 }, // ASPTX1 SRC =3D VMON { CS35L41_ASP_TX2_SRC, 0x00000019 }, // ASPTX2 SRC =3D IMON - { CS35L41_ASP_TX3_SRC, 0x00000032 }, // ASPTX3 SRC =3D ERRVOL - { CS35L41_ASP_TX4_SRC, 0x00000033 }, // ASPTX4 SRC =3D CLASSH_TGT - { CS35L41_DSP1_RX1_SRC, 0x00000008 }, // DSP1RX1 SRC =3D ASPRX1 - { CS35L41_DSP1_RX2_SRC, 0x00000009 }, // DSP1RX2 SRC =3D ASPRX2 { CS35L41_DSP1_RX3_SRC, 0x00000018 }, // DSP1RX3 SRC =3D VMON { CS35L41_DSP1_RX4_SRC, 0x00000019 }, // DSP1RX4 SRC =3D IMON +}; + +static const struct reg_sequence cs35l41_hda_config_no_dsp[] =3D { + { CS35L41_SP_HIZ_CTRL, 0x00000002 }, // Hi-Z unused + { CS35L41_DAC_PCM1_SRC, 0x00000008 }, // DACPCM1_SRC =3D ASPRX1 + { CS35L41_ASP_TX3_SRC, 0x00000000 }, // ASPTX3 SRC =3D ZERO FILL + { CS35L41_ASP_TX4_SRC, 0x00000000 }, // ASPTX4 SRC =3D ZERO FILL { CS35L41_DSP1_RX5_SRC, 0x00000020 }, // DSP1RX5 SRC =3D ERRVOL + { CS35L41_DSP1_RX6_SRC, 0x00000021 }, // DSP1RX6 SRC =3D CLASSH_T= GT }; =20 static const struct reg_sequence cs35l41_hda_config_dsp[] =3D { - { CS35L41_PLL_CLK_CTRL, 0x00000430 }, // 3072000Hz, BCLK Input, PLL_REFC= LK_EN =3D 1 - { CS35L41_DSP_CLK_CTRL, 0x00000003 }, // DSP CLK EN - { CS35L41_GLOBAL_CLK_CTRL, 0x00000003 }, // GLOBAL_FS =3D 48 kHz - { CS35L41_SP_ENABLES, 0x00010001 }, // ASP_RX1_EN =3D 1, ASP_TX1_EN =3D 1 - { CS35L41_SP_RATE_CTRL, 0x00000021 }, // ASP_BCLK_FREQ =3D 3.072 MHz - { CS35L41_SP_FORMAT, 0x20200200 }, // 32 bits RX/TX slots, I2S, clk cons= umer { CS35L41_SP_HIZ_CTRL, 0x00000003 }, // Hi-Z unused/disabled - { CS35L41_SP_TX_WL, 0x00000018 }, // 24 cycles/slot - { CS35L41_SP_RX_WL, 0x00000018 }, // 24 cycles/slot { CS35L41_DAC_PCM1_SRC, 0x00000032 }, // DACPCM1_SRC =3D DSP1TX1 - { CS35L41_ASP_TX1_SRC, 0x00000018 }, // ASPTX1 SRC =3D VMON - { CS35L41_ASP_TX2_SRC, 0x00000019 }, // ASPTX2 SRC =3D IMON { CS35L41_ASP_TX3_SRC, 0x00000028 }, // ASPTX3 SRC =3D VPMON { CS35L41_ASP_TX4_SRC, 0x00000029 }, // ASPTX4 SRC =3D VBSTMON - { CS35L41_DSP1_RX1_SRC, 0x00000008 }, // DSP1RX1 SRC =3D ASPRX1 - { CS35L41_DSP1_RX2_SRC, 0x00000008 }, // DSP1RX2 SRC =3D ASPRX1 - { CS35L41_DSP1_RX3_SRC, 0x00000018 }, // DSP1RX3 SRC =3D VMON - { CS35L41_DSP1_RX4_SRC, 0x00000019 }, // DSP1RX4 SRC =3D IMON { CS35L41_DSP1_RX6_SRC, 0x00000029 }, // DSP1RX6 SRC =3D VBSTMON }; =20 @@ -657,6 +646,41 @@ static void cs35l41_irq_release(struct cs35l41_hda *cs= 35l41) cs35l41->irq_errors =3D 0; } =20 +static void cs35l41_update_mixer(struct cs35l41_hda *cs35l41) +{ + struct regmap *reg =3D cs35l41->regmap; + unsigned int asp_en =3D 0; + unsigned int dsp1rx2_src =3D 0; + + regmap_multi_reg_write(reg, cs35l41_hda_config, ARRAY_SIZE(cs35l41_hda_co= nfig)); + + if (cs35l41->cs_dsp.running) { + asp_en |=3D CS35L41_ASP_TX1_EN_MASK; // ASP_TX1_EN =3D 1 + regmap_multi_reg_write(reg, cs35l41_hda_config_dsp, + ARRAY_SIZE(cs35l41_hda_config_dsp)); + if (cs35l41->hw_cfg.bst_type =3D=3D CS35L41_INT_BOOST) + regmap_write(reg, CS35L41_DSP1_RX5_SRC, CS35L41_INPUT_SRC_VPMON); + else + regmap_write(reg, CS35L41_DSP1_RX5_SRC, CS35L41_INPUT_SRC_VBSTMON); + } else { + regmap_multi_reg_write(reg, cs35l41_hda_config_no_dsp, + ARRAY_SIZE(cs35l41_hda_config_no_dsp)); + } + + if (cs35l41->hw_cfg.spk_pos =3D=3D CS35L41_CENTER) { + asp_en |=3D CS35L41_ASP_RX2_EN_MASK; // ASP_RX2_EN =3D 1 + dsp1rx2_src =3D 0x00000009; // DSP1RX2 SRC =3D ASPRX2 + } else { + dsp1rx2_src =3D 0x00000008; // DSP1RX2 SRC =3D ASPRX1 + } + + asp_en |=3D CS35L41_ASP_RX1_EN_MASK; // ASP_RX1_EN =3D 1 + + regmap_write(reg, CS35L41_SP_ENABLES, asp_en); + regmap_write(reg, CS35L41_DSP1_RX1_SRC, 0x00000008); // DSP1RX1 SRC =3D A= SPRX1 + regmap_write(reg, CS35L41_DSP1_RX2_SRC, dsp1rx2_src); +} + static void cs35l41_hda_play_start(struct device *dev) { struct cs35l41_hda *cs35l41 =3D dev_get_drvdata(dev); @@ -671,19 +695,13 @@ static void cs35l41_hda_play_start(struct device *dev) =20 cs35l41->playback_started =3D true; =20 + cs35l41_update_mixer(cs35l41); + if (cs35l41->cs_dsp.running) { - regmap_multi_reg_write(reg, cs35l41_hda_config_dsp, - ARRAY_SIZE(cs35l41_hda_config_dsp)); - if (cs35l41->hw_cfg.bst_type =3D=3D CS35L41_INT_BOOST) - regmap_write(reg, CS35L41_DSP1_RX5_SRC, CS35L41_INPUT_SRC_VPMON); - else - regmap_write(reg, CS35L41_DSP1_RX5_SRC, CS35L41_INPUT_SRC_VBSTMON); regmap_update_bits(reg, CS35L41_PWR_CTRL2, CS35L41_VMON_EN_MASK | CS35L41_IMON_EN_MASK, 1 << CS35L41_VMON_EN_SHIFT | 1 << CS35L41_IMON_EN_SHIFT); cs35l41_set_cspl_mbox_cmd(cs35l41->dev, reg, CSPL_MBOX_CMD_RESUME); - } else { - regmap_multi_reg_write(reg, cs35l41_hda_config, ARRAY_SIZE(cs35l41_hda_c= onfig)); } regmap_update_bits(reg, CS35L41_PWR_CTRL2, CS35L41_AMP_EN_MASK, 1 << CS35= L41_AMP_EN_SHIFT); if (cs35l41->hw_cfg.bst_type =3D=3D CS35L41_EXT_BOOST) @@ -841,22 +859,31 @@ static void cs35l41_hda_post_playback_hook(struct dev= ice *dev, int action) } } =20 -static int cs35l41_hda_channel_map(struct device *dev, unsigned int tx_num= , unsigned int *tx_slot, - unsigned int rx_num, unsigned int *rx_slot) +static int cs35l41_hda_channel_map(struct cs35l41_hda *cs35l41) { - struct cs35l41_hda *cs35l41 =3D dev_get_drvdata(dev); - static const char * const channel_name[] =3D { "L", "R" }; + unsigned int tx_num =3D 0; + unsigned int *tx_slot =3D NULL; + unsigned int rx_num; + unsigned int *rx_slot; + unsigned int mono =3D 0; =20 if (!cs35l41->amp_name) { - if (*rx_slot >=3D ARRAY_SIZE(channel_name)) + if (cs35l41->hw_cfg.spk_pos >=3D ARRAY_SIZE(channel_name)) return -EINVAL; =20 - cs35l41->amp_name =3D devm_kasprintf(cs35l41->dev, GFP_KERNEL, "%s%d", - channel_name[*rx_slot], cs35l41->channel_index); + cs35l41->amp_name =3D devm_kasprintf(cs35l41->dev, GFP_KERNEL, "%c%d", + channel_name[cs35l41->hw_cfg.spk_pos], + cs35l41->channel_index); if (!cs35l41->amp_name) return -ENOMEM; } =20 + rx_num =3D 1; + if (cs35l41->hw_cfg.spk_pos =3D=3D CS35L41_CENTER) + rx_slot =3D &mono; + else + rx_slot =3D &cs35l41->hw_cfg.spk_pos; + return cs35l41_set_channels(cs35l41->dev, cs35l41->regmap, tx_num, tx_slo= t, rx_num, rx_slot); } @@ -1495,7 +1522,7 @@ static int cs35l41_hda_bind(struct device *dev, struc= t device *master, void *mas "CS35L41 Bound - SSID: %s, BST: %d, VSPK: %d, CH: %c, FW EN: %d, SPKID:= %d\n", cs35l41->acpi_subsystem_id, cs35l41->hw_cfg.bst_type, cs35l41->hw_cfg.gpio1.func =3D=3D CS35l41_VSPK_SWITCH, - cs35l41->hw_cfg.spk_pos ? 'R' : 'L', + channel_name[cs35l41->hw_cfg.spk_pos], cs35l41->cs_dsp.running, cs35l41->speaker_id); =20 return ret; @@ -1709,7 +1736,7 @@ static int cs35l41_hda_apply_properties(struct cs35l4= 1_hda *cs35l41) if (using_irq) cs35l41_configure_interrupt(cs35l41, irq_pol); =20 - return cs35l41_hda_channel_map(cs35l41->dev, 0, NULL, 1, &hw_cfg->spk_pos= ); + return cs35l41_hda_channel_map(cs35l41); } =20 int cs35l41_get_speaker_id(struct device *dev, int amp_index, int num_amps= , int fixed_gpio_id) diff --git a/sound/pci/hda/cs35l41_hda.h b/sound/pci/hda/cs35l41_hda.h index c730b3351589..7d003c598e93 100644 --- a/sound/pci/hda/cs35l41_hda.h +++ b/sound/pci/hda/cs35l41_hda.h @@ -42,6 +42,7 @@ struct cs35l41_amp_efi_data { enum cs35l41_hda_spk_pos { CS35L41_LEFT, CS35L41_RIGHT, + CS35L41_CENTER, }; =20 enum cs35l41_hda_gpio_function { --=20 2.43.0 From nobody Fri Oct 10 20:50:14 2025 Received: from mx0b-001ae601.pphosted.com (mx0b-001ae601.pphosted.com [67.231.152.168]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B6669298CB6; Thu, 12 Jun 2025 16:00:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=67.231.152.168 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749744057; cv=fail; b=GHOxwiNAuLxaoqsX3nOImAc4u2i17TScByy6LN2EsXYgyYk7eipwEyi0NaCViVqZruq739Kybl8O9pzVSaImrdIMJyF8OIAulbZvG3y+c70PkvPWkhXWqLGkZ/mWK5tIJf4nTnaoZCutvAOQwOGUOwd/c/ujW9vf/JBO1HszPVY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749744057; c=relaxed/simple; bh=Ce7b35pCLzxtGZ9DyTfyqlCuHJkavJJmHcKg0L+hmOA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=m1tX9PASpszGP9MuiNePupA8L5EedsPjVtfIVRh7OL8OlvKOlt6WgeqPIZ2Jw15R1VVcUblYHiv5CEmF4j5QMLZ/M2jTuuTjUz1FuMyzdNWJ4Lw4Gf0HL8WaQQboOThFcv/WF9OCBZDq8+K39p6hOxZLQlRFerkl0Im56yo5VWY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=opensource.cirrus.com; spf=pass smtp.mailfrom=opensource.cirrus.com; dkim=pass (2048-bit key) header.d=cirrus.com header.i=@cirrus.com header.b=eBZY+gpq; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=K4AWt8o8; arc=fail smtp.client-ip=67.231.152.168 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=opensource.cirrus.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=opensource.cirrus.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cirrus.com header.i=@cirrus.com header.b="eBZY+gpq"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="K4AWt8o8" Received: from pps.filterd (m0077474.ppops.net [127.0.0.1]) by mx0b-001ae601.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55C4Ehaf019348; Thu, 12 Jun 2025 11:00:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cirrus.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= PODMain02222019; bh=ri7577ZPI0UAQW3Gsxc6dmH0lN5+7xKlMhN6UiebQzg=; b= eBZY+gpqRIoQ4dn8n69v4ivzr3fss2l53e7cwknct/N+I+4C/7krkjIjxiYFkQFz dxYUzk8l9HWckDFLl+1w936gXPzpfEQFjmbIDoAe0DGUlTDdbeuU1IcyTa11uCXQ i9YtDIH4Wgt6AGcadYdfsljnQiqFtv0EEC1Lw1uk2j7voZNHFtoAJ4c258qKlsnF 3BJ0/RQaoNst2aI53089492c894AV8RRXZsG2GwtpazXaRf+YWGMZUiYS5ePeNVI TI4SdXU3UWEk0/Ol2tZR6/5Ld2nUsOTbgmqGgIydVHNqeHuUaUNiluds31/jvjW5 4miEDE63oLn3/HI1EQ/Tdw== Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2092.outbound.protection.outlook.com [40.107.244.92]) by mx0b-001ae601.pphosted.com (PPS) with ESMTPS id 4760mwwbth-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 12 Jun 2025 11:00:48 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=t10GA6StsgcXhe42COuiVZ953W5+UUdf4/hJho7K17Byf3WHG5nlFwpjJ+RXrSXIoFjAQk3U+q9fQ3yKj7kEEfsiD6ftU4c5TKsupT/059Cb9k2ojVoC1LtMzfklNtTnhwAzboi6Dzg5OFwHK8g2bqV64P2dx+LA0pMCkYPzX9nkWYyvGJfBTno9p+nLQeNRxtIV9ArkKgy8Lksp0cH766084PRytnQy6AlR/yfL+NJUi7MfVGYW/BeS0wkqfcokwRVlFNmB/Y/9TAvb/or0EOQejkDRxqeKBdXDuIweORGUPs1LLxB/p0OI1cw3AuTCMXuOm8ba8ObZJex9cD7T2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ri7577ZPI0UAQW3Gsxc6dmH0lN5+7xKlMhN6UiebQzg=; b=Wpn9gmUVVH5YZLrA+Uby+F1w/qgGfqDlh7U4UOlF04e+kazW4FQDzILSVRKn69tZLEWlpskLJoBS3iLBTmeUze9cJhBF2/eb640dRmjW92F9K7zOl89yyVEpcNDwlu3JFIzdB5TGL630JPSELZ8b0nFXZBw1AR7QB30jzwJJBwTozBrmrsOT8rOlywEv5ymrurCifrkSfgmSoWRijGKvd7iEppB0IF4/7jpzhuQcqaeMXGGheF03cS/Lw3ON2zZ8plbuMQ0zb5s33F5GNxZd6jwXsfSME/ujxQODRusIpzkcHMlupJKnM6a0+iUV8hfDZRWmF38s4s8iyLdj+KrVzw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=temperror (sender ip is 84.19.233.75) smtp.rcpttodomain=cirrus.com smtp.mailfrom=opensource.cirrus.com; dmarc=temperror action=none header.from=opensource.cirrus.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cirrus4.onmicrosoft.com; s=selector2-cirrus4-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ri7577ZPI0UAQW3Gsxc6dmH0lN5+7xKlMhN6UiebQzg=; b=K4AWt8o8Py5MgxZpxlZacpuPTFNgmeBzEJY75weFNMDdpTxGJaGXKAk2y+KZZh+j6DZLF16SqjjhxOtdg3x/1lUHr7WABEyijMQvFvxpBR542Ehmzc5ZetYCUGQylcbBw1k2Do235AnRzTpe1wPOgPa7Mh7EULo8XXl3o5tELiA= Received: from SA9PR13CA0149.namprd13.prod.outlook.com (2603:10b6:806:27::34) by PH7PR19MB6828.namprd19.prod.outlook.com (2603:10b6:510:1ba::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.18; Thu, 12 Jun 2025 16:00:44 +0000 Received: from SA2PEPF00003F65.namprd04.prod.outlook.com (2603:10b6:806:27:cafe::a7) by SA9PR13CA0149.outlook.office365.com (2603:10b6:806:27::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.23 via Frontend Transport; Thu, 12 Jun 2025 16:00:44 +0000 X-MS-Exchange-Authentication-Results: spf=temperror (sender IP is 84.19.233.75) smtp.mailfrom=opensource.cirrus.com; dkim=none (message not signed) header.d=none;dmarc=temperror action=none header.from=opensource.cirrus.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of opensource.cirrus.com: DNS Timeout) Received: from edirelay1.ad.cirrus.com (84.19.233.75) by SA2PEPF00003F65.mail.protection.outlook.com (10.167.248.40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.15 via Frontend Transport; Thu, 12 Jun 2025 16:00:43 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id 783DB40654B; Thu, 12 Jun 2025 16:00:41 +0000 (UTC) Received: from lonswws02.ad.cirrus.com (lonswws02.ad.cirrus.com [198.90.188.42]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id 49D5682024A; Thu, 12 Jun 2025 16:00:41 +0000 (UTC) From: Stefan Binding To: Jaroslav Kysela , Takashi Iwai Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com, Stefan Binding Subject: [PATCH v1 2/2] ALSA: hda/realtek: Add support for ASUS NUC using CS35L41 HDA Date: Thu, 12 Jun 2025 17:00:23 +0100 Message-ID: <20250612160029.848104-3-sbinding@opensource.cirrus.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250612160029.848104-1-sbinding@opensource.cirrus.com> References: <20250612160029.848104-1-sbinding@opensource.cirrus.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F65:EE_|PH7PR19MB6828:EE_ X-MS-Office365-Filtering-Correlation-Id: ddb0b905-ff54-4834-a851-08dda9ca494a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|61400799027|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?x72yBWrcs4+aP5o6Y39gcV1i9xCijlDa1PZ3ndICl0mqRCrwxx8RYo6DoAWh?= =?us-ascii?Q?hwHKn7aX5BmtjQdqCd8mDkHKXA2uX4fNWbzol90nzoOQTz/1eyrC6XfOeAXp?= =?us-ascii?Q?QVkZA7MV7100NLQJBXtZpNKrUC35qDn8KXg47+a7gIivww6JWdaVT+4xVv0O?= =?us-ascii?Q?XplAPrcjR/AQSDqnwDFdvxHOL0inCE1VrcrNQABIYZqhY/EEoP6TvXlqZkk6?= =?us-ascii?Q?YWycZzlHiZ2esypdGl74iWucbGQxC7wwRfv+MrnQoIMdOhbHCxFtHvifWykm?= =?us-ascii?Q?fRBiDrudty5Ehu7+9vadzRja4IxChXV41YgdGBb5TbKPsEdpDnJtyJYugoAl?= =?us-ascii?Q?nPD9Iw3UvhTXqMKHF86JRHoXLFUbs20swmLjaYdw3UvF2PRhruWzpubPH9/o?= =?us-ascii?Q?fHM4XAFWa03nUz6vekKWhLa+k1jMlmIexxRwaBsFrBg4725o4az1Kw2BV5Sr?= =?us-ascii?Q?j19omcQKTu8d8VDwhIB3rvOS6iZQ9ZkfN4NN04MH1xxd3hRub2T7zD6nGMQT?= =?us-ascii?Q?ZxWvuzjR4eT74S2Co/jof+edHmwP4yfCBVZFLGney7r93YWiXQNi6qPE4/J9?= =?us-ascii?Q?V+K9/v3hyKcfIZH24C5SsdzytBO9cezPRi5epnHm/ja1f5NtMLGAxHIBkf03?= =?us-ascii?Q?KIBER8TUCNBKGnI1ijtHDdUGxczAJL/vjKQoZPzhB3IkxXiOfhzZZh0D8IwQ?= =?us-ascii?Q?70aPAH1yPaPVSZtDGs6/dyb3WYruXF8S3FDvRt3JyL+Xww3PpYAgHQD3OlmA?= =?us-ascii?Q?n5pevYiqElspsJOGXt4RTW1MeXNaVAhf/+W9sfQLzVS0+EI+GJyLJIaMZrc0?= =?us-ascii?Q?KCzF7rD/pGg0EyzEYhXg3XqE5TO5NR7qJm+o0sQzP5f7VjPlRbmHHx7hWk7I?= =?us-ascii?Q?EfD4Nz1SjokysknQdIu9ftBXMbJMUR5hizSjf93rTH3hoRMjlj8E+UGUPsKw?= =?us-ascii?Q?naZLVYDbdE/xacklHoS+gOMKXyuav8o//FCQ1xkgdrvjYNf0PfODGUfLYKS0?= =?us-ascii?Q?UBcXf9F9xcUwNGa/usBKo1QAjNWd6YkpaJyXQhWAYqqS9G5cyXzbrwCqulbi?= =?us-ascii?Q?LvfYfg25GE+XQpVSbFDUc9KAGEh2UxJBMATxiEA3idCYZAOUY3p8cAaS2YG+?= =?us-ascii?Q?Ghkun96I3uqkyUWWmznhAyJ18jc6mLQ5QITuF/szgDWeePKxntA3z7nlSKwC?= =?us-ascii?Q?eyL4nrRRxHOQgZkHbiggfxcggAH/vWpi2LtflNFVodMbUFzdX1sEFardgXs4?= =?us-ascii?Q?+V1lZ+b0C+f2iIP7JM2iRdRntLUapylQGfDEhoYn82dca5QSeGJpkPHzdQ0J?= =?us-ascii?Q?zIZdD4K5rZNu5CtxZx/rfl6nYAYbyufqPNt4A6HPbiU/1b0tLzpzLjgz3e2q?= =?us-ascii?Q?vvTg5xNGvt0WE9IkYgjklQMoGn6I2wBpowoZALK7E0BekwtDKDZA0GO1HDjp?= =?us-ascii?Q?4JtHDDgdgTEo81lJyP3bSaz87jSXcnZzncQC5D9ckUV8uw6mKzueeHgFoFO9?= =?us-ascii?Q?uj/h23+aW/X29sptJHg+USwbMxjWfvGEpsaE?= X-Forefront-Antispam-Report: CIP:84.19.233.75;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:edirelay1.ad.cirrus.com;PTR:ErrorRetry;CAT:NONE;SFS:(13230040)(376014)(82310400026)(61400799027)(36860700013);DIR:OUT;SFP:1102; X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2025 16:00:43.1756 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ddb0b905-ff54-4834-a851-08dda9ca494a X-MS-Exchange-CrossTenant-Id: bec09025-e5bc-40d1-a355-8e955c307de8 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bec09025-e5bc-40d1-a355-8e955c307de8;Ip=[84.19.233.75];Helo=[edirelay1.ad.cirrus.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F65.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR19MB6828 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjEyMDEyMyBTYWx0ZWRfX+nfrL4wmKeuX uxzXXO9aLsYBoQ9MTx7623lJBXhlBUvnOYZ//DCdiJgzEAIVg2ny9dlInlWrLmI5F71rcq7xTOF aBYL4uwdFBXHlGKSUJQvEC7gpM9AckhBEMVxOy/Yk40SBNKTB71GYgkxgdVJhHKlT5vhNiEV/8h Ccf83de1/dmicBjT7WOduJewD+xsNz4XQx0aIYjS+GDHWBUWSdJXOaOxw1tPw9HkEkHfQZVObSO NJriwJpDlGSQ36K/d+L1E7lEcTzdV6oTrrpbCS+PSVy+oJ0sID2ODHQKJf8yvjAaFKjyIcuZHYj L9pIWe3mm6V1dTCcANz2yT3yjq43AN4yCcnPpJEwyucSUbBX77l3gimE7R2QLt0jvtQGyurigyh ezLMUAnw9j+Cv40wklkReADleWvq9w20bF1RVunttlKApYHxYByakv3ce6Dy5ATRzZzgHNfm X-Authority-Analysis: v=2.4 cv=coCbk04i c=1 sm=1 tr=0 ts=684af9b0 cx=c_pps a=5XXQeeI6rJCMP2FdH6ENNw==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=6IFa9wvqVegA:10 a=RWc_ulEos4gA:10 a=w1d2syhTAAAA:8 a=5P6FOJ1nGak7WISmVrYA:9 X-Proofpoint-ORIG-GUID: rh9uX5MKXsoCg7nCRmJZlwd2VzsP8NFm X-Proofpoint-GUID: rh9uX5MKXsoCg7nCRmJZlwd2VzsP8NFm X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" Add support for ASUS NUC14LNS. This NUC uses a single CS35L41 Amp in using Internal Boost with SPI. To support the Single Amp, a new quirk is required. Signed-off-by: Stefan Binding --- sound/pci/hda/patch_realtek.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index bca725bb8281..3d5db33437f2 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -7296,6 +7296,11 @@ static void cs35l41_fixup_spi_two(struct hda_codec *= codec, const struct hda_fixu comp_generic_fixup(codec, action, "spi", "CSC3551", "-%s:00-cs35l41-hda.%= d", 2); } =20 +static void cs35l41_fixup_spi_one(struct hda_codec *codec, const struct hd= a_fixup *fix, int action) +{ + comp_generic_fixup(codec, action, "spi", "CSC3551", "-%s:00-cs35l41-hda.%= d", 1); +} + static void cs35l41_fixup_spi_four(struct hda_codec *codec, const struct h= da_fixup *fix, int action) { comp_generic_fixup(codec, action, "spi", "CSC3551", "-%s:00-cs35l41-hda.%= d", 4); @@ -7986,6 +7991,7 @@ enum { ALC287_FIXUP_CS35L41_I2C_2, ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED, ALC287_FIXUP_CS35L41_I2C_4, + ALC245_FIXUP_CS35L41_SPI_1, ALC245_FIXUP_CS35L41_SPI_2, ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED, ALC245_FIXUP_CS35L41_SPI_4, @@ -10112,6 +10118,10 @@ static const struct hda_fixup alc269_fixups[] =3D { .type =3D HDA_FIXUP_FUNC, .v.func =3D cs35l41_fixup_spi_two, }, + [ALC245_FIXUP_CS35L41_SPI_1] =3D { + .type =3D HDA_FIXUP_FUNC, + .v.func =3D cs35l41_fixup_spi_one, + }, [ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED] =3D { .type =3D HDA_FIXUP_FUNC, .v.func =3D cs35l41_fixup_spi_two, @@ -11053,6 +11063,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = =3D { SND_PCI_QUIRK(0x1043, 0x8398, "ASUS P1005", ALC269_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x1043, 0x83ce, "ASUS P1005", ALC269_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x1043, 0x8516, "ASUS X101CH", ALC269_FIXUP_ASUS_X101), + SND_PCI_QUIRK(0x1043, 0x88f4, "ASUS NUC14LNS", ALC245_FIXUP_CS35L41_SPI_1= ), SND_PCI_QUIRK(0x104d, 0x9073, "Sony VAIO", ALC275_FIXUP_SONY_VAIO_GPIO2), SND_PCI_QUIRK(0x104d, 0x907b, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ), SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ), --=20 2.43.0