From nobody Thu Apr 9 05:51:01 2026 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 9749A2BE02C; Tue, 10 Mar 2026 14:18:36 +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=1773152317; cv=fail; b=R9Voa2TGnOnWknW7SxlAvKKooEsL53Qv2dBiV1Mc99yNFTRTKEbOXttMX2YnIm846llXUWN8tkS95qHVFzRsXgqrtGptOjhMIb7KncYpQCO4PREgYHoKUjzdl+Tcf7ngYgk0rzY0XpB/1pKx3WLqTGzGe+Jdqaq/sP3B021oers= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773152317; c=relaxed/simple; bh=D/NRZCpCxXwslE6a3coDsrvvJd9EQgTy/AuWee48y64=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=fENlWEeN7hUlBn0NDJYRCgEYuGJyfLKLhunmf+DOsrJ/1PXhpUZUbhYXcDenFELj79lzlkNLzCFM4/Igy3ZnvQltOPq47846h0oGQirdYHscB6PZN9o+pKLE3v6z70o8KnEzEQ2i4zUJ+UicTU9M9lEBA46w84EM4dwIqIap6GU= 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=kVWDgHjq; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=SVHLieP0; 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="kVWDgHjq"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="SVHLieP0" Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 629Kvbt52288204; Tue, 10 Mar 2026 09:18:23 -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=TMfZNQj5XoBQfbGZFOl+QeCRn8aVNbzdblkvXnIRgZI=; b= kVWDgHjqtxyVjQBqySwZ1tbCmLaGCuAxR5Pad17+11TLijsbOTZdaCeodUGXSAKR q6bSLLh/2ocMm5+ocCvpHcx0L7DB7PQJHVenrynHtsL0G4M1JB7NzrY7/ElNWEtT FNKHJ/ONUgWfewNVk0eApnEtrZJprT1pPnILZsRjALHz8dN3aOftCSbMz1MkkPFp 0BZmp4zQRp02V4F/vFaPpnq9CgueVR6oyb8fLoCQ5ooee8hrFG1Y5oE3W1+pS9PD 2fqT3lshTs3CtdN4nGs9m4ly10u8FgooOASDgtO5dL5E3ZZ1iv/7oOAt5e3nxdx1 GBWww8hU5orC0MkOcS94ZQ== Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11023078.outbound.protection.outlook.com [40.93.201.78]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 4crja4bk23-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 09:18:23 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u+8aDedpZtsTFqpTtjs5J3gSaxHtBxHymz13D4Ri+OKDIN9/VWA7N1ZqqjplGBuLU1C56/K56vTdRNzjqN4gPuGTGKCVBEqAxMheThx+Av9tvYQEuVtnPWOXXFWesJzmVH2r5xK2hP05KZWjVQEfQ4bTd+pFWwPf/8l5ehG2xj+2FgYLvZtcRongA/rY22Okz4LUOCKDwt4hB5/o2qU0Mq3/lcaB1LHcmjJSwmyIRztk0aEz/yLF9BPTsX8curcyc/XU+XgCbDyXJO8PB0jQx7t0kFYqrr7u8wKRU/TCEIWHNCfv8DsyYlld6tpuyxkHELvG1ELafCiNWWLD9V0xnQ== 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=TMfZNQj5XoBQfbGZFOl+QeCRn8aVNbzdblkvXnIRgZI=; b=dUYCIVWJ/Fu1Jt59HgWEsiKzHm5ZSK4UWB6g+qzjTl6uEx4CQjBnIBDcdO9L3u5D6Ug/P12Nboth8Fbf73aPSv1KVDrIB/+wCrXGbTH4L0hZwr8xDW9Y1N2frhiu4/K/1GvtzEu4NdxQjz0On8ETjAf2pusO2P34Y6tVNNNm0PiiBl8Tzrh0i7Tf+TSl328B+nbWBlTrOT7Mzk6WS5TY1E0wemS20vCvyaig6bT3edSYT+wByMli6Mmw/oGhfgzx8LbQsqpSJ/kJZ6BRLkfMYYymSSjmiiBKiFlwDdDZWUEs5OMQpboiL+8GEclbhj0qUSRKEkrCn35BkMHWhM0fpA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (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=TMfZNQj5XoBQfbGZFOl+QeCRn8aVNbzdblkvXnIRgZI=; b=SVHLieP0ox1xDbYwBYQHfHzcRHzqnoAitNLyGyibYHgGm6vWQcnPJVWE2Yw2Vp3jruxdqmX+GeN4M00XSaZ78AY7zsm4GnstpXrnUczvvYEGo9AXV9KiQvO4SqHjIvSDWtw8mMT0prePXqf4yJqKDMi+C3Rn/sclEMUhMwBLBp8= Received: from BN0PR08CA0020.namprd08.prod.outlook.com (2603:10b6:408:142::8) by SJ4PPFF15D02525.namprd19.prod.outlook.com (2603:10b6:a0f:fc02::a60) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Tue, 10 Mar 2026 14:18:19 +0000 Received: from BN2PEPF000044A0.namprd02.prod.outlook.com (2603:10b6:408:142:cafe::3c) by BN0PR08CA0020.outlook.office365.com (2603:10b6:408:142::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.25 via Frontend Transport; Tue, 10 Mar 2026 14:18:13 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (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: SoftFail (protection.outlook.com: domain of transitioning opensource.cirrus.com discourages use of 84.19.233.75 as permitted sender) Received: from edirelay1.ad.cirrus.com (84.19.233.75) by BN2PEPF000044A0.mail.protection.outlook.com (10.167.243.151) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.18 via Frontend Transport; Tue, 10 Mar 2026 14:18:18 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id AB225406542; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) Received: from ediswws06.ad.cirrus.com (ediswws06.ad.cirrus.com [198.90.208.24]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id 794D9820257; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) From: Richard Fitzgerald To: broonie@kernel.org Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH 01/10] ASoC: wm_adsp: Remove unused argument to wm_adsp_release_firmware_files() Date: Tue, 10 Mar 2026 14:18:08 +0000 Message-ID: <20260310141817.1871794-2-rf@opensource.cirrus.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260310141817.1871794-1-rf@opensource.cirrus.com> References: <20260310141817.1871794-1-rf@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: BN2PEPF000044A0:EE_|SJ4PPFF15D02525:EE_ X-MS-Office365-Filtering-Correlation-Id: c9788e57-6473-41e5-e279-08de7eafe0b8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|82310400026|61400799027|376014|54012099003|18002099003|22082099003|56012099003|16102099003; X-Microsoft-Antispam-Message-Info: 1mVdSTYxTZ/fmFsRjCOeIiJ//pxOO5FjgiooEadi6tiFW+2y1Lwxm3vLrIz8d5UdNAyENWZ601xA6IU4+OK+WvMJj19rvez5xAcvc6h6WhTnh2oVphAIsBQmrcdQmqnaNuLRv6n6b3Cp+HAfgMbGMlkwp5lZ5d9zMQSiSvbHpFUhJZ3Cih1L5NpApEGP4A47aMrVYDNxGAvPhgwwnIXHeoFNbKq285mYA4JumtXR3J9/OpA4lnJZU1h2h/Cc+vAsrAY+e59z1rgA20LE+shxgAUvcaR6vbUbX0BsmgH8TWqRTDPL8NZfwn81fnalITDfjtDyM+rvqGYm7KnkMNHYrFBA/HxU8gieZjgP1/8m2rY4TH2v/EC6k4LOsdZv9ioUp7Q/Ir1FtWA0gzmnAxCZZwr0C16RBxMM//yczDifFWveeQnLxK/qxbF/QhcKXOqEtIoP/uw2NbDWATyTWIRmYwQojtrUgyxxEkhqHcJRiSgVgcYo4LxAie6sVrfaQw9M8gDGMbgHgyyOz/9el+1xTO70AfnspBvHszTDBToOSXaHLC6QHJFBXYgFInbxZ9ix6WU0sh5BTyQcWdQqh5y0AlEmdoMmk19a/JQVBgKyWyGoUFvFMeerm3O/sqUgBkuNOcmRax9fCdBdQXtDac3eALEGi3JAMSo0BRabVEaPgmh1nUZg8imjkuTj3I2lWO7uwpF38Ykz9jteNXsfJtv5/juDba3oua4CdEw/4tfs4/9jyINLGkWPtMi7TbFbnK8vA+4CPeoEiuwWkXOv1w+kjg== 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)(36860700016)(82310400026)(61400799027)(376014)(54012099003)(18002099003)(22082099003)(56012099003)(16102099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: c5C+omhhDyxwFWxIbeOanHg/zctFLlevqP38pKE8YBwJ1n+3FUrXDC2BJ5LqOxKL164/4zEfSctP9MZvms9KXMNavfAYpkdTgWW61x/i4IIkvy04Lw8khqottLRV3bG4csAKuzjKW2PQADq/oY9Nr/JyOwPmHL+H8mC8w8pOdEURWkE36wZh1li6VYeKt0Z9fL4Lnanc29ZFSRfqZA+gVaQuSUsj/J1LmF8eEoomEOOzOLfuQ8qBGg3BM40fuEYjL88xCtioLLrRQG1P2l+h1YO1H4aJ4LT57FNr6pTIUKJbH/fPoWgJfViPpQp2EaN1YDTMQALQSxiCwt8HBOhGYx4q/V7gbQdyUIWj3O1XrjP9WNG3CLuxcffD0MtxbqhMFU5qCv6Rc1tjhO7eesvoDBFKtaogXf5JGHVEmIfldZkcgs8ZhFPa7D3fXJvpFfSS X-Exchange-RoutingPolicyChecked: F0qdtJ3pAX9vXrvOQe8IFDYGyh7BWY8TE/pDAiG3LyZJFledhhjVff3zlMcbK+d0pkCgoQWqIG3ye3YrzTSj9GUZFNK2M3Bft9v9P28fuFRUphgAVNrNhXHCulMn6CwW+OAmMthMO7mLE+Hp7XaKwrYSDqUEyGeY9IN1vzcOXcQwy9geg2923DuIKoC8sc8YBzE3ULVJHA6+9e6tKMUnXi3Vjnxh134aEQypJkgLwNfBNvEM1LAgxAWlekE5ofg5U6htArj/JFASXIZqLtUb0Mn4zRdBzQNmpyy0+mPoMx/Flnchh2cgvwMOiSWIqnShOBgCngmvOPobAPtqU3GpmA== X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 14:18:18.5646 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c9788e57-6473-41e5-e279-08de7eafe0b8 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-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN2PEPF000044A0.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ4PPFF15D02525 X-Proofpoint-ORIG-GUID: 9qDv6hbI0qR0Uw9KxXLWoPgFdhMleuMJ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEyNCBTYWx0ZWRfXxdZV4BlUod8Y LzjnQXyW5eknDy7qjILlniGjPUuQnmaYbeCMWMPncFxYMG3J3GlsFlNc1d1jTHfwamNhCMorN7D SudPCl5Bg0//QEeuuPZ1dTBShUUYro0QIkJQWbAOn5C8IBf1vPbE/1gGaoL22rfeRcl+b6o2INP /aezr/nwoinVLIyb1AoqNw/VkBmX0ABY8Z29NNxyPPRHo25nkuxELmlvjondIlJFeN4OOyLCyVO utGgVzubOLD0OOaoqodan97HtMKUhmwSGKSxL1Zz1gXEo31a6znZEHBRd03VOI56/7qs59VepDT yO2t6ThItP5FTDKGh027ynUGKq4ai/geUde/gNNCn1YOC//f1KtP556eddbevgr31mbixKy46iE xlzjnc8kRuit/B9mexaABLaSBgFBjg5+YBR8Lz+BL6jzTIZIDCkoTXtGQ8sSz+cReIZN1HyOOs2 w3Np0ZL3F679AHFs/zQ== X-Proofpoint-GUID: 9qDv6hbI0qR0Uw9KxXLWoPgFdhMleuMJ X-Authority-Analysis: v=2.4 cv=WNVyn3sR c=1 sm=1 tr=0 ts=69b0282f cx=c_pps a=9iZSLGE8K+bgI2IRaGFjSQ==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=Yq5XynenixoA:10 a=s63m1ICgrNkA:10 a=RWc_ulEos4gA:10 a=VkNPw1HP01LnGYTKEx00:22 a=iX4cTi3TZMoOKdANLEfx:22 a=Dj2-6B8FqX4mGL0U3gbX:22 a=w1d2syhTAAAA:8 a=qKDmiOiLRtuvbdj9iSYA:9 X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" The dsp argument to wm_adsp_release_firmware_files() isn't used so remove it. Signed-off-by: Richard Fitzgerald --- sound/soc/codecs/wm_adsp.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index f0aa6e3a1cfa..4b0c53d4f524 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -704,8 +704,7 @@ int wm_adsp_read_ctl(struct wm_adsp *dsp, const char *n= ame, int type, } EXPORT_SYMBOL_GPL(wm_adsp_read_ctl); =20 -static void wm_adsp_release_firmware_files(struct wm_adsp *dsp, - const struct firmware *wmfw_firmware, +static void wm_adsp_release_firmware_files(const struct firmware *wmfw_fir= mware, char *wmfw_filename, const struct firmware *coeff_firmware, char *coeff_filename) @@ -908,8 +907,7 @@ int wm_adsp1_event(struct snd_soc_dapm_widget *w, coeff_firmware, coeff_filename, wm_adsp_fw_text[dsp->fw]); =20 - wm_adsp_release_firmware_files(dsp, - wmfw_firmware, wmfw_filename, + wm_adsp_release_firmware_files(wmfw_firmware, wmfw_filename, coeff_firmware, coeff_filename); break; case SND_SOC_DAPM_PRE_PMD: @@ -1011,8 +1009,7 @@ int wm_adsp_power_up(struct wm_adsp *dsp, bool load_f= irmware) wm_adsp_fw_text[dsp->fw]); =20 err: - wm_adsp_release_firmware_files(dsp, - wmfw_firmware, wmfw_filename, + wm_adsp_release_firmware_files(wmfw_firmware, wmfw_filename, coeff_firmware, coeff_filename); =20 return ret; --=20 2.47.3 From nobody Thu Apr 9 05:51:01 2026 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 423CB2D9496; Tue, 10 Mar 2026 14:18:38 +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=1773152319; cv=fail; b=V4EtFgTzIageAqB9lCTI/M09UhhyMbPab8zbq8un9HjPb7U4d4fVtVuvKpPhYGkLXdIKqgc75qYfJ6f7aduPeQ7kn8X3sCopd8twzYdqYw970nhr6fjnrOmruIBlCpgHgZyp6EFvZoUI5NkFNx9KTXJ7lVv/NwzV2SLPBmcYGH8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773152319; c=relaxed/simple; bh=st1l2udEJ87cpNRDbgg8clmEh+GHXgPbzkNlAKeRJhE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=WAyll2X3Gr+m8/FRB9XK0hlzGZCatMlJI/MVJfpRg3LVb5w9GSs5RR6T/bEccxr+VciHDK5GqEXnh/AMQTwa2gCJattDubsrlPksuaWTjzs1+Qeu6RWBEknhmVlHcxZYL+4n4Ba635ahteYoQ81TFww3uQu6UoWX1qU9buqrxLY= 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=p4AjbASd; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=GzKMZ8JT; 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="p4AjbASd"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="GzKMZ8JT" Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62A5IOPK3088252; Tue, 10 Mar 2026 09:18:25 -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=n1B4Mps19CVXTWT88nM8hlVyzXESeN/nVb+zFGEAwkU=; b= p4AjbASdhoJq4qymIHpoE8BKvhLG9N10xj9eFi4FMR01FUDwkNNenjFsKwFO5/M2 3OGXtyG4pwN3GcrSN9c03nnBJtn+2FpfcRTi21XGvVZdsnhgmD4L0heAEpZRFUog KzdimGIg6GYxIc6RqcM/8JEGEn+PiY2uCc+YBk4bS349gTstHiLq64Uvhamb3ASy XUNYQ7wH7KVmcF4qLRqmnxHaHXCzlFbWhe1p78A681lr6s0TCNK6oEYaQ2+Dl6jz ENozcTsXvawN1HyQ8TUNCFq/4pAhAntRnKzq9jOFLn2+GuV6KAy41UMJPZ7Oth3Y RSqYtTIM4Fhs4e+gNAiXpg== Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11020117.outbound.protection.outlook.com [52.101.56.117]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 4crja4bk29-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 09:18:25 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pQ3mg3BSQK1ewHBCbI8X/8rpRax+m/5V9/4k/IIlDqDNPSqLWQI2Xr831fmpsGCggi6GcCIJTnOvPqFUM/Vl9iQg6WZorBD8Pj9cO59edptcsvDdH2pHEfHsv9U0WART21uV7BazVti3Ch5jsFL/WiNJh6l13e41R8AZy4kMOjoRFvnFvsJulkH83V+i4xE3mhixYg7e2NLiiqX1liKD+Koe5P2jNdXNsOD35bMwqS+E4f0AuhacHBW84bcE0kR5wxkRXQpXhwWZjKItjHHtlVT3QHzMf8nWTmGX+E8CWdYMx3OFY1lF/X4lB2knnbc7Vzik1Ol/DeRyTZNNX4AkNQ== 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=n1B4Mps19CVXTWT88nM8hlVyzXESeN/nVb+zFGEAwkU=; b=kkOfIdSESlT3Lb4d3q8ju1ZeS4qpsgIql/Xqut37twQkZp+YaObycuKyA8uz+D5w59zQxRjynjPmFXoW+xpdzcNw1o8pm8j0cgUTxUkqnEhD6VSOk9jomaIfGVpQNuyFabj3dTx/kGGLNGvIxCz0UCzxixfphITVuPAevjbzOtyNCdRQiFxkcPTUZWno/DAJ7DRZSe432cWiP6Ww+ANM3KYIy40/t3Y9VwPd47w2I6ZwTyJbeb0YE1QxPS+pbGPUp+tDuRB58d16YD5iHhl9ZUu7Ing32Ga3cSsuB09qV31pVaN9LKtSAblaEHa5Y4DIISvXq3lShOQ4Rqlnv+ScdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (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=n1B4Mps19CVXTWT88nM8hlVyzXESeN/nVb+zFGEAwkU=; b=GzKMZ8JTxa9oO+NlQGgRMfbUBzqvYDOPS7V3xrAuAZR57XV0t6V1nVqTMF0DqhI+2VkEt7f0yuOKroahbeMB0AMFaWI8dwL5sDaIHfjOIRfLIRHePxx6mc1oks+S/SIJct+/qHtGiInKPUuZBR5lUSiGf/R9bqy0YMNEA8r0M3Q= Received: from BN0PR10CA0004.namprd10.prod.outlook.com (2603:10b6:408:143::18) by DS4PPFF2D687DD6.namprd19.prod.outlook.com (2603:10b6:f:fc00::a60) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Tue, 10 Mar 2026 14:18:19 +0000 Received: from BN2PEPF000044A4.namprd02.prod.outlook.com (2603:10b6:408:143:cafe::c4) by BN0PR10CA0004.outlook.office365.com (2603:10b6:408:143::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.25 via Frontend Transport; Tue, 10 Mar 2026 14:18:13 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (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: SoftFail (protection.outlook.com: domain of transitioning opensource.cirrus.com discourages use of 84.19.233.75 as permitted sender) Received: from edirelay1.ad.cirrus.com (84.19.233.75) by BN2PEPF000044A4.mail.protection.outlook.com (10.167.243.155) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.18 via Frontend Transport; Tue, 10 Mar 2026 14:18:18 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id B119540654E; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) Received: from ediswws06.ad.cirrus.com (ediswws06.ad.cirrus.com [198.90.208.24]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id 857B8820258; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) From: Richard Fitzgerald To: broonie@kernel.org Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH 02/10] ASoC: wm_adsp: Add KUnit redirection stubs for firmware file search Date: Tue, 10 Mar 2026 14:18:09 +0000 Message-ID: <20260310141817.1871794-3-rf@opensource.cirrus.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260310141817.1871794-1-rf@opensource.cirrus.com> References: <20260310141817.1871794-1-rf@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: BN2PEPF000044A4:EE_|DS4PPFF2D687DD6:EE_ X-MS-Office365-Filtering-Correlation-Id: edd023c7-3c47-44b8-c12b-08de7eafe0b4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|61400799027|82310400026|376014|36860700016|18002099003|22082099003|56012099003|54012099003|16102099003; X-Microsoft-Antispam-Message-Info: xtSYYYvSkiaWl85SctHJ50ixRR8PEExkl4mydNO6RmzPXFugLsfphDqwmSXlRw9KvQA+7Tbpdr9IUdT7jXseeuM9L3fBk23DfP3LUV5ajqlW58rdDaIxVRHcmiWtMp4C4slWzcznp1vkCe4k991sP6BKp2k7vs3Nj2XPREFwifct295ei3aLVrnaOGmIy/mY9JndedUI7jWN1Z6Vf/HEhRdwZaoTaS3gDkcpPA0tmjIv+TagjiCQQGHIQrdM3ZgaxMfhoLzj0GMPjztmQhGjwV4c9XfKi0PkHiP7fSsD+fnT0o64ROjatqoOh4TMmIOEAMQZaegVWlYCWyeOBGZ6Hpp5A2KlX+vxhnIE0aWTWVLvMZTc5CEWP84yOKq6B74BUVu2AZIZayJHcUIe+aRYycWsJgUDCLskN/XPOerRb5PaxFmb5Hl0hpjahAZsbdzeF7z5NJxFn6xtFDajdNDmPP2F5XwS1TE2I0Qtj5J13/OQGL0sPTv7zsWao9U64UTanyc4ZnqX8TLDj9g0ZPO4aa8MuS2VOr418mO0wPSVX58k8hcmf6sxNkDk7fhop5Jxs7gBZo6iCH6/8h9HGRpXVepedkRQdo7cwU4AiGeVsKegyzB+mfo8tO6pw2S+kKZua+KN5rKhBkVgbihyJ9SO/43qLmrz1m79+IiZptvq5MOEfu+29mh23bq10gw2phzGXw/8SQ1BCamOEuWw4vtoHpvP5TIOH6ATSeH3AO8+uXlfZPNc8G5ol1llnsty0wHZzVLhLGYQD5o2Ud6a/XfR8Q== 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)(36860700016)(18002099003)(22082099003)(56012099003)(54012099003)(16102099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 97f6RkMeTg4/7qKl12HjdvppiUpWfxdITCiM1fz+8h+nLGCIWC9j5WUS0Xs6ur6SqByluHh9+/fF0aEnMT6st5XsmohPD2Z7NdtlxEC9pF/szAJqKo27gppLp7DCqkR5i+1mcv6CFpw8/gDnQZRcZQhasPitTSGVh92aGDwePSf7rZPJgsb3Vradh1IfVG8gzY/PVe6A2LxnQFl8+Ecrit1rFrr4htTAUujcrFOi1C+cZPjbkteFqnggnkjcCrEaSDjiEy+LDKJDOYBXKi02luscwezd6CtYU0j5u2iaHg3vTyrLTQRI9tkjv3nWgroQk3k1WFhRpN+1PPLHUNX5CX614IjkLDsD8rpt1AZ4iygbABtlDhkRuzN/pRfvIPhxyhDBGuPnd/ZsEhRHD9VU71cqxr0rC39C0G3zlOxHlC4Jzuf5P7vK1N0W9Ue1Z25w X-Exchange-RoutingPolicyChecked: Oq410Ru52fSkfgltQdmHIo6u1rGkPH6S4t/AYMP97S9mGeigqsvXSDlIRyk3+Fmkd6cNPGgOnEwSP43Wy2oHn9769lbpCE/e6N7sw11bdJyyGW9nbjtvIGtQ9cFw3rqi3a9MCjJc4Udn7Rv//PJ7ppId4jaOLhxxqIOfBjh+hGTWENU9Zj2I7XGKEUCQCyIrmTkFnqYEXgtFq+XJ4yOuB+6nQ7CQkOiJCyN07p2vd6qMf2JaPfK6U2anv1lgU0/HAHY4ofeAmimQubFkIOSAKS6vvUMyOtY/EYo+9Mqb1MPdNpasfMEWPuibQqyJvKwJggVlbYhl4E7gWByDiWo5Xw== X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 14:18:18.5373 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: edd023c7-3c47-44b8-c12b-08de7eafe0b4 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-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-BN2PEPF000044A4.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PPFF2D687DD6 X-Proofpoint-ORIG-GUID: EXluPBBfd5Cl4QlWaIWCVJngPMOLl2xu X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEyNCBTYWx0ZWRfX6J1iBeoP7ZD4 Z7OrrVgfBqcH578/y/4Xly8H1FAguyZeSmw4bAEECWXoCU6HScOxlgbX3SeWNEnGxvaXr5wZopK uAlataDz/SdmGtNJD1zZJIWjoV3DuRH1xH8BhX8Ml8PyzGb8TJ7iEpYdgFhG5s0Bqfln3zAAiIL XwSX5pTtD7ao048GciHRUuXYGFc+c3dYvUgL8T8F+E03UOCHdAsnxsV+fOHiQPZEcz8kwDl/QRc 47MTrThrUEw/mX3+9HfrmZ1kjSb3NsjLo46zfhNYso0+UvQ8St9B6fbt+PD0+kF56OQ5uAcH5Ii bOhxpXdk7YOYG0b2iV6eAaa8iPRObzvyZERzTM3DIudiw91iFF3EVpoiOA7YA2nr2bmx6QD4TLp POJKwezOly3KkJguW4diZJDeY4m0tiLwrcSbfIAL9VD8HcIZyiS7/njmkdB1ew+nFHsnzmelZkC Mz2xgeU0qI6w7VQygkw== X-Proofpoint-GUID: EXluPBBfd5Cl4QlWaIWCVJngPMOLl2xu X-Authority-Analysis: v=2.4 cv=WNVyn3sR c=1 sm=1 tr=0 ts=69b02831 cx=c_pps a=v6Z6meDQFn3ji2zknzBGMg==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=Yq5XynenixoA:10 a=s63m1ICgrNkA:10 a=RWc_ulEos4gA:10 a=VkNPw1HP01LnGYTKEx00:22 a=iX4cTi3TZMoOKdANLEfx:22 a=Dj2-6B8FqX4mGL0U3gbX:22 a=w1d2syhTAAAA:8 a=wggVRkVUAAAA:8 a=8nC0gXimzEi_ISW0fRoA:9 a=MZpHe7prQc2n3JaO1KVd:22 X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" Make some of the firmware file search functions redirectable for KUnit testing. - The call to firmware_request_nowarn() is factored out into a wrapper function so that it can be redirected. - wm_adsp_request_firmware_files() and wm_adsp_release_firmware_files() are made visible and exported if KUNIT is enabled. Signed-off-by: Richard Fitzgerald --- sound/soc/codecs/wm_adsp.c | 38 ++++++++++++++++++++++++++++---------- sound/soc/codecs/wm_adsp.h | 15 +++++++++++++++ 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index 4b0c53d4f524..68e00970b8a2 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -7,6 +7,8 @@ * Author: Mark Brown */ =20 +#include +#include #include #include #include @@ -704,17 +706,32 @@ int wm_adsp_read_ctl(struct wm_adsp *dsp, const char = *name, int type, } EXPORT_SYMBOL_GPL(wm_adsp_read_ctl); =20 -static void wm_adsp_release_firmware_files(const struct firmware *wmfw_fir= mware, - char *wmfw_filename, - const struct firmware *coeff_firmware, - char *coeff_filename) +VISIBLE_IF_KUNIT void wm_adsp_release_firmware_files(const struct firmware= *wmfw_firmware, + char *wmfw_filename, + const struct firmware *coeff_firmware, + char *coeff_filename) { + KUNIT_STATIC_STUB_REDIRECT(wm_adsp_release_firmware_files, + wmfw_firmware, wmfw_filename, + coeff_firmware, coeff_filename); + release_firmware(wmfw_firmware); kfree(wmfw_filename); =20 release_firmware(coeff_firmware); kfree(coeff_filename); } +EXPORT_SYMBOL_IF_KUNIT(wm_adsp_release_firmware_files); + +VISIBLE_IF_KUNIT int wm_adsp_firmware_request(const struct firmware **firm= ware, + const char *filename, + struct device *dev) +{ + KUNIT_STATIC_STUB_REDIRECT(wm_adsp_firmware_request, firmware, filename, = dev); + + return firmware_request_nowarn(firmware, filename, dev); +} +EXPORT_SYMBOL_IF_KUNIT(wm_adsp_firmware_request); =20 static int wm_adsp_request_firmware_file(struct wm_adsp *dsp, const struct firmware **firmware, char **filename, @@ -762,7 +779,7 @@ static int wm_adsp_request_firmware_file(struct wm_adsp= *dsp, s++; } =20 - ret =3D firmware_request_nowarn(firmware, *filename, cs_dsp->dev); + ret =3D wm_adsp_firmware_request(firmware, *filename, cs_dsp->dev); if (ret !=3D 0) { adsp_dbg(dsp, "Failed to request '%s'\n", *filename); kfree(*filename); @@ -775,11 +792,11 @@ static int wm_adsp_request_firmware_file(struct wm_ad= sp *dsp, } =20 static const char * const cirrus_dir =3D "cirrus/"; -static int wm_adsp_request_firmware_files(struct wm_adsp *dsp, - const struct firmware **wmfw_firmware, - char **wmfw_filename, - const struct firmware **coeff_firmware, - char **coeff_filename) +VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(struct wm_adsp *dsp, + const struct firmware **wmfw_firmware, + char **wmfw_filename, + const struct firmware **coeff_firmware, + char **coeff_filename) { const char *system_name =3D dsp->system_name; const char *suffix =3D dsp->component->name_prefix; @@ -856,6 +873,7 @@ static int wm_adsp_request_firmware_files(struct wm_ads= p *dsp, =20 return -ENOENT; } +EXPORT_SYMBOL_IF_KUNIT(wm_adsp_request_firmware_files); =20 static int wm_adsp_common_init(struct wm_adsp *dsp) { diff --git a/sound/soc/codecs/wm_adsp.h b/sound/soc/codecs/wm_adsp.h index a9118be793d7..599be409b669 100644 --- a/sound/soc/codecs/wm_adsp.h +++ b/sound/soc/codecs/wm_adsp.h @@ -143,4 +143,19 @@ int wm_adsp_write_ctl(struct wm_adsp *dsp, const char = *name, int type, int wm_adsp_read_ctl(struct wm_adsp *dsp, const char *name, int type, unsigned int alg, void *buf, size_t len); =20 +#if IS_ENABLED(CONFIG_KUNIT) +void wm_adsp_release_firmware_files(const struct firmware *wmfw_firmware, + char *wmfw_filename, + const struct firmware *coeff_firmware, + char *coeff_filename); +int wm_adsp_firmware_request(const struct firmware **firmware, + const char *filename, + struct device *dev); +int wm_adsp_request_firmware_files(struct wm_adsp *dsp, + const struct firmware **wmfw_firmware, + char **wmfw_filename, + const struct firmware **coeff_firmware, + char **coeff_filename); +#endif + #endif --=20 2.47.3 From nobody Thu Apr 9 05:51:01 2026 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 54E0A27E074; Tue, 10 Mar 2026 14:18:27 +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=1773152308; cv=fail; b=tWqkf/XDBeffxnv9iVXzBkX7ab8R8y/cfCdZuP//fJ8fbWTmaUxWivbmamnUN/pRJ2626Qx8puTyOSAhloTyjsvdF8Wo4OfmmCejG0Gn6xrIYvO3z89Pes0ulmdW03apwUZ5Fx1iNH6YgXykwdDsq7gLFz5BKkBXpHljp/FzdKM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773152308; c=relaxed/simple; bh=5kwtNjG0v21DCLfbpFZ6vGRwvSaRkCQDJxVfjSldZHk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Sz86TH7zSbC74BlOrEUnzz8Mxd8UpToyxJaMNFIfUUzLVFBQ20IfL6/mTsNeb84XJ6Y7BKkcvlyAIV2RfVli5x+Fbqjo82WdNxiN5lm0l8BY8XnACCUw2AzER7mGIu6oEVWqrIOHYao0yvyM1qmIUEJ5nDGnZhR6qPa12Wih6J0= 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=K9Uh9Q0J; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=UwIlmNjs; 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="K9Uh9Q0J"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="UwIlmNjs" Received: from pps.filterd (m0077474.ppops.net [127.0.0.1]) by mx0b-001ae601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 629M0MYx3893326; Tue, 10 Mar 2026 09:18:23 -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=kOtXB6b4j+WQa50q525YtgTRtCoRlhwBX0Jn4yeVFBk=; b= K9Uh9Q0JnMaV1OINo/GcoAnW1tILyKaCvRVUC2FhhJOwM3C4CFBPRHR+qFKXDmdg 9E7dzCg47Ijb+f44ZZXhfXicwL/4RX2fzp56/QKUorNq+uKmaCvVlUYY81nReNFY JpXCgVTePnRE/nO97aE3B05onU4KQOnhLD0W0fY5NH8enW8NtklBhZbPmlR2JMd4 t5JQq+MyVLp6NaQ9hUzRFXov6jg9yYxg+EdqHV1RHx9T3QbHHKmA4QCftljqk+x5 NnTEopBR1VfhtPSR7EfdfhJZVukH5e6VCubi/TQAqFKI4EW6yrWg4K2Y7qwOvLrs o0aQqFQpydzWkqvWivIm5Q== Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11022118.outbound.protection.outlook.com [40.107.209.118]) by mx0b-001ae601.pphosted.com (PPS) with ESMTPS id 4crhapbkfj-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 09:18:23 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JO19ppAYRzMAsQUEOfkXxCF8TD0i8aggtfkCS5UzZhE7PNN3E8N+vJUZ0rx7xj4iK/iyjbqsAnd4Hzr+r7NneXVW8L03zafFFbE7LEsKqLC+F5QLgydcwUhWQhy0LGlh5X5TpWz9ctd3DVAzJF8tla0hCjAN+xFHwi+u/ZFr4qfAtZ7Ax7QLeEgBTDguarWE5fYNsnJR4I8wIyp48l3vdYQ9TbXrBdyzLEccGcDeSEOZXXI/SrfyDceAIsyAL0dsZqcCj4WVBlJLML9lzElOff3Zfb+taNCvMYWFE+SBGClbvoD2/nEhfGic4EYv19ETiogJ3kt7Yk22sLOxDBezOA== 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=kOtXB6b4j+WQa50q525YtgTRtCoRlhwBX0Jn4yeVFBk=; b=HFhDjK2MMRcBIYZ6op1HfIl8IDAZbi4Gbn+zbjooUgTiDcqbnxDn8uIinlc55EuoDSR/ivPS7qMPPC/LT0eWjQeHwYTmYmA86ZhtV3UsuPGO88Z4awQjSmkEzho0LBvEj0eWT6fFxIeA/Xi16u+hDpsVLS4WUfugTUP3Tp+m1jPU7/Qp/crTYY/5nlx5ZGTl1T3IJ0y/6eA1GYDRyF9ojHvuDcTTWflBKsJRd6FVFBIw6xJQLDTDCSAxOPR5K0q+sBIlEJpS2uxi6xn9fxEY+mdqHnP3LTVCcyUgb3A5bxdZ9EfLqlqCfJfJnE5ZkA9ald02VWh4Aq+WGWMAqb0y3g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (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=kOtXB6b4j+WQa50q525YtgTRtCoRlhwBX0Jn4yeVFBk=; b=UwIlmNjsI05ugopZz9eOuCso7WUI8Nu3YfOUZOOz/SNapMEQk+GKVylZxVZelhMuJi37KzHYAZjEIGnqkfbTRyHSHK3ApUvWJy9UTJFDCMBLEVKAVAgZd3F+gSgCjRKGnjf6pdNg16fPuIqhyVS7xwRdmYZrQoc11KJ6XQRlLuE= Received: from PH7P221CA0071.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:328::24) by PH0PR19MB5444.namprd19.prod.outlook.com (2603:10b6:510:fe::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Tue, 10 Mar 2026 14:18:20 +0000 Received: from SJ1PEPF000023D4.namprd21.prod.outlook.com (2603:10b6:510:328:cafe::ca) by PH7P221CA0071.outlook.office365.com (2603:10b6:510:328::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.25 via Frontend Transport; Tue, 10 Mar 2026 14:18:20 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (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: SoftFail (protection.outlook.com: domain of transitioning opensource.cirrus.com discourages use of 84.19.233.75 as permitted sender) Received: from edirelay1.ad.cirrus.com (84.19.233.75) by SJ1PEPF000023D4.mail.protection.outlook.com (10.167.244.69) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.1 via Frontend Transport; Tue, 10 Mar 2026 14:18:19 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id B707140654F; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) Received: from ediswws06.ad.cirrus.com (ediswws06.ad.cirrus.com [198.90.208.24]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id 872F7822542; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) From: Richard Fitzgerald To: broonie@kernel.org Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH 03/10] ASoC: wm_adsp: Export function for KUnit test to get firmware filenames Date: Tue, 10 Mar 2026 14:18:10 +0000 Message-ID: <20260310141817.1871794-4-rf@opensource.cirrus.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260310141817.1871794-1-rf@opensource.cirrus.com> References: <20260310141817.1871794-1-rf@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: SJ1PEPF000023D4:EE_|PH0PR19MB5444:EE_ X-MS-Office365-Filtering-Correlation-Id: be3a98a6-bd5d-4525-c6b4-08de7eafe13e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|61400799027|82310400026|18002099003|22082099003|56012099003|54012099003|16102099003; X-Microsoft-Antispam-Message-Info: Kny/1/ZTAIgdTcoldVaSO8Km3zhBAwoOiXca32azh71vwG/a1a3gKaCRNjg1RgMD9cDfehKdjS1GifrafRM/J1ZmXSeLbXeKQSAcAetJInS8z1rfw9qv+RKdHCpUnDCo9M5t9nRbQAimr1UTTFaicG1pAWNgkNPqTT2btPkIOi7rt607CW16I/5eU84HsIr+wg68Y0JChtvN1KdCdgxBU5WjgVBtX2SykOBRMyD07hE1Zw/tAWPeDfT0iEK/xbkjO6MnBw52Kl7GQ9DF7TrwrdvJ1Ri0ED3kiLZfaqcV/CoaCtWKp2HWovpp45lTRocATKMFyHjyk3gh133MEcW9/tEOswhT9rQDnzKtYvUOktyisiAB3vbwnzNmHwg3sqR4kLe4Z0YMoq3yUASwPr7BRXKjQwrqhWTh/8BCYsafn8OyAAxAfRG620HgMlEEFtuLFVTrrBhymWlZdAHbRza4yIhiDoDRkoyEV8nrqua/hlYixZqSXAQLrO3PXWIDhez4CSFa2QKx6spujbf5Y5jM9ZzgDbV+rvUAaPQQvWPkUS9YaXXwQHsFXQMma7CDU+gxqaP5TN2Zzv0k8DjUneJttr7Q4cNfDMhkgz2uTsNefq/Djxx/EwsyPmCJrYWkjdd3kuTbSLs7dK/+VrX0Ilt0QuVUoPlL55/f5XbibR4Ex5GVGlkKj8cBCLS4r1/MKaP40mF8v+wm9Xh/mWr++4Id/IH1xXYlvO1/txkLa4r65JnWnnp5LWEy1yamQJ1vxJPh06LLblSMkQYD0uTAzSusQg== 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)(36860700016)(376014)(61400799027)(82310400026)(18002099003)(22082099003)(56012099003)(54012099003)(16102099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GgCNfzHgla6R4bAotNBRXmUT7lumLpxy+cLa0iYoKam3KjGGuvphv1ZvY1UO4To8qIS93FlWB2puMmC/p+o4tB5Bi6L+gxcYtp4DW6TzIBRC3XSfwAfbBxnXgev2fFpqeYsrQHLdzrmLHqYIBf1Cyfw7NVTm/4A13tA/ub4RBBuAfLuiHnstD67r3wgf7o+HousLExdCEGsBTtFw7rFRjUKIi2hZQICn5YNo3IrTaqMU/L4YzgpNF5s31a1YYh4vmAsv4fNquYP6OumJ6tmmdTpcZ6IQHU9/pPYHZgw7RhyAYAV2Z1/rrmvlncGZOTxJypBr0WSLqH2Pw8ZuMPH4UXbo503mc7OQHWf51Licmz443JnK3fcBRYFyStVENZu4GUPPQQwmnPsaY1SyS9DB9s3busuQySesdIX888YOBpegJIPmgskYONiAL8VbcBwF X-Exchange-RoutingPolicyChecked: H37tscVAYzqQIz8kfJNn/DYs9/BRdiSKnenJ58NuVoRHy49ALpjk0gJtTJc584sGWU1vO+zwECSjL+jcLmeNOWTGfhKxvDM9xnKQbwMjuRBmBxpMC7Gy7M/zkSBvcaWAAxigJvTkZ4DqIJAYlAXvLXH6dR5CHSrSe2iuXhOS9uGr05D4KidSY86ZyAo0k4xk4+p7ptbF5yAsR5faHLz+gK/vIMVKWRNmzFUQ8n5y0gAAzVVEcXthRIR5caAk43En8VdRuRgW/HWH2GD95gso3p+dycDhuEtj9+DbywCeXbCkX1WSWgbskLxlpDCr/KvHtF9OfD/MsCSvNvNKv93+oQ== X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 14:18:19.3219 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: be3a98a6-bd5d-4525-c6b4-08de7eafe13e 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-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ1PEPF000023D4.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR19MB5444 X-Proofpoint-ORIG-GUID: PZzENv-dKITb0g5u1n_LohuIS6RIxuVv X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEyNCBTYWx0ZWRfX2/FOCeLUDfMy gAI9GmQeVHUeBQp8ljOa+9As1cIhhNFqoutlcJncrqMm3c7SNc18G75mcQs+phzLa7KhDj3VRHp OeX2tFnkOHZcjYP86L084z9DcBxtFzAHJ+d/Bz6/IzxngYW8OYBZNEesdkT31k7e3rjO5hIF9gP jsncx6L826YEoFliEpmFYgzPDP+sMO8Qe3ucUHlj5p/fOwHRN0yM7vqDWshJC70nL4DWKNxUlmL NzfStBsfzOg31uA5qZqOyKeUxOF1ancYYbcrXO/lH9AiGTxY1fc/BWlWpzAZ4a539wp8oCIqAvV 91iEX6xHj7uJuW7DfG51cV4/6rNSjf8WXEDA6cvYb2uXViqzoesrU8JWwwID0UgeFWU+b3RgBRZ EY6aRThavVQUoNwCsJ2oXMwfKxDC9dmrSOCdpp1OZuqhcju0zI8GYfzxKP+YSIQTZ/q5n2Bg837 YzCPedOq/pPitdzttgg== X-Proofpoint-GUID: PZzENv-dKITb0g5u1n_LohuIS6RIxuVv X-Authority-Analysis: v=2.4 cv=EbbFgfmC c=1 sm=1 tr=0 ts=69b0282f cx=c_pps a=X0DbKXi7RYM5x2NUiypu8g==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=Yq5XynenixoA:10 a=s63m1ICgrNkA:10 a=RWc_ulEos4gA:10 a=VkNPw1HP01LnGYTKEx00:22 a=iX4cTi3TZMoOKdANLEfx:22 a=KfkQE9S9VqCBgivYGm0O:22 a=w1d2syhTAAAA:8 a=qKDmiOiLRtuvbdj9iSYA:9 X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" Export a function that KUnit tests can use to get the firmware filenames from the wm_adsp_fw[] array. Signed-off-by: Richard Fitzgerald --- sound/soc/codecs/wm_adsp.c | 11 +++++++++++ sound/soc/codecs/wm_adsp.h | 1 + 2 files changed, 12 insertions(+) diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index 68e00970b8a2..79695ead5788 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -318,6 +318,17 @@ struct wm_coeff_ctl { struct work_struct work; }; =20 +#if IS_ENABLED(CONFIG_KUNIT) +const char *wm_adsp_get_fwf_name_by_index(int index) +{ + if (index < ARRAY_SIZE(wm_adsp_fw)) + return wm_adsp_fw[index].file; + + return NULL; +} +EXPORT_SYMBOL_IF_KUNIT(wm_adsp_get_fwf_name_by_index); +#endif + int wm_adsp_fw_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { diff --git a/sound/soc/codecs/wm_adsp.h b/sound/soc/codecs/wm_adsp.h index 599be409b669..b4d5bd321c0b 100644 --- a/sound/soc/codecs/wm_adsp.h +++ b/sound/soc/codecs/wm_adsp.h @@ -144,6 +144,7 @@ int wm_adsp_read_ctl(struct wm_adsp *dsp, const char *n= ame, int type, unsigned int alg, void *buf, size_t len); =20 #if IS_ENABLED(CONFIG_KUNIT) +const char *wm_adsp_get_fwf_name_by_index(int index); void wm_adsp_release_firmware_files(const struct firmware *wmfw_firmware, char *wmfw_filename, const struct firmware *coeff_firmware, --=20 2.47.3 From nobody Thu Apr 9 05:51:01 2026 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 96DF22C11CB; Tue, 10 Mar 2026 14:18:38 +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=1773152323; cv=fail; b=aeUDdJOvmBgGtx+bUVVPYVj2QSwuEuOJG2nezJbFCk4Sw5gLwhhLmX5keWOQmo1Px4IWrEAiY7T4dXI+A5p+F0E5PGHzr8RzzpfqmNvyB8v6E7xJtfvNymuAPKgVIEW27eS9KYYzEso4v0oq2F9UKZwzLiDh5fjpZdhnHIJdbCs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773152323; c=relaxed/simple; bh=3lRlforBFXwt3QYc3cj53B47OQBtyGhQJC5OrkyhQDw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=YLVbjUBQREKnAa8ZjFj4W/wimH7dONnmbEXAU1H0nCvrBeV5Q7IrRjSQFD/2WGFGctnEC6P6ss5O1D5qGJI0BuxG5+M9vs8170dr26wnef7R9AgpQ4FqMkPQV9xbntpQOQvSjppG9emx3B4C5TES0GPV55r5hSgeehrbyrG0nTc= 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=TOuBF/CJ; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=rYfIWz9R; 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="TOuBF/CJ"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="rYfIWz9R" Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62A4jxWZ3035773; Tue, 10 Mar 2026 09:18:28 -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=uQS4lFpyuW0O9hFBXNJ434cIWdsPbw83P+yJVTEOakM=; b= TOuBF/CJnGfiCdVzTKxeu38sfSVW1sNc3luMsM5UjPp40vsUZoSIXRHfGkC36Sgf EmmTNykNVh0jB6vpXwXGoTdALBHk4uqe4q+MHyCsRpuGCe2ljz3DrMNfiQsLU0fk fjYJELrxGlo71WivObS7aSPolCeYiOglQ3//9RtcS9VlihdBFZkxeI6KriObMKrN ZhEO2+sTXSErT50ZM0MaUsYUdqwiqVRQSvNTDrfGWzFu5DKLxyys9cAuHs8M7Cv0 vDrfe+R0ua3uknBZ9cdovGhdGYaJmUM4t7bvPD569Mi28dxqaPYF4G6+Pu4z0ORO MYwD5oupXuW1z5+sAYKGoA== Received: from sa9pr02cu001.outbound.protection.outlook.com (mail-southcentralusazon11023084.outbound.protection.outlook.com [40.93.196.84]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 4crja4bk2e-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 09:18:27 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V5LR9ywtlcyxQaD1GVpaKzrV9G66oJevSkOTYWgwGAs0VA463di6Acy5zJDYKAVZZLtqQ4uAsU0WW+M1ndn6+qTvuyJ+ialRZtGFSGj6s5W7c5l/mNP7lrz2lJkBLEgaOI9O01tcjjY2MGr1COPgo4LC062+P54vOoya52ddzAJnFgTfPt9QWBkxWfPgQ9963np7pWXeWtVrivstuJPJRt3ctoyIJXhiTLCfIJGm4dSwrTJfjP5PwsFdbNDGY2mLagkU/sW7pI/G8GWTs7OB6M19tfJeH6nI1lvE/quCYhNxp8JjOfh6lA5Ijhmlli79PofW81ZMFRe4Ur7Y4yw2Pw== 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=uQS4lFpyuW0O9hFBXNJ434cIWdsPbw83P+yJVTEOakM=; b=ZHeElDf4/4AZMjKFWp4hra8Y5EJ2AKPxivci+pLL0qgKX/esky+hrXLAVQVLmnEQCnMB6oygieCS9js9N+v6GUf6TWmfefDomn50LTqhunbOVnkB3PLPmmUG4X3kgljtx2naIfh8NOAF3MwGj3ywcgqCoQreRD0BS05lBL/ABU65cN5wxQC8hNioEmwJT22rs0erDlSJ+5EbCQONqx5NLsZ2IQNc1tEt9UosmAJi/d2HfMHPc/pecW3fDvu/kzwWgG5/6d0qvb+IQNi+QDCEQLKhURBG/mXnMc5XiD0SOgR+26OjCJX2KCZr7jQs/IPLnum2W6p6q88+iEu+pVcu2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (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=uQS4lFpyuW0O9hFBXNJ434cIWdsPbw83P+yJVTEOakM=; b=rYfIWz9RTiRqYgOKrD8nwWGcyxLBCuODb62/gxmb8UosunLlh2tSb6OzsoFBjYwkigbf4dYLTEPwo7LLjJ5aN4/uCG0xTyBrxosOEH9HEofCVZbpt0D/XwcpDy6iIhz3OpWcEryuzIOUAbd60MnsudSNdkUHHK60FlkF+Ac2gNk= Received: from SJ0PR13CA0130.namprd13.prod.outlook.com (2603:10b6:a03:2c6::15) by LV0PR19MB9518.namprd19.prod.outlook.com (2603:10b6:408:326::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Tue, 10 Mar 2026 14:18:21 +0000 Received: from SJ1PEPF000023D6.namprd21.prod.outlook.com (2603:10b6:a03:2c6:cafe::15) by SJ0PR13CA0130.outlook.office365.com (2603:10b6:a03:2c6::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.25 via Frontend Transport; Tue, 10 Mar 2026 14:18:19 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (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: SoftFail (protection.outlook.com: domain of transitioning opensource.cirrus.com discourages use of 84.19.233.75 as permitted sender) Received: from edirelay1.ad.cirrus.com (84.19.233.75) by SJ1PEPF000023D6.mail.protection.outlook.com (10.167.244.71) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.1 via Frontend Transport; Tue, 10 Mar 2026 14:18:19 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id BA5BE406550; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) Received: from ediswws06.ad.cirrus.com (ediswws06.ad.cirrus.com [198.90.208.24]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id 895B8822543; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) From: Richard Fitzgerald To: broonie@kernel.org Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH 04/10] ASoC: wm_adsp: Add kunit test for firmware file search Date: Tue, 10 Mar 2026 14:18:11 +0000 Message-ID: <20260310141817.1871794-5-rf@opensource.cirrus.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260310141817.1871794-1-rf@opensource.cirrus.com> References: <20260310141817.1871794-1-rf@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: SJ1PEPF000023D6:EE_|LV0PR19MB9518:EE_ X-MS-Office365-Filtering-Correlation-Id: a6ca9ba3-778e-4913-abeb-08de7eafe11c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|61400799027|36860700016|18002099003|22082099003|56012099003|54012099003|16102099003; X-Microsoft-Antispam-Message-Info: z4iwqqVENbNEpAXyAubvTQxejZYDZYxoVeqN7XE67Q112fAgmafiWFo4v6a+yinbvKQKlkcaB2FskrbY6UGNQ5NH8gzP+wB+ppV7wXelzYAGv3Y3fgM1x3x68Rwa7JpBUMcKNn3EBOoESTb6RwQC7+VyP4s5DvzEAX58qFXS0H1rJdVC8+/YtyFIje/hbNwwrOhWIXn3A+doueOQIqeVNqQHAe3nS7ubRMRHvG9LHNBKtjeCXhjRIeORNADZp+RsjYaotqAnMjiZxcxyPVmG1nh7nzi/y2HetSCED0ilJBp0bZJda8kJTFIrDpCrJSWyqwtZIlkH3dXtBaVPIVLgSJXIBS6H4164wZzTQYZQIYOZ4SLjp6Z4E41mJ7TsVge9zUDn43OLHvnzb4cebJ28e615zMW/UwVs5LnFkUEaM0o5B1QY7mlhYlXNEAMfM8cUB9bIBggX8GTEUX8PV/bObrKFO4d1Upjk9aVCbccfysEifEPBsMJUD1TpaWZ7o/9Yz+B5V1kICZQV3tUFPJx57LPXTkndfH+KhFrkwxvlutUvRHWV6tW+nEM7BS6ST4HFLBfZv953OH7mxTHRPaS0sBV+6zZiL979bncX4Og0F606TNlG20EIl8bQlEYVUP0oWYSoCzIxdHAaLn7fv0DivnW+DKqVlRDDuqZMo9x3flOlgWg6/FCemLvTBAtTs86S14BbalnQINNCsWSoYEGg6W7mC7FioeYlKvHQrVXmRf4Sg+h753u6tzWE9P1iLjfYfDy8cUugKi+zEMNpFqxxtQ== 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)(376014)(82310400026)(61400799027)(36860700016)(18002099003)(22082099003)(56012099003)(54012099003)(16102099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WIw0vcUgLfN/Zc0Pan0Ntx+IO+hnmnqNzkpzUnec8MFdoem5gvlGXVDtqB7XhbwoVigO8mUaEnj9t5vKQJaY04TCOQNCSh+RYYTUT4MXbXBQiUKgQwiEbv9/YXQ7f27JUN6Q2z4jNaPRkkj6RBTc2OGrQNbxN5lQ27ld6vbViwMdqE+QiPg+3eEk603rrlzI9HF5BMqdcy5SJF1dQL/Ne7m5zr44Yz3fP0O+tzY6829iNTErlTNXgKHM4UvtUsRHCbcF/jOjntRSb3Yn+9rmf6E4aPuW8dnfSLzXNJ71nePyifkIZ9iaWAWJujL+jucnsXkhnYXfTkEn/ZjCSLC8wHEtEZJdbV/8cfkgfNCvvV8hrpP+R4GK4IeOFnjX80539NtDzeeZ5cnoslF96ZgHxAu3sQDKKwLq6PNZfKyzoO5hjMEHkWjsxc77VyAt6VLz X-Exchange-RoutingPolicyChecked: MUlUiEMa9Jp2ZY3rAQBG9qX8FyI38Ybwp3JPSBAz5G5lfmvG6i1+R0xONskK4GKemOU4MhPs7yjuRs+6SPkQo0/i2zHeTzmYse5hFfGxF7xgKf7y6i1YPtWPQydPSvuUyk7eZJRSSIS/0XfgkMUFLS6HKmGHs0QKM7t/zSHyJdO5VEALdoKtjDi1Afpv6Fm7KvFrNgwvtHWCMKNMKOoBr7+jTMbP/fbCwifTZpnxCGDtMLLiSW5WYjcNvWYvG8PzARrdwiRKPtn0IaX0dhtePoSM16gOWaMG77V23WDG2bCrHA50Ehb1FRParCkhswZDPuLNXilOtVuSmS2VYW4aiQ== X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 14:18:19.1024 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a6ca9ba3-778e-4913-abeb-08de7eafe11c 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-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ1PEPF000023D6.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV0PR19MB9518 X-Proofpoint-ORIG-GUID: C1z8gnk0xIwfoRQ-Es4rYDkzx-BpB1LO X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEyNCBTYWx0ZWRfX/dPKVjFpZjuk 5XCfd1FAkn49++bOCTFEJ2C1DNWWUJF6JxV6VktRz+ryobPDWNiGLUyv2ghWq4Ea8ZJGP5Qbtor IystN4oUte91yaNjTniGXpO/nYlaYZ4iQudCHHMn8NhfMjcKYhqyTyyrW9Bj3BOeNtGg4Fywcm9 KeQj5xAR6TKXPEdTw/qJJhuiI4JI081meyd+ZVF3f4O2xJWXoCvmFSVzvq5XYqI46DexJ3WsGWq e9Iuo2NDmy4JGIBHUF+/euQSrGj8qN90J/x8qvcVZXMr6zSI0EkXAQMATNz1jo8V7YqsDeAYzcx lIBXbSaLPzB8SbxkYPsqAAgnXfHgpZpxL+/Uej2JzobFSyZpl7K99hOoPDVxVAA1zdhcYI6v+oC wUC77fi6ZTR9nuabZSPZjMjghEgGW+f+LP3jePoaADnQHPYdSas3hOXiSB93qEmY728luj4eXgN f40QTO5LaUxVMu5KEsw== X-Proofpoint-GUID: C1z8gnk0xIwfoRQ-Es4rYDkzx-BpB1LO X-Authority-Analysis: v=2.4 cv=WNVyn3sR c=1 sm=1 tr=0 ts=69b02833 cx=c_pps a=V/GvUwJ+4XAyQQCxxnOR+w==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=Yq5XynenixoA:10 a=s63m1ICgrNkA:10 a=RWc_ulEos4gA:10 a=VkNPw1HP01LnGYTKEx00:22 a=iX4cTi3TZMoOKdANLEfx:22 a=Dj2-6B8FqX4mGL0U3gbX:22 a=w1d2syhTAAAA:8 a=OYndPN-Gni85kv8JpMMA:9 X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" Add KUnit testing of the wm_adsp code that searches for firmware files. Also make the SND_SOC_WM_ADSP Kconfig symbol visible if KUNIT is enabled so that wm_adsp can be manually included for KUnit testing. The firmware filename is composed of several fields, some of which are optional, and there is a search algorithm to fallback from specific to generic versions of firmware for a device. This KUnit test verifies that wm_adsp is searching for the correct sequence of filenames. The are two ways of testing this, and both are used in this KUnit test. 1. Trap the calls to firmware_request_nowarn() and test that the sequence of filenames request is correct. This is the most thorough test because it proves that exactly the expected filenames are requested, in the correct order. But it doesn't fully cover regression testing. If a change to the search algorithm changes the expected sequence of requested files, the test must also be changed to expect that new sequence. If the expectation is wrong, the tests can pass (because the search order is as expected) while picking a different file in some cases from what it did before the change. 2. Test which file is picked from a simulated directory of files. This is better for regression testing because it is independent of the search algorithm. It does not need to change if the search algorithm changes. It is not testing exactly which files the algorithm searches for, only which file it eventually picks from a given set of available files. In other words, the regression test is: does it still pick the same file from the same directory of files? But it is impractical for thorough testing. It doesn't prove that exactly the correct files were searched for, unless it was to test with every possible combination of file names and directory content that could ever exist. Clearly this is impossible to implement, since the number of combations of possible valid filenames in a directory and number of files in a directory is astronomically large. Signed-off-by: Richard Fitzgerald --- sound/soc/codecs/Kconfig | 14 +- sound/soc/codecs/Makefile | 2 + sound/soc/codecs/wm_adsp_fw_find_test.c | 1223 +++++++++++++++++++++++ 3 files changed, 1238 insertions(+), 1 deletion(-) create mode 100644 sound/soc/codecs/wm_adsp_fw_find_test.c diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index adb3fb923be3..f9e6a83e55c6 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -398,7 +398,7 @@ config SND_SOC_WM_HUBS default m if SND_SOC_WM8993=3Dm || SND_SOC_WM8994=3Dm =20 config SND_SOC_WM_ADSP - tristate + tristate "Cirrus Logic wm_adsp driver" if KUNIT select FW_CS_DSP select SND_SOC_COMPRESS default y if SND_SOC_MADERA=3Dy @@ -424,6 +424,18 @@ config SND_SOC_WM_ADSP default m if SND_SOC_CS35L56=3Dm default m if SND_SOC_CS48L32=3Dm =20 +config SND_SOC_WM_ADSP_TEST + tristate "KUnit tests for Cirrus Logic wm_adsp" if !KUNIT_ALL_TESTS + depends on KUNIT + depends on SND_SOC_WM_ADSP + default KUNIT_ALL_TESTS + help + This builds KUnit tests for the Cirrus Logic wm_adsp library. + For more information on KUnit and unit tests in general, + please refer to the KUnit documentation in + Documentation/dev-tools/kunit/. + If in doubt, say "N". + config SND_SOC_AB8500_CODEC tristate depends on ABX500_CORE diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile index 3ddee5298721..172861d17cfd 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile @@ -361,6 +361,7 @@ snd-soc-wcd938x-sdw-y :=3D wcd938x-sdw.o snd-soc-wcd939x-y :=3D wcd939x.o snd-soc-wcd939x-sdw-y :=3D wcd939x-sdw.o snd-soc-wm-adsp-y :=3D wm_adsp.o +snd-soc-wm-adsp-test-y :=3D wm_adsp_fw_find_test.o snd-soc-wm0010-y :=3D wm0010.o snd-soc-wm1250-ev1-y :=3D wm1250-ev1.o snd-soc-wm2000-y :=3D wm2000.o @@ -862,6 +863,7 @@ obj-$(CONFIG_SND_SOC_WM9705) +=3D snd-soc-wm9705.o obj-$(CONFIG_SND_SOC_WM9712) +=3D snd-soc-wm9712.o obj-$(CONFIG_SND_SOC_WM9713) +=3D snd-soc-wm9713.o obj-$(CONFIG_SND_SOC_WM_ADSP) +=3D snd-soc-wm-adsp.o +obj-$(CONFIG_SND_SOC_WM_ADSP_TEST) +=3D snd-soc-wm-adsp-test.o obj-$(CONFIG_SND_SOC_WM_HUBS) +=3D snd-soc-wm-hubs.o obj-$(CONFIG_SND_SOC_WSA881X) +=3D snd-soc-wsa881x.o obj-$(CONFIG_SND_SOC_WSA883X) +=3D snd-soc-wsa883x.o diff --git a/sound/soc/codecs/wm_adsp_fw_find_test.c b/sound/soc/codecs/wm_= adsp_fw_find_test.c new file mode 100644 index 000000000000..556221d38a50 --- /dev/null +++ b/sound/soc/codecs/wm_adsp_fw_find_test.c @@ -0,0 +1,1223 @@ +// SPDX-License-Identifier: GPL-2.0-only +// +// Test cases for wm_adsp library. +// +// Copyright (C) 2025 Cirrus Logic, Inc. and +// Cirrus Logic International Semiconductor Ltd. + +#include +#include +#include +#include +#include "wm_adsp.h" + +KUNIT_DEFINE_ACTION_WRAPPER(_put_device_wrapper, put_device, struct device= *); + +struct wm_adsp_fw_find_test { + struct wm_adsp dsp; + + const struct firmware *found_wmfw_firmware; + const struct firmware *found_bin_firmware; + char *found_wmfw_filename; + char *found_bin_filename; + char searched_fw_files[768]; +}; + +struct wm_adsp_fw_find_test_params { + const char *part; + const char *dsp_name; + const char *fwf_name; + const char *system_name; + const char *alsa_name; + bool wmfw_optional; + bool bin_mandatory; + + /* If non-NULL this file should be returned as "found" */ + const char *expect_wmfw; + + /* If non-NULL this file should be returned as "found" */ + const char *expect_bin; + + /* Space-separated list of filenames in expected order of searching */ + const char *expected_searches; + + /* NULL-terminated array of pointers to filenames to simulate directory c= ontent */ + const char * const *dir_files; +}; + +/* Dummy struct firmware to return from wm_adsp_request_firmware_files */ +static const struct firmware wm_adsp_find_test_dummy_firmware; + +/* Simple lookup of a filename in a list of names */ +static int wm_adsp_fw_find_test_firmware_request_simple_stub(const struct = firmware **firmware, + const char *filename, + struct device *dev) +{ + struct kunit *test =3D kunit_get_current_test(); + const struct wm_adsp_fw_find_test_params *params =3D test->param_value; + int i; + + /* Non-parameterized test? */ + if (!params) + return -ENOENT; + + if (!params->dir_files) + return -ENOENT; + + for (i =3D 0; params->dir_files[i]; i++) { + if (strcmp(params->dir_files[i], filename) =3D=3D 0) { + *firmware =3D &wm_adsp_find_test_dummy_firmware; + return 0; + } + } + + return -ENOENT; +} + +static void wm_adsp_fw_find_test_pick_file(struct kunit *test) +{ + struct wm_adsp_fw_find_test *priv =3D test->priv; + const struct wm_adsp_fw_find_test_params *params =3D test->param_value; + struct wm_adsp *dsp =3D &priv->dsp; + int i, ret; + + /* Concatenate string of dir content for error messages */ + for (i =3D 0; params->dir_files[i]; i++) { + strlcat(priv->searched_fw_files, params->dir_files[i], + sizeof(priv->searched_fw_files)); + strlcat(priv->searched_fw_files, ";", + sizeof(priv->searched_fw_files)); + } + + dsp->cs_dsp.name =3D params->dsp_name; + dsp->part =3D params->part; + dsp->fwf_name =3D params->fwf_name; + dsp->system_name =3D params->system_name; + dsp->component->name_prefix =3D params->alsa_name; + dsp->wmfw_optional =3D params->wmfw_optional; + dsp->bin_mandatory =3D params->bin_mandatory; + + kunit_activate_static_stub(test, + wm_adsp_firmware_request, + wm_adsp_fw_find_test_firmware_request_simple_stub); + + ret =3D wm_adsp_request_firmware_files(dsp, + &priv->found_wmfw_firmware, + &priv->found_wmfw_filename, + &priv->found_bin_firmware, + &priv->found_bin_filename); + kunit_deactivate_static_stub(test, wm_adsp_firmware_request); + KUNIT_EXPECT_EQ_MSG(test, ret, + (params->expect_wmfw || params->expect_bin) ? 0 : -ENOENT, + "%s\n", priv->searched_fw_files); + + KUNIT_EXPECT_EQ_MSG(test, !!priv->found_wmfw_filename, !!params->expect_w= mfw, + "%s\n", priv->searched_fw_files); + KUNIT_EXPECT_EQ_MSG(test, !!priv->found_bin_filename, !!params->expect_bi= n, + "%s\n", priv->searched_fw_files); + + if (params->expect_wmfw) { + KUNIT_EXPECT_STREQ_MSG(test, priv->found_wmfw_filename, params->expect_w= mfw, + "%s\n", priv->searched_fw_files); + } + + if (params->expect_bin) { + KUNIT_EXPECT_STREQ_MSG(test, priv->found_bin_filename, params->expect_bi= n, + "%s\n", priv->searched_fw_files); + } +} + +static int wm_adsp_fw_find_test_firmware_request_stub(const struct firmwar= e **firmware, + const char *filename, + struct device *dev) +{ + struct kunit *test =3D kunit_get_current_test(); + const struct wm_adsp_fw_find_test_params *params =3D test->param_value; + struct wm_adsp_fw_find_test *priv =3D test->priv; + + /* + * Searches are accumulated as a single string of space-separated names. + * The list of expected searches are stored the same way in + * struct wm_adsp_fw_find_test_params. This allows for comparision using + * a simple KUNIT_EXPECT_STREQ(), which avoids the risk of bugs in a + * more complex custom comparison. + */ + if (priv->searched_fw_files[0] !=3D '\0') + strlcat(priv->searched_fw_files, " ", sizeof(priv->searched_fw_files)); + + strlcat(priv->searched_fw_files, filename, sizeof(priv->searched_fw_files= )); + + /* Non-parameterized test? */ + if (!params) + return -ENOENT; + + if (params->expect_wmfw && (strcmp(filename, params->expect_wmfw) =3D=3D = 0)) { + *firmware =3D &wm_adsp_find_test_dummy_firmware; + return 0; + } + + if (params->expect_bin && (strcmp(filename, params->expect_bin) =3D=3D 0)= ) { + *firmware =3D &wm_adsp_find_test_dummy_firmware; + return 0; + } + + return -ENOENT; +} + +static void wm_adsp_fw_find_test_search_order(struct kunit *test) +{ + struct wm_adsp_fw_find_test *priv =3D test->priv; + const struct wm_adsp_fw_find_test_params *params =3D test->param_value; + struct wm_adsp *dsp =3D &priv->dsp; + + dsp->cs_dsp.name =3D params->dsp_name; + dsp->part =3D params->part; + dsp->fwf_name =3D params->fwf_name; + dsp->system_name =3D params->system_name; + dsp->component->name_prefix =3D params->alsa_name; + dsp->wmfw_optional =3D params->wmfw_optional; + + kunit_activate_static_stub(test, + wm_adsp_firmware_request, + wm_adsp_fw_find_test_firmware_request_stub); + + wm_adsp_request_firmware_files(dsp, + &priv->found_wmfw_firmware, + &priv->found_wmfw_filename, + &priv->found_bin_firmware, + &priv->found_bin_filename); + + kunit_deactivate_static_stub(test, wm_adsp_firmware_request); + + KUNIT_EXPECT_STREQ(test, priv->searched_fw_files, params->expected_search= es); + + KUNIT_EXPECT_EQ(test, !!priv->found_wmfw_filename, !!params->expect_wmfw); + if (params->expect_wmfw) + KUNIT_EXPECT_STREQ(test, priv->found_wmfw_filename, params->expect_wmfw); + + KUNIT_EXPECT_EQ(test, !!priv->found_bin_filename, !!params->expect_bin); + if (params->expect_bin) + KUNIT_EXPECT_STREQ(test, priv->found_bin_filename, params->expect_bin); + + /* Either we get a filename and firmware, or neither */ + KUNIT_EXPECT_EQ(test, !!priv->found_wmfw_filename, !!priv->found_wmfw_fir= mware); + KUNIT_EXPECT_EQ(test, !!priv->found_bin_filename, !!priv->found_bin_firmw= are); +} + +static void wm_adsp_fw_find_test_find_firmware_byindex(struct kunit *test) +{ + struct wm_adsp_fw_find_test *priv =3D test->priv; + struct wm_adsp *dsp =3D &priv->dsp; + const char *fw_name; + + dsp->cs_dsp.name =3D "cs1234"; + dsp->part =3D "dsp1"; + for (dsp->fw =3D 0;; dsp->fw++) { + fw_name =3D wm_adsp_get_fwf_name_by_index(dsp->fw); + if (!fw_name) + break; + + kunit_activate_static_stub(test, + wm_adsp_firmware_request, + wm_adsp_fw_find_test_firmware_request_stub); + + wm_adsp_request_firmware_files(dsp, + &priv->found_wmfw_firmware, + &priv->found_wmfw_filename, + &priv->found_bin_firmware, + &priv->found_bin_filename); + + kunit_deactivate_static_stub(test, wm_adsp_firmware_request); + + KUNIT_EXPECT_NOT_NULL_MSG(test, + strstr(priv->searched_fw_files, fw_name), + "fw#%d Did not find '%s' in '%s'\n", + dsp->fw, fw_name, priv->searched_fw_files); + } +} + +static int wm_adsp_fw_find_test_case_init(struct kunit *test) +{ + struct wm_adsp_fw_find_test *priv; + struct device *test_dev; + int ret; + + priv =3D kunit_kzalloc(test, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + /* Require dummy struct snd_soc_component for the alsa name prefix string= */ + priv->dsp.component =3D kunit_kzalloc(test, sizeof(*priv->dsp.component),= GFP_KERNEL); + if (!priv->dsp.component) + return -ENOMEM; + + test->priv =3D priv; + + /* Create dummy amp device */ + test_dev =3D kunit_device_register(test, "wm_adsp_test_drv"); + if (IS_ERR(test_dev)) + return PTR_ERR(test_dev); + + priv->dsp.cs_dsp.dev =3D get_device(test_dev); + if (!priv->dsp.cs_dsp.dev) + return -ENODEV; + + ret =3D kunit_add_action_or_reset(test, _put_device_wrapper, priv->dsp.cs= _dsp.dev); + if (ret) + return ret; + + return 0; +} + +static void wm_adsp_fw_find_test_case_exit(struct kunit *test) +{ + struct wm_adsp_fw_find_test *priv =3D test->priv; + + /* + * priv->found_wmfw_firmware and priv->found_bin_firmware are + * dummies not allocated by the real request_firmware() call they + * must not be passed to release_firmware(). + */ + wm_adsp_release_firmware_files(NULL, priv->found_wmfw_filename, + NULL, priv->found_bin_filename); +} + +static void wm_adsp_fw_find_test_param_desc(const struct wm_adsp_fw_find_t= est_params *param, + char *desc) +{ + snprintf(desc, KUNIT_PARAM_DESC_SIZE, + "%s %s fwf_name:%s system:%s alsa_name:%s %s expects:(%s %s)", + param->part, param->dsp_name, + param->fwf_name ? param->fwf_name : "", + param->system_name ? param->system_name : "", + param->alsa_name ? param->alsa_name : "", + param->wmfw_optional ? "wmfw_optional" : "", + param->expect_wmfw ? param->expect_wmfw : "", + param->expect_bin ? param->expect_bin : ""); +} + +/* Cases where firmware file not found. Tests full search sequence. */ +static const struct wm_adsp_fw_find_test_params wm_adsp_fw_find_full_searc= h_cases[] =3D { + { /* system name and alsa prefix, wmfw mandatory. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw", + }, + { /* system name and alsa prefix, wmfw optional. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* system name only, wmfw mandatory. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw", + }, + { /* system name only, wmfw optional. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .wmfw_optional =3D true, + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + + /* + * TODO: Is this a bug? Device-specific bin is only allowed when there + * is a system_name. But if there isn't any meaningful system name on + * a product, why can't it load firmware files qualified by alsa prefix? + */ + + { /* Alsa prefix, wmfw mandatory. No system name so generic files only. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .alsa_name =3D "amp1", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw", + }, + { /* Alsa prefix, wmfw optional. No system name so generic files only. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .alsa_name =3D "amp1", + .wmfw_optional =3D true, + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + + { /* fwf_name, system name and alsa prefix, wmfw mandatory. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .fwf_name =3D "ao", + .expected_searches =3D + "cirrus/cs1234-ao-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-ao-mbc-vss-abc123.wmfw " + "cs1234-ao-mbc-vss.wmfw " + "cirrus/cs1234-ao-mbc-vss.wmfw", + }, + { /* fwf_name, system name and alsa prefix, wmfw optional. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .fwf_name =3D "ao", + .wmfw_optional =3D true, + .expected_searches =3D + "cirrus/cs1234-ao-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-ao-mbc-vss-abc123.wmfw " + "cirrus/cs1234-ao-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-ao-mbc-vss-abc123.bin " + "cs1234-ao-mbc-vss.wmfw " + "cirrus/cs1234-ao-mbc-vss.wmfw " + "cirrus/cs1234-ao-mbc-vss.bin", + }, +}; +KUNIT_ARRAY_PARAM(wm_adsp_fw_find_full_search, + wm_adsp_fw_find_full_search_cases, + wm_adsp_fw_find_test_param_desc); + +/* Cases with system name and alsa prefix both given. */ +static const struct wm_adsp_fw_find_test_params wm_adsp_fw_find_system_als= aname_cases[] =3D { + { /* Fully-qualified wmfw exists. No bin */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + }, + { /* Optional fully-qualified wmfw exists. No bin */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + }, + { /* Fully-qualified wmfw and bin exist. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + }, + { /* Optional fully-qualified wmfw and fully-qualified bin exist. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + }, + { /* wmfw matches system name only. No bin */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + }, + { /* Optional wmfw matches system name only. No bin */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + }, + { /* wmfw matches system name only. Fully-qualified bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + }, + { /* Optional wmfw matches system name only. Fully-qualified bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + }, + { /* wmfw and bin match system name only. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + }, + { /* Optional wmfw and bin match system name only. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + }, + { /* Optional wmfw not found. bin matches fully-qualified name. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin", + }, + { /* Optional wmfw not found. bin matches system name only. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + }, + { /* No qualified wmfw. Legacy generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* No qualified optional wmfw. Legacy generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* No qualified wmfw. Legacy generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* No qualified optional wmfw. Legacy generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* No qualified or legacy wmfw. Generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No optional qualified or legacy wmfw. Generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No qualified or legacy wmfw. Generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No optional qualified or legacy wmfw. Generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No optional qualified or generic wmfw. Generic bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123-amp1.bin " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, +}; +KUNIT_ARRAY_PARAM(wm_adsp_fw_find_system_alsaname, + wm_adsp_fw_find_system_alsaname_cases, + wm_adsp_fw_find_test_param_desc); + +/* Cases with system name but without alsa name prefix. */ +static const struct wm_adsp_fw_find_test_params wm_adsp_fw_find_system_cas= es[] =3D { + { /* Qualified wmfw found. No bin */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + }, + { /* Optional qualified wmfw found. No bin */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + }, + { /* Qualified wmfw found. Qualified bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + }, + { /* Optional qualified wmfw found. Qualified bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + }, + { /* Optional wmfw not found. Qualified bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .wmfw_optional =3D true, + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin", + }, + { /* No qualified wmfw. Legacy generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* No qualified optional wmfw. Legacy generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .wmfw_optional =3D true, + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* No qualified wmfw. Legacy generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* No qualified optional wmfw. Legacy generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .wmfw_optional =3D true, + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* No qualified or legacy wmfw. Generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No optional qualified or legacy wmfw. Generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No qualified or legacy wmfw. Generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No optional qualified or legacy wmfw. Generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No optional qualified or generic wmfw. Generic bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "ABC123", + .wmfw_optional =3D true, + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc123.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc123.bin " + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, +}; +KUNIT_ARRAY_PARAM(wm_adsp_fw_find_system, + wm_adsp_fw_find_system_cases, + wm_adsp_fw_find_test_param_desc); + +/* Cases without system name but with alsa name prefix. */ +static const struct wm_adsp_fw_find_test_params wm_adsp_fw_find_alsaname_c= ases[] =3D { + { /* Legacy generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .alsa_name =3D "amp1", + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* wmfw optional. Legacy generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .alsa_name =3D "amp1", + .wmfw_optional =3D true, + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* Legacy generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .alsa_name =3D "amp1", + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* wmfw optional. Legacy generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .alsa_name =3D "amp1", + .wmfw_optional =3D true, + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* No legacy wmfw. Generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No legacy wmfw. Optional generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .alsa_name =3D "amp1", + .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No legacy wmfw. Generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No legacy wmfw. Optional generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .alsa_name =3D "amp1", + .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No legacy or generic wmfw. Generic bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .alsa_name =3D "amp1", + .wmfw_optional =3D true, + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, +}; +KUNIT_ARRAY_PARAM(wm_adsp_fw_find_alsaname, + wm_adsp_fw_find_alsaname_cases, + wm_adsp_fw_find_test_param_desc); + +/* Cases without system name or alsa name prefix. */ +static const struct wm_adsp_fw_find_test_params wm_adsp_fw_find_noqual_cas= es[] =3D { + { /* Legacy generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* wmfw optional. Legacy generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", + .wmfw_optional =3D true, + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* Legacy generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* wmfw optional. Legacy generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", + .wmfw_optional =3D true, + .expect_wmfw =3D "cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cs1234-dsp1-mbc-vss.bin", + }, + { /* No legacy wmfw. Generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No legacy wmfw. Optional generic wmfw found. No bin. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", + .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No legacy wmfw. Generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No legacy wmfw. Optional generic wmfw and bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", + .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, + { /* No legacy or generic wmfw. Generic bin found. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", + .wmfw_optional =3D true, + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .expected_searches =3D + "cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.wmfw " + "cirrus/cs1234-dsp1-mbc-vss.bin", + }, +}; +KUNIT_ARRAY_PARAM(wm_adsp_fw_find_noqual, + wm_adsp_fw_find_noqual_cases, + wm_adsp_fw_find_test_param_desc); + +/* + * Tests for filename normalization. The system name and alsa prefix strin= gs + * should be converted to lower-case and delimiters are converted to '-', = except + * for '.' which is preserved. + */ +static const struct wm_adsp_fw_find_test_params wm_adsp_fw_find_normalizat= ion_cases[] =3D { + { + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "Vendor", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-vendor.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-vendor.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-vendor.bin", + }, + { + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "Vendor Devic= e", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-vendor-device.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-vendor-device.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-vendor-device.bin", + }, + { + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "Vendor_Devic= e", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-vendor-device.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-vendor-device.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-vendor-device.bin", + }, + { + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "1234:56AB", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-1234-56ab.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-1234-56ab.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-1234-56ab.bin", + }, + + { + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "abc", + .alsa_name =3D "LEFT", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc-left.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc-left.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc-left.bin", + }, + { + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "abc", + .alsa_name =3D "LEFT AMP", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc-left-amp.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc-left-amp.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc-left-amp.bin", + }, + { + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "abc", + .alsa_name =3D "Left Amp", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc-left-amp.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc-left-amp.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc-left-amp.bin", + }, + { + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "abc", + .alsa_name =3D "Amp_1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc-amp-1.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc-amp-1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc-amp-1.bin", + }, + { + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "abc", + .alsa_name =3D "cs1234.1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc-cs1234.1.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc-cs1234.1.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc-cs1234.1.bin", + }, +}; +KUNIT_ARRAY_PARAM(wm_adsp_fw_find_normalization, + wm_adsp_fw_find_normalization_cases, + wm_adsp_fw_find_test_param_desc); + +/* + * Dummy directory content for regression tests. + * DSP part name and system name are used to select different available + * files. + * + * System: + * WFBF1111 =3D wmfw and bin fully-qualified + * WSBF1111 =3D wmfw system-qualified, bin fully-qualified + * WSBS1111 =3D wmfw and bin system-qualified + * WFXX1111 =3D wmfw fully-qualified, bin not present + * XXBF1111 =3D wmfw not present, bin fully-qualified + * + * Part: + * cs1234 =3D for testing fully-qualified configurations + * cs1234nobin =3D generic wmfw without a bin available + * wm1234 =3D legacy wmfw and bin + * wm1234nobin =3D legacy wmfw without bin + */ +static const char * const wm_adsp_fw_find_test_dir_all_files[] =3D { + "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-amp1.wmfw", + "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-l1u2.wmfw", + "cirrus/cs1234-dsp1-mbc-vss-wfbf1111.wmfw", + "cirrus/cs1234-dsp1-mbc-vss-wsbf1111.wmfw", + "cirrus/cs1234-dsp1-mbc-vss-wsbs1111.wmfw", + "cirrus/cs1234-dsp1-mbc-vss-wfxx1111.wmfw", + "cirrus/cs1234-dsp1-mbc-vss.wmfw", + "cirrus/cs1234nobin-dsp1-mbc-vss.wmfw", + "cirrus/wm1234-dsp1-mbc-vss.wmfw", + "cirrus/wm1234nobin-dsp1-mbc-vss.wmfw", + "wm1234-dsp1-mbc-vss.wmfw", + "wm1234nobin-dsp1-mbc-vss.wmfw", + "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-amp1.bin", + "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-l1u2.bin", + "cirrus/cs1234-dsp1-mbc-vss-wsbf1111-amp1.bin", + "cirrus/cs1234-dsp1-mbc-vss-wsbf1111-l1u2.bin", + "cirrus/cs1234-dsp1-mbc-vss-wsbs1111.bin", + "cirrus/cs1234-dsp1-mbc-vss-xxbf1111-amp1.bin", + "cirrus/cs1234-dsp1-mbc-vss.bin", + "cirrus/wm1234-dsp1-mbc-vss.bin", + "wm1234-dsp1-mbc-vss.bin", +}; + +/* + * Regression testing that a change in the search algorithm doesn't change + * which file is picked. This doesn't cover every possible combination, on= ly + * those that are already in use and typical cases. + * + * It wouldn't be efficent to fully prove the algorithm this way (too many + * directory content combinations would be needed, and it only infers what= the + * algorithm searched for, it doesn't prove exactly what searches were mad= e). + * So the main testing is done by checking for the expected file searches. + * This regression test is independent of the search algorithm. + * + * The main tests already prove that the algorithm only searches for files + * with the correct qualifiers so we can assume that files with the wrong + * qualifiers would not be picked and there's no need to test for that her= e. + */ +static const struct wm_adsp_fw_find_test_params wm_adsp_fw_find_pick_cases= [] =3D { + /* + * Amps + */ + { /* Full info, wmfw and bin fully-qualified */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "WFBF1111", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-amp1.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-amp1.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw and bin fully-qualified */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "WFBF1111", + .alsa_name =3D "l1u2", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-l1u2.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-l1u2.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw only system-qualified, bin fully-qualified */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "WSBF1111", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-wsbf1111.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-wsbf1111-amp1.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw only system-qualified, bin fully-qualified */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "WSBF1111", + .alsa_name =3D "l1u2", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-wsbf1111.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-wsbf1111-l1u2.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw optional but present, and bin fully-qualified */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "WFBF1111", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-amp1.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-amp1.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw and bin only system-qualified */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "WSBS1111", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-wsbs1111.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-wsbs1111.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw optional but system-qualified wmfm present, bin full= y-qualified */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "WSBF1111", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-wsbf1111.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-wsbf1111-amp1.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw optional not present, and bin fully-qualified */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "XXBF1111", + .alsa_name =3D "amp1", .wmfw_optional =3D true, + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-xxbf1111-amp1.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw and bin fully-qualified, bin mandatory and present */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "WFBF1111", + .alsa_name =3D "amp1", .bin_mandatory =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-amp1.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss-wfbf1111-amp1.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw and bin fully-qualified, bin mandatory but not prese= nt */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "WFXX1111", + .alsa_name =3D "amp1", .bin_mandatory =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-wfxx1111.wmfw", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw optional but present, bin mandatory but not present = */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "WFXX1111", + .alsa_name =3D "amp1", .wmfw_optional =3D true, .bin_mandatory =3D true, + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-wfxx1111.wmfw", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw and bin not present, generic fallbacks are present */ + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "XXXX1111", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* Full info, wmfw and bin not present, generic wmfw present */ + .part =3D "cs1234nobin", .dsp_name =3D "dsp1", .system_name =3D "XXXX111= 1", + .alsa_name =3D "amp1", + .expect_wmfw =3D "cirrus/cs1234nobin-dsp1-mbc-vss.wmfw", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + + /* + * Codecs + */ + { /* No qualifiers. Generic wmfws exist, legacy should be chosen. */ + .part =3D "wm1234nobin", .dsp_name =3D "dsp1", + .expect_wmfw =3D "wm1234nobin-dsp1-mbc-vss.wmfw", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* No qualifiers. Generic wmfw and bin exist, legacy should be chosen */ + .part =3D "wm1234", .dsp_name =3D "dsp1", + .expect_wmfw =3D "wm1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "wm1234-dsp1-mbc-vss.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* No qualifiers. New generic wmfw exists, no legacy files. */ + .part =3D "cs1234nobin", .dsp_name =3D "dsp1", + .expect_wmfw =3D "cirrus/cs1234nobin-dsp1-mbc-vss.wmfw", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, + { /* No qualifiers. New generic wmfw and bin exist, no legacy files. */ + .part =3D "cs1234", .dsp_name =3D "dsp1", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss.wmfw", + .expect_bin =3D "cirrus/cs1234-dsp1-mbc-vss.bin", + .dir_files =3D wm_adsp_fw_find_test_dir_all_files, + }, +}; +KUNIT_ARRAY_PARAM(wm_adsp_fw_find_pick, + wm_adsp_fw_find_pick_cases, + wm_adsp_fw_find_test_param_desc); + +static struct kunit_case wm_adsp_fw_find_test_cases[] =3D { + KUNIT_CASE_PARAM(wm_adsp_fw_find_test_search_order, + wm_adsp_fw_find_full_search_gen_params), + + KUNIT_CASE_PARAM(wm_adsp_fw_find_test_search_order, + wm_adsp_fw_find_system_alsaname_gen_params), + + KUNIT_CASE_PARAM(wm_adsp_fw_find_test_search_order, + wm_adsp_fw_find_system_gen_params), + + KUNIT_CASE_PARAM(wm_adsp_fw_find_test_search_order, + wm_adsp_fw_find_alsaname_gen_params), + + KUNIT_CASE_PARAM(wm_adsp_fw_find_test_search_order, + wm_adsp_fw_find_noqual_gen_params), + + KUNIT_CASE_PARAM(wm_adsp_fw_find_test_search_order, + wm_adsp_fw_find_normalization_gen_params), + + KUNIT_CASE_PARAM(wm_adsp_fw_find_test_pick_file, + wm_adsp_fw_find_pick_gen_params), + + KUNIT_CASE(wm_adsp_fw_find_test_find_firmware_byindex), + + { } /* terminator */ +}; + +static struct kunit_suite wm_adsp_fw_find_test_suite =3D { + .name =3D "wm-adsp-fw-find", + .init =3D wm_adsp_fw_find_test_case_init, + .exit =3D wm_adsp_fw_find_test_case_exit, + .test_cases =3D wm_adsp_fw_find_test_cases, +}; + +kunit_test_suite(wm_adsp_fw_find_test_suite); + +MODULE_DESCRIPTION("KUnit test for Cirrus Logic wm_adsp driver"); +MODULE_AUTHOR("Richard Fitzgerald "); +MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS("EXPORTED_FOR_KUNIT_TESTING"); --=20 2.47.3 From nobody Thu Apr 9 05:51:01 2026 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 521D52868B5; Tue, 10 Mar 2026 14:18:37 +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=1773152318; cv=fail; b=ZjOYAq0ns8kSQzggqoI+o10Hm5GbUMeuTawM++Caey2TgYYQQlVPQu8kPOXvQNzoZDHZ4rGNPKE6OydIPL1qM46/SsnLJeTsQAmBXyMVIco0mOyumHL5vkrIF6KiY4QW3acqQTWVRWpxPBks3E+wZlTrgpl7Fs5t6h8WGnaR6Q0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773152318; c=relaxed/simple; bh=RIr8ZxPW4hgYwQsKtj6WNMqvzyWSZaQPTpW7YY1TuSA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=lWXNhvndA/ea2MNrpKwfslFhQJ5uUwAdK4b1vg0kj0NWHYx+rYbbJMCSPyZZqIcUmo2Nh8/HKLB00k77fuAKQZu/2vfFwoJiRXcb8mOQmlIuWm0oS0Eysb2I8cvr2ius0E8BPfAC2kkD3xhpFZMk+S5vBizC6iLyuFpuVI/h05o= 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=pAKdPRz0; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=C9D0to7m; 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="pAKdPRz0"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="C9D0to7m" Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 629KvbtA2288204; Tue, 10 Mar 2026 09:18:30 -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=zUUWjZgaeHDAoKUlZ8hksJBm2GPYpCPLFfbopS7A0uc=; b= pAKdPRz0764Frh5OnLL+jhLN4K5t9bWKNXqIiBJTczvn00Sm47NJ/P6nxIJlwTsM nShru7ZUnPJSe7/IBmMull/l3j585Rm5dKM1F5bAbYXQkIzc8wIct47yG8van/rC /x9/GLF1FvKa+ujCfBwCeU0R7l1A1lwcvrNmnjE//JKvGIYyXWI/vT2pp543YjNl vDo7U1WVuZULIGI3dJUwweZfqeA2d8dBZU2XuN9EtKsRvzlP7mJzKdYCRxi3okGb bBVLxeaDshXG4b28SKVvSaZ/RGaFNkJy9zNCk1RoPi74y24lBS/VjgnRhi2E+9/7 EBJC7fL6VqM0qq54/4hbEw== Received: from mw6pr02cu001.outbound.protection.outlook.com (mail-westus2azon11022139.outbound.protection.outlook.com [52.101.48.139]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 4crja4bk2d-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 09:18:29 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oSvmX9fsqn5MbteamwFoN14Sc1VpT3wYG0godY94bNBGLn0FW1n1blqlthKWkOdQ3rTcY48Y5fTDY5F7r7IVzKo5fleRKQ1w0Gd39/9HKXh8zoWewH5QqEUGM8+3e9Fqu+32J8qS8YuknqWq4gzGTl1bhTIJaQrXmxjFbO23FvD8h8jzgYYH+hT/NLihcbT+1Z/8qFDNKeVEuobpwfLZs3PzRqMFN9hFzzevJeQTAo92Dn0da13UgYm3dF4rkMk4d9sEzfelD2uF5mTTx/+xXQTAVWTEtq9Tx0p+Cm0UEfDQKCN7DNMzCzI1UL7/bwZ2xTuVF4GBUlZUuxacn0k+eQ== 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=zUUWjZgaeHDAoKUlZ8hksJBm2GPYpCPLFfbopS7A0uc=; b=Iz/QWAswBZpspfF4fz5n0JqBKzvMPnUYr2uke1pQFVcHgRLOy1h4jmI5e08Q0ffO28KUyXmBgHhAH+PTqqulOFZQyaCpCemMgkRGUlZx5t+i+6TJmbrAJesM7GryrIko//IO0tFrW52zG6gCyWzrqZdCXszC7XszvcNxso6I1NSmepwO+GHyofWZKboKyE3Dj/0vLp4cPvxzwCLGlQq36Z2ahEUSl99CupgbhTrsWxDYmg3R6U9o+TpcAw2dPMDk1iMTNDRQWxtDUeweI7+WQYYEYOOnoXY4ARDX724sc42rBM3hmvqU2O7rh6E6ipdRgoe8KVzP8iyxg4DYjdxE/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (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=zUUWjZgaeHDAoKUlZ8hksJBm2GPYpCPLFfbopS7A0uc=; b=C9D0to7mlyKp01/a58h4j0G3jFSAGYje95dQiUzTVFFnsChTWC5GruIEnwYykKR4FpHB6feXa9bOkXFpjmoZ63eCDLXvJ3qLeGbD1GPrKDfiLfyvw5JQ4nFDz/A5yGrz5av/aBMzulaAhP1OOVt4JZFzFDfkEK8HGlvsWcBY7TI= Received: from SJ0PR03CA0116.namprd03.prod.outlook.com (2603:10b6:a03:333::31) by LV3PR19MB8367.namprd19.prod.outlook.com (2603:10b6:408:20e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Tue, 10 Mar 2026 14:18:21 +0000 Received: from CO1PEPF00012E7D.namprd03.prod.outlook.com (2603:10b6:a03:333:cafe::9e) by SJ0PR03CA0116.outlook.office365.com (2603:10b6:a03:333::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.25 via Frontend Transport; Tue, 10 Mar 2026 14:18:17 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (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: SoftFail (protection.outlook.com: domain of transitioning opensource.cirrus.com discourages use of 84.19.233.75 as permitted sender) Received: from edirelay1.ad.cirrus.com (84.19.233.75) by CO1PEPF00012E7D.mail.protection.outlook.com (10.167.249.52) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.18 via Frontend Transport; Tue, 10 Mar 2026 14:18:20 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id BE876406554; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) Received: from ediswws06.ad.cirrus.com (ediswws06.ad.cirrus.com [198.90.208.24]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id 91F4E820249; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) From: Richard Fitzgerald To: broonie@kernel.org Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH 05/10] ASoC: wm_adsp: Remove duplicated code to find firmware file Date: Tue, 10 Mar 2026 14:18:12 +0000 Message-ID: <20260310141817.1871794-6-rf@opensource.cirrus.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260310141817.1871794-1-rf@opensource.cirrus.com> References: <20260310141817.1871794-1-rf@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: CO1PEPF00012E7D:EE_|LV3PR19MB8367:EE_ X-MS-Office365-Filtering-Correlation-Id: 0b64f02b-e362-4cad-40a1-08de7eafe233 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|61400799027|36860700016|18002099003|22082099003|56012099003|54012099003|16102099003; X-Microsoft-Antispam-Message-Info: Hnxc+w6/uHYgSv8xm35gGLKEDN5JORYUlzB9ttqSB+9nZudQMrVJW7eY51kL1OANnXXVwidAyuVEqF0/YPvY/Q+BoAYJX8+mEUJsEaUSqBrFyPoS4PXOptqfb+tGMvYbEAR43ezJuG37zqsu77O9UxYaEdAX+h27bUB3hBaZ995SronrkZQbkf9MhWHlhnZt/0uosgxymt2TYMEqUGpnFyzxg6L/WrbK0eiUcIjwtloXc4qKp0IjQ/39egR8x7mo9Pm3HObzn2/lM3qShEzkrS1kyq9GhDU6m7Xilh4lpUGJjJ3f5TzSkYKZdjfrkLbcC2UdRmUvnjvP2N2y3532+DZrfISSoppTQNxE5GPALUI5V0jWiMK0f/RH9977uQvYPhb0GGTUuu7iba0T+ViRsJ33QOHIKSxIx6PNTOeeJSbL9CncDg8RRojivMD1+z80/Btv3lp4KXmMIRF9DKziu+P1+2wU2o+R4TlHQwo8S8Dia8HlBZ4+kFyXiz8QdvkomQ8lJyKg9GFf1pRJDm5efF2ZcBMQYnV3FypPB3utSMn2IUjrl9B/T5b2+iSgg7B87Q2sHqBOSfwXTNeQuIi/FkH1wGVE5lcT1wsz0ZaaVX4yAIIZWFkQsTPzHkrm/5qadTCrOma6e01Kwk8vGgzd0xqFAR9C2zLfmXEVSqUR2CyyDpGPA0SgIFVkXKokv2wizBjENZ6FE9PGcNOW4Vc/9AAExnSRBpKtO3ba7c02DiFYuTMb83J4iPrMwnRYi76WsvlT84id46KufzMXMVtxog== 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)(376014)(82310400026)(61400799027)(36860700016)(18002099003)(22082099003)(56012099003)(54012099003)(16102099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Ro3YChHbN0t4Pp8p8YQtFnd6TfKzUVufOu6CxEOI5xyEfxM3apRSpA8WR5Tg7iQkoDz2bP3/hH8EWrCV0pS7BGPJ5iMC5QdjGRzsZbsdckGWuNHXd2P4G9rDOpeHtdtDfFJ7t+WMTISkpV0HcgQr0yvFd6hvR2XWCQavjKF7Sh4F9sumBHQ1frQJhwneOu4ASaO2XvwMK7gmjb2cDTQB6+2zY0RNTe6qiqcuCT+n7CHe+dj5Xgf/j7+ADhFlb8Aw2C+rIUkdmgLrGhMO5BJ318YvTfvDc2BdrJEN31a269QhcaLyeAt1dGT98NTflkggS6tnIJzOXmAK2xmuwLCEcOq45Bbk7BQC8wrx34fAc9dXAlUPgQ7sMGFukvjs1Nj+JnfjojEXh04+2yvVD60bsxAW3XlDPOHcST4rRna7M7kgXiSHmSxUIcm9bhmEP+bS X-Exchange-RoutingPolicyChecked: ujdvDb99Vb7fB5fFI6SJ8g3k00CEthuR5xwi1LGA+P7BZCFIGKY7MP0vwfoeUO0qTSopJyupK+ejNo9U/6rB9m+87UpINq4ql8IKPPV/As8Ecw2dK3SJMCchAMjF76Ltu2rN039egJEmI9Sm32nxMcCAscYNw2zSgkl/cXk/0RFE97b2nu17eyXZmc2az9Gf8b1wCl3Grrf7EzbtdsGO890simhPMuxERpzSKh6ImwWdxR11ZE/VkGs4lmfdVXxp4U1oaQ/E5Y4/MT0c+CM2qYdWFPorQ7cuWRCMqIqzf7SfDj0yRg7nl/bb3nibQDzgrU5BbXuYbxAwcbrSHQ6ezA== X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 14:18:20.9418 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0b64f02b-e362-4cad-40a1-08de7eafe233 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-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CO1PEPF00012E7D.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR19MB8367 X-Proofpoint-ORIG-GUID: 7NWe4hIoiSdHEaoqcnp-47t85kSBVgLW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEyNCBTYWx0ZWRfXyUZiniompKhp Q3psThIxKWs2HkQv6pdrX1KTtGrox80ge/GGEUEj/3AUPXc0SDjMrd87PGodK0YRXbnKTAZGtC/ vWV320c4heW+D1yWxCt06b0iCQ0uzLGI/22zWGJ9USYZ8Tq+063y/0/HrXi1FgUIlxJe46S3Rc4 WhYklPDMvFK7VbYUj3UA0zmRsUobHOaoi5bWWoyLbb8ExLE2Xha2qvMOG9F/r83Seq+Tk2Hxq8U tKB4+E6zkXRFKGNjllnXgVqylohY+COayFKnHNv6kb9R7uDAOPJ8v0fxyyJJ666cBGzr+U9WQb7 eIMjxIq9VZSPWK0WkGmI8FopKEAn6MTyLSpHGCZmeNyuc4Q68w4nbxulpTdNd6JsjcbGdUE0nrX 7bkaHnVTcpaQMKUDFJ64JO/2yFk6HKNITVDCkYU9pfenLaVe8twm/v6OzI6/IGpTgrNB7HZc3d9 DsEALUvPPr+WiYS1Jfw== X-Proofpoint-GUID: 7NWe4hIoiSdHEaoqcnp-47t85kSBVgLW X-Authority-Analysis: v=2.4 cv=WNVyn3sR c=1 sm=1 tr=0 ts=69b02835 cx=c_pps a=s29O/COy1YFP/2RSJs/JUw==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=Yq5XynenixoA:10 a=s63m1ICgrNkA:10 a=RWc_ulEos4gA:10 a=VkNPw1HP01LnGYTKEx00:22 a=iX4cTi3TZMoOKdANLEfx:22 a=Dj2-6B8FqX4mGL0U3gbX:22 a=w1d2syhTAAAA:8 a=GLtecoyBIyGoLf17jBIA:9 X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" The 3rd search case in wm_adsp_request_firmware_files() does exactly the same bin file searches as the case immediately above it. Merge the conditional from the 3rd case into the second case so the duplicated code can be removed. Signed-off-by: Richard Fitzgerald --- sound/soc/codecs/wm_adsp.c | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index 79695ead5788..b904d1e1b00c 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -828,9 +828,10 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(st= ruct wm_adsp *dsp, } =20 if (system_name) { - if (!wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, - cirrus_dir, system_name, - NULL, "wmfw")) { + ret =3D wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, + cirrus_dir, system_name, + NULL, "wmfw"); + if (!ret || dsp->wmfw_optional) { if (suffix) wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename, cirrus_dir, system_name, @@ -840,26 +841,12 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(s= truct wm_adsp *dsp, wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename, cirrus_dir, system_name, NULL, "bin"); - return 0; + + if (*wmfw_firmware || (dsp->wmfw_optional && *coeff_firmware)) + return 0; } } =20 - /* Check system-specific bin without wmfw before falling back to generic = */ - if (dsp->wmfw_optional && system_name) { - if (suffix) - wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename, - cirrus_dir, system_name, - suffix, "bin"); - - if (!*coeff_firmware) - wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename, - cirrus_dir, system_name, - NULL, "bin"); - - if (*coeff_firmware) - return 0; - } - /* Check legacy location */ if (!wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, "", NULL, NULL, "wmfw")) { --=20 2.47.3 From nobody Thu Apr 9 05:51:01 2026 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 3C6C42DC32E; Tue, 10 Mar 2026 14:18:39 +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=1773152321; cv=fail; b=Fu56I9s5lFatYoKMHeBbb5KpIIW513xNrInK4IVF6W5AVQ4NV4WuWOQ+/ne7XQoj5TTifKrMM5oE9nYQxvcUujrpFUIxuFms63FbkBbdt9O3eB/MBpHPkM59g0unNlafTktoNUp3fTdL9RV3C3qSuajgWlkFnlRS9SZR7maHuHc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773152321; c=relaxed/simple; bh=RVa4liRSQFjR9DyEU9lYjA9d5wybKTL6vCgbuAd3r2s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=G9hGKSLTJ3W5FUhZFBcbrgl6uS0pS8+gWphPe2ZjHaeIPH78jC6ewnwliYBO4y/5Drr3tbqeLfUpsm4TlwWKmxNiGQriDLUj4czCZ5hdNmBsgXFrzpHS1c4yPUUZcGsKpgqTNdGYc1b2x8PTQfQM82w23K3Vqgis85JIC08ypEQ= 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=menMKX5u; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=Ah/5vcHV; 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="menMKX5u"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="Ah/5vcHV" Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 629Kvbt72288204; Tue, 10 Mar 2026 09:18:25 -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=gSy5NgDEaQZ1apyUvzuaQYURYRvbJHlM95xopGdrJCo=; b= menMKX5uHy0xysJD0nwtVbDrIaqyTuJ040Dbw8RCcO0ysxWpt2U3/Jql6U87m50W 6W5pqJkpAcJ/N9rzXOtXgETadWGpIi9T1QjeUATTMOzlesQsk4Fi9PcWlhV+VLph CyVz/8QIMSNCZpLegSjVNjY83FvKYHMzLKS6DdBchcqj6sbL5YLm+hljuW1QU670 uOn5KaRWSmjvBBIf/R+u6VP019phsppUE3wkx9MWqTwGQP8ZnYbXMH4dtp26wxus 2Y97ndcRp1w0tCnIqt54uY8400lk+Z4JTzlRPnz8qjFEg55rjQam8cttEg7Opbu5 py3lAsokeKzZhdtr8rTAaQ== Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazon11020073.outbound.protection.outlook.com [52.101.85.73]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 4crja4bk28-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 09:18:24 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GP5B1ara4SwI8uu43jzqrfyhb+zymMe0o6ChJslCC/peEG/Vz2ZhY9UKh6AQfwKHrZrLin/1XyaBx86gGCJFmjiCOYMuU+cctJ5StAlSCkRhFA4PdMlJZoC7qDfOW+RThjyTuUPJyN8NCxKxwAgctv37wQ+z7LOLxCIaNXXGG5oyvml/jSBPA2TypOu9ixTR8OIVA95OScuRUEr7obWYyLcz60Hr482mis0CrKEFx9qrm4/PbGcI1Edt2gpByN+VFPTEuRzuNxoXcTyhcsQcEDhtyqfpSGOub2GbblPYCg9J+QCelVfaFPcQtx3DWZWwQObTkant6fvb/ZGROJHyKw== 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=gSy5NgDEaQZ1apyUvzuaQYURYRvbJHlM95xopGdrJCo=; b=awTKnOZHFT8TO7CZxYx0jkwRlkCga76sRZ0IY1XRDSPnIxzDIgTGgSTMRjXvsF5UKbypNoeQjr8xoEPom14iA2vHsNvgGKDGkCFIiYrju1AcPp4by1njX5V79ff/cXjh3x9AT0ILTA4zPXWDFim1LQmnTaxZWfZM9BdYR46c5tAar0N2PDpBjpu2d3F7iokbAzuZ3TLKRyWDirkPtEHam9CkOqS767uVKnHEQGU2Rnrtp5KPGGpcq8zgGfoBhyH1qPCC7N7xbkiWmTM5lcPSqZ1IKChEGdJIAYVOiiysNtVvF5Y3xTG7qtHLK+1SdQi8Q30vGuBtuDeoaQ1060GsyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (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=gSy5NgDEaQZ1apyUvzuaQYURYRvbJHlM95xopGdrJCo=; b=Ah/5vcHV33lIqA6/+0JCE9cSeUS3Yo3zURN7zyZ08RhrC26YcwxTPosVeiPP111Nd4HXGlhj/vAK4awQQT/hMY31Ug5GaLCJq37RrcDwMajEF+LtHNxxPdL//QEYZ9kSo4IZXL8DhLXt5VLfFz7Vqe+LvqZ+mgBKi8vOTuU8CUk= Received: from SJ0PR13CA0208.namprd13.prod.outlook.com (2603:10b6:a03:2c3::33) by CH9PR19MB9466.namprd19.prod.outlook.com (2603:10b6:610:2dc::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Tue, 10 Mar 2026 14:18:22 +0000 Received: from MWH0EPF000A672E.namprd04.prod.outlook.com (2603:10b6:a03:2c3:cafe::64) by SJ0PR13CA0208.outlook.office365.com (2603:10b6:a03:2c3::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.25 via Frontend Transport; Tue, 10 Mar 2026 14:18:21 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (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: SoftFail (protection.outlook.com: domain of transitioning opensource.cirrus.com discourages use of 84.19.233.75 as permitted sender) Received: from edirelay1.ad.cirrus.com (84.19.233.75) by MWH0EPF000A672E.mail.protection.outlook.com (10.167.249.20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.18 via Frontend Transport; Tue, 10 Mar 2026 14:18:20 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id C1E91406559; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) Received: from ediswws06.ad.cirrus.com (ediswws06.ad.cirrus.com [198.90.208.24]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id 94E3A822544; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) From: Richard Fitzgerald To: broonie@kernel.org Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH 06/10] ASoC: wm_adsp: Use consistent error checks in wm_adsp_request_firmware_files() Date: Tue, 10 Mar 2026 14:18:13 +0000 Message-ID: <20260310141817.1871794-7-rf@opensource.cirrus.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260310141817.1871794-1-rf@opensource.cirrus.com> References: <20260310141817.1871794-1-rf@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: MWH0EPF000A672E:EE_|CH9PR19MB9466:EE_ X-MS-Office365-Filtering-Correlation-Id: 3426cc30-160d-4639-6462-08de7eafe23b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|36860700016|61400799027|54012099003|18002099003|22082099003|56012099003|16102099003; X-Microsoft-Antispam-Message-Info: 0tE9L5dnZwhPwgtNNsuNI7+0GgnR0P2V7R6xkwPHHXitKM+EDe6gu3ZuQ84eNgPfXYoT599tOau8I4+yDZ9hfIin0nfYRFt6D1OV+CxfPNUJNeu5Jif1ZyunRNGf1DQlCoyvqHMgQp8l9znhmGe47dz0Ueej1mmD+DysI1fXAlteHSleYBDAnp7O8OIfMOeZ+pi/SPNal1j7pgv7oVeN7RMj892f6BABDi0r+vUQcWz40rQbVzp65vX1KmrxvGZeOMQlE2SopP+xV9hCnlmGeKrHwyDNYE7mlPXHXqoHp+oRVhyu3dht221dTcU9vzOFLqTuLDyF3E/xUAAe+tHo4v2q8dksXAOFW3ICAqCJMThC/C5VOJdXZdEUGz96GiIBoWIDBSLvAvJOESYmtc+yaUMUcrpWRmp8d+DMrGIRz6/1yMIR+DY1lPYHbPgQ/X7SvDflhI5iUlRXciOYDD35w2hI/SjcPYRFMO/k7QkaVpP+11T38kCDgjdlirsijDTEf3no04VhyyaF/js9h/dvgIyGACcRyqBWeF3IC3F6GK4HwyZxVq8v0KfySv9gv6Uz8FlWt4E7wJhG4d9WfHjvDkBzuroBSr5P7w6+94t4PKjZt3KCWXk1oYiSV9PMhAwgkXaxSCbfXV3spk3KUJh8D8zScFuC+C4aCGm9oyng+kpz4c58G8jH+/mL1T9xaeQLS57eo5GLzI7MKvnV9IpIuifqTRDJuze2KVtWzRLrnnFHFHb4OR+BXPQq23PZqlB14+1w3wWqQ95O+TScoPJCWA== 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)(82310400026)(376014)(36860700016)(61400799027)(54012099003)(18002099003)(22082099003)(56012099003)(16102099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Kwq4INd3vv+UXZYyNGVG4Jo27N4rY0g2bD+ne6EmO8Y0XzeczFYG0icdmnphFEHEhxDyJBAiGoRdRVhqM5jfy/dRfKBT05rm73GncRD0T0sv9qYieDAKkiaJJBXySpIh6t0tDK5JJVdRQ3gPgsCUFD4RlBH+DKe6AWuS5vtcoUFR2+ZG89b2gaCeaOcJbwAPj9HENcVNwn6ScVSzwhfLQIexhK6uftKzqWJlEEVnoJDITQgbmdiQZUkQ3tmNEkX0B6C/97y1x8ePgEzW/eGY5jz6nDqOCpIsoqhhoWz9WZD7u7JKOMhSp7Lz3uPb2yBxbTK9HwHbC/I9OGBvDMdnzBkdk6GtIgozoiqc43g5p9IpN81ks2TKRrcWF7lMQRfMrljcpDJzMe6ZHjUiNWGHAI3pNEIw5uZZB3fz5qIeXXz575zOLGcwtpBmNXk6Zauz X-Exchange-RoutingPolicyChecked: Sm+VoJfl0HieAhNNvLxzjCTFhNq2g5g5Q7iGzKwlVGhGnrFntbHwmdy99tMlC+wDHDYa/wjbC1wm7UQqsOI2GNxlHaS4ewoOtPwPVUVRQEKaioVCaX0PixVM6VA239WuBpywkOCF4D8qGo80VSv+HcD+RyXWCZmmqTdBPJuX9atdyh8hurwqfZINW7dVboZXh3JzKUhdRQ1ip3zF3FUZzxvp+FABa4uYXazMcwtEZKFgNJVJbE5zAojE0Q6l1Jn+2VSYzVhA1lQhDmvULxmfYnVkqKUzVo3C5zmWnJzqMq8p6XrrFbv6afqw0o+aC9Bpo06Tz2TUj4hN780iM3aoXA== X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 14:18:20.9892 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3426cc30-160d-4639-6462-08de7eafe23b 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-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-MWH0EPF000A672E.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH9PR19MB9466 X-Proofpoint-ORIG-GUID: UWgnhNCH2LIzboSowdd0Y3jwREsn5sf1 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEyNCBTYWx0ZWRfXy6sb306NiLpw 6D25pLCCnBUHm1qPtVgMNxCT//viK70sNDoXCaC/U2NuB5cS5gucfiUcMTsC3w1wnkx9CljxOyM I7wq5ioJZ5fQ5IKXPxLVhqPrH/vXAXWA0aTxaCjHHmryN2qKrAJer/iu+GfOjaHgzG3diYPqwUo Tq4UHmg/ORlOUd1tmOVHa4pGMyqdRBxvNh7grorZ/aOvMquZ3vjwTBCf79+XuvPMG5te74hWPAc +IOygsu+VP3vqQYswGPRyf+jiNXkICXRJczDJd/rk5cEzLKXAqlHh7Q4eqACegUIa7wI+fk460U 4I4cyQdUsBc2MmHfkCjeYiD8tyKmr47+JcN7trhqTcTO1Snaez9yogD9E2zOI+VfrMXAt9fgCHi fFyTlsTJTb0pFtDb9Nvnf3qbtvwRBv3NZeioM31OmJrFKJSivZvQ3RBv8tkhrhT1xQGfuaEYFsx ydTASjgwh7XHd5SX0wg== X-Proofpoint-GUID: UWgnhNCH2LIzboSowdd0Y3jwREsn5sf1 X-Authority-Analysis: v=2.4 cv=WNVyn3sR c=1 sm=1 tr=0 ts=69b02830 cx=c_pps a=n24abkD4YvNTwWi8vj4pqw==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=Yq5XynenixoA:10 a=s63m1ICgrNkA:10 a=RWc_ulEos4gA:10 a=VkNPw1HP01LnGYTKEx00:22 a=iX4cTi3TZMoOKdANLEfx:22 a=Dj2-6B8FqX4mGL0U3gbX:22 a=w1d2syhTAAAA:8 a=HnQOalp4NFDXykVO3PAA:9 X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" Use a consistent pattern of error checking in wm_adsp_request_firmware_files(). - The integer return value of wm_adsp_request_firmware_file() reports unrecoverable errors, for example -ENOMEM. - A NULL struct firmware pointer is a valid result. This not an error, not all DSPs require both files, some may not require any files. Previously wm_adsp_request_firmware_files() was using a mix of checking the return value and checking the struct firmware pointer to determine whether a file was found. It wasn't checking for unrecoverable errors. Signed-off-by: Richard Fitzgerald --- sound/soc/codecs/wm_adsp.c | 92 +++++++++++++++++++++++++++----------- 1 file changed, 65 insertions(+), 27 deletions(-) diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index b904d1e1b00c..69e573507df3 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -753,7 +753,7 @@ static int wm_adsp_request_firmware_file(struct wm_adsp= *dsp, struct cs_dsp *cs_dsp =3D &dsp->cs_dsp; const char *fwf; char *s, c; - int ret =3D 0; + int ret; =20 if (dsp->fwf_name) fwf =3D dsp->fwf_name; @@ -791,15 +791,17 @@ static int wm_adsp_request_firmware_file(struct wm_ad= sp *dsp, } =20 ret =3D wm_adsp_firmware_request(firmware, *filename, cs_dsp->dev); - if (ret !=3D 0) { - adsp_dbg(dsp, "Failed to request '%s'\n", *filename); + if (ret < 0) { + adsp_dbg(dsp, "Failed to request '%s': %d\n", *filename, ret); kfree(*filename); *filename =3D NULL; + if (ret !=3D -ENOENT) + return ret; } else { adsp_dbg(dsp, "Found '%s'\n", *filename); } =20 - return ret; + return 0; } =20 static const char * const cirrus_dir =3D "cirrus/"; @@ -817,12 +819,19 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(s= truct wm_adsp *dsp, suffix =3D dsp->fwf_suffix; =20 if (system_name && suffix) { - if (!wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, - cirrus_dir, system_name, - suffix, "wmfw")) { - wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename, - cirrus_dir, system_name, - suffix, "bin"); + ret =3D wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, + cirrus_dir, system_name, + suffix, "wmfw"); + if (ret < 0) + goto err; + + if (*wmfw_firmware) { + ret =3D wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filena= me, + cirrus_dir, system_name, + suffix, "bin"); + if (ret < 0) + goto err; + return 0; } } @@ -831,16 +840,27 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(s= truct wm_adsp *dsp, ret =3D wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, cirrus_dir, system_name, NULL, "wmfw"); - if (!ret || dsp->wmfw_optional) { - if (suffix) - wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename, - cirrus_dir, system_name, - suffix, "bin"); + if (ret < 0) + goto err; =20 - if (!*coeff_firmware) - wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename, - cirrus_dir, system_name, - NULL, "bin"); + if (*wmfw_firmware || dsp->wmfw_optional) { + if (suffix) { + ret =3D wm_adsp_request_firmware_file(dsp, + coeff_firmware, coeff_filename, + cirrus_dir, system_name, + suffix, "bin"); + if (ret < 0) + goto err; + } + + if (!*coeff_firmware) { + ret =3D wm_adsp_request_firmware_file(dsp, + coeff_firmware, coeff_filename, + cirrus_dir, system_name, + NULL, "bin"); + if (ret < 0) + goto err; + } =20 if (*wmfw_firmware || (dsp->wmfw_optional && *coeff_firmware)) return 0; @@ -848,19 +868,32 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(s= truct wm_adsp *dsp, } =20 /* Check legacy location */ - if (!wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, - "", NULL, NULL, "wmfw")) { - wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename, - "", NULL, NULL, "bin"); + ret =3D wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, + "", NULL, NULL, "wmfw"); + if (ret < 0) + goto err; + + if (*wmfw_firmware) { + ret =3D wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filenam= e, + "", NULL, NULL, "bin"); + if (ret < 0) + goto err; + return 0; } =20 /* Fall back to generic wmfw and optional matching bin */ ret =3D wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, cirrus_dir, NULL, NULL, "wmfw"); - if (!ret || dsp->wmfw_optional) { - wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filename, - cirrus_dir, NULL, NULL, "bin"); + if (ret < 0) + goto err; + + if (*wmfw_firmware || dsp->wmfw_optional) { + ret =3D wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filenam= e, + cirrus_dir, NULL, NULL, "bin"); + if (ret < 0) + goto err; + return 0; } =20 @@ -869,7 +902,12 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(st= ruct wm_adsp *dsp, dsp->fwf_name ? dsp->fwf_name : dsp->cs_dsp.name, wm_adsp_fw[dsp->fw].file, system_name, suffix); =20 - return -ENOENT; + ret =3D -ENOENT; +err: + wm_adsp_release_firmware_files(*wmfw_firmware, *wmfw_filename, + *coeff_firmware, *coeff_filename); + + return ret; } EXPORT_SYMBOL_IF_KUNIT(wm_adsp_request_firmware_files); =20 --=20 2.47.3 From nobody Thu Apr 9 05:51:01 2026 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 424422D949C; Tue, 10 Mar 2026 14:18:38 +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=1773152319; cv=fail; b=tYFSKfIur+4XHo6Gy6mjhCfKjnIoX67ge22a7v30blgW6VA1M21euQo7jPqOsOLdQMySDruMGDRkX78euLxE0jCrI+9DM6330xCTuOQDZp27zh9QZfq3ZEWll/1g80QY6WrnDPoFfDO3FJRQLZqDROS6zyuofZf5HzQYkgtXJ8U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773152319; c=relaxed/simple; bh=r6s+3f73pk2whHJmyAp7j164bFlbDi9Z+27u0AnqL5U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=f0zftJgIpnzinyJkgM3R8aLo3148cfWAuG1tal8B7uJyXIs+kGJaUNifiXpGX6YFqx0jsFL4NvCJkyyosW0ImA3/nf5FTC9QxTzf18mLqZwFHmYKEx9S7jzlwyq7U+Nv41Yjipv2DvaXWdcxEgAWCPF8UKmE1fbJdVGOu9aGjAI= 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=Mkq8+t9g; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=IAg0OTls; 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="Mkq8+t9g"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="IAg0OTls" Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 629Kvbt62288204; Tue, 10 Mar 2026 09:18:24 -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=ZLYPvZHOOTsQqeYY2rsz/SNxl9UboSqKkgDtDdA+jxk=; b= Mkq8+t9g6h+q9q3jMzP2e3xKibRXhrH5GmjCgiOPMhYWS6iRkUYIPicFV0M009Wn BgRVtHMX1Qf9OwxulWIIkyYiZnJBa4svfktFjsDCu9Wd6gaMduTqsR93dBK7YcGn reNqPTKz+FfNETiThYUbbFKzKCjPX0quw7kTy3AnKQPTZAvBUNxJecMG19mYQhTC 4IZyasKwqtwg8l4G8fpgnKXlbmubTbpFpelVvo5WRxsSlxRR643btwuFMaNfRRJn QrptT4U9vI5QWeZ8aB1ga9XvaCzvtKOX8sx3spTVUSgwLlSTQV5bPS9FbDYDbCTB SZWLAJoOk3a6pxVaDy9yKQ== Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11020118.outbound.protection.outlook.com [40.93.198.118]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 4crja4bk27-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 09:18:24 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Yu90zYAiqhvhVBNBzoA4cZWCFrANE0z5jN7cryWe1hRk4uR84DRLRFgil0ktzaD958GzDzHbUanje3A8cWGjnvg2+b52+vtw6fcb/ZnBooIIeBhyU5XNmPcYnIOajztMPWEPEtEOx8ZcsD4PC3hFYHvr1QOU+smuKQ8pMa/3GoWKzIebtkZmv0tXakSRRcPLS942tZ24cAriW1Bv4gPbzonDYW0HaJ3wjRBW4ZPlliTr1r6e2sxzqjpwwGwV6+vI+aSNLtaTDG9adpKmY1q/+HCnaIj3Rg4aSkFglD5RO4ykHi06j00uRHwvS4KjTfvDmNeOykSKbcsERKYBJiSNWA== 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=ZLYPvZHOOTsQqeYY2rsz/SNxl9UboSqKkgDtDdA+jxk=; b=CB3+BaBU++9NuhaPtrHRb7AIbp5N7UyFPCG6nUiiZXLxqssusxrr+yLPjA4uByjig+6PTBsVmdOJeGq49MBsmsn/OlMpjcYXjipL69EWAyeeO8Kwk0gxi+P+oMshu6FUlKMMj52gzt/AYkSPo7Hn3aCQetwnYIY0Yv0ckoSXW0KK+gaL2HrIBuN7abbtVpDg11BbR/qFhM9Lu7EUkpU1yDskVs5DDvmlvK93mJP5l34But75EhKu29ZfQKhWB5qa2leyPwvW2hBtQWMS0fAJF/Vep1OO/gERvUFJaJkrF1jJ0XEisThJgGOuAnLTjPp8d6F88cOzpGUI6RSEnqsgGQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (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=ZLYPvZHOOTsQqeYY2rsz/SNxl9UboSqKkgDtDdA+jxk=; b=IAg0OTls4NWfsyTpqgrhBCW/GcY9ToUVIWE2X4palNeBJUi4Dg2amYZiNXBTXK+SXRUx6K+J6m5PjfFGjLQ/Kbug5XU8kiFDjGMhekkXumQfcMA90LyEgeBUbg7iYT1fyiiMHuKjup/T1UJTR90wpol8cZCVKpIpZD1xcf1LrSE= Received: from BY3PR05CA0044.namprd05.prod.outlook.com (2603:10b6:a03:39b::19) by CO1PR19MB4982.namprd19.prod.outlook.com (2603:10b6:303:d6::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.11; Tue, 10 Mar 2026 14:18:21 +0000 Received: from MWH0EPF000A6731.namprd04.prod.outlook.com (2603:10b6:a03:39b:cafe::f0) by BY3PR05CA0044.outlook.office365.com (2603:10b6:a03:39b::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9700.8 via Frontend Transport; Tue, 10 Mar 2026 14:18:21 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (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: SoftFail (protection.outlook.com: domain of transitioning opensource.cirrus.com discourages use of 84.19.233.75 as permitted sender) Received: from edirelay1.ad.cirrus.com (84.19.233.75) by MWH0EPF000A6731.mail.protection.outlook.com (10.167.249.23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.18 via Frontend Transport; Tue, 10 Mar 2026 14:18:21 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id C6099406578; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) Received: from ediswws06.ad.cirrus.com (ediswws06.ad.cirrus.com [198.90.208.24]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id 99D8B822545; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) From: Richard Fitzgerald To: broonie@kernel.org Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH 07/10] ASoC: wm_adsp: Convert '/' to '-' when normalizing firmware filenames Date: Tue, 10 Mar 2026 14:18:14 +0000 Message-ID: <20260310141817.1871794-8-rf@opensource.cirrus.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260310141817.1871794-1-rf@opensource.cirrus.com> References: <20260310141817.1871794-1-rf@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: MWH0EPF000A6731:EE_|CO1PR19MB4982:EE_ X-MS-Office365-Filtering-Correlation-Id: cec8ef88-d684-44a5-8b19-08de7eafe243 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|61400799027|36860700016|82310400026|376014|18002099003|22082099003|56012099003|54012099003|16102099003; X-Microsoft-Antispam-Message-Info: KGkzYIqNk+zo85AGC8ZZJ7o981NYVNfOpUyQOwh2EBU6pGRXgGBb5j+2WGTloolL9WeLwFdH509+qi7WBKYahnHxJK90AiPGnsxO/owSHu4KR98RWV7Inr7rrcLsyoGYwZTXooAcw88RJpz7we8DfzoE8yR5rkddYDiV9P5bF5FSifREY2tusmDbBh58EZFoXM0Lj+s6JrxrDqrG3srIK5fbCAhNdS3GB1q4JrwWdcHYTAlgFQe2AFpF7XGylz+4QKfs1Eu7mFDz+13OtSVUk8jby59lVwzlFJoMKfFkmEZxtnxayAiUaL7Qc2BsZGUyrr7Pwfscrw/FiO7HlB1srMnWcTmiOo2fggLY4G8TRC3y3GKYUPnxRMVM6J7eiqcXuQjlTBHJ5EgTyrFESvcml+Y+t4KfoMxpwNJXe8XutnEIFM4jNofFQF6j6dZuAbAOoQq9BP1AjylodUvOIk1Ym8o3XFUr6nBqU8GUoaxW5n4jXZ3dLDLof2EH1PFopspu7qHLBX0qSHnsSbxkcFpm/f8SKfWRUTFCEJrPFtvk5qDWEP+5u6HR8TjuNElOHrCdR2Y6Co4BETCnF7/niwUaQAaX+5UleM99XUtuCZvelQ7hWQL5uStUQIqqkr6+Cx5HzgYz0xFVedKM5X+Q/ILG0xfcqQ6Lb+9lP3KmrPmRTQI3o8w+5qwhE3B2PdB7YN3kBhs23+CW27m98SuTOm1CvuMvHauRNXwXED76t82KCtgsRFsX5xiPbnKDZBPRmd+cn3JpE2XMtH44Cy7xa4zG1Q== 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)(36860700016)(82310400026)(376014)(18002099003)(22082099003)(56012099003)(54012099003)(16102099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: To+TY79OcsmYFCB+h4jVLVhxYqjxE+gsQQG8eoKv1a6uXJWQqbPQgWJUFC91UvlkJHQdXvMllkhYeNUogs6i9+EmENEDXkX21LA2Q6+khiRC3SL8KMtilAh7F8R8kilbX60bnRxE+YvuiaLqycWsRUiDpwa+KsY5dniIyZn5PoBHCkjKybTfEUsQOu7oCoddIUIhxCHask5uguznDmjW8Kd7XpdVFrAAbV4wbsUKluSVcmogfTzxYe6Ao+3fkzChRy9mW/6Ayr1Mc7P9zaZ/TkFk6jdwnzxW9ex4KzjgN+XhBsX2UkwC5oso0Bl7SvpxxMZm88MgDQU0JhPeBvcdwXil5yy5c/BC1AYGF7ZRZXJQhhiop/FkiLamAYKtNst6RHawpv6OsklqHyhBDpKjB8wsSUmr9+un4FnoeWG451pxuy9g+mv302X2REFV3xDf X-Exchange-RoutingPolicyChecked: OzA4rf9LMeeC4b01LJUGy+W3NowQs2aorDVaURyhs+xojpap4ixV1T4IKN/2FUGH6fI2r3oXooydN/iRGeSLOYn9KfN9kuoDpT5fT6LKyx+YXNxSq2rqNhao/PhKdYtQK3+V+R+MU0ytCETRHTDI2VUbOyd5spadCyDlZvyeWPYgmwWMv0soBIzu1CnviXnTMDL0LmAbXhRUzGcD8aYRcKG9SjUHel7DEiDmoP4hnhgJsQM7OpD9Nh/vdlyT2hMgUo2VfDAruY1kOFJCeVn2Z1g7sWMuyUS83dp08JdX6KMpSE/3Y7HffZMVR0ZAJe3n+rpoNhwIdRZL851t8MiQRg== X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 14:18:21.0394 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cec8ef88-d684-44a5-8b19-08de7eafe243 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-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-MWH0EPF000A6731.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR19MB4982 X-Proofpoint-ORIG-GUID: F2UvbBtSurJdprNr72YSaHpjNW0W4LSm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEyNCBTYWx0ZWRfX8f9sTudCGlHA 6ZyQXC6RaV/VpHSFyHD6MWTk2DnfEmtj2lo6gZ2kawRwQlm++K+L5kgJwFHzs9H6z8VSzJnRuz9 bNdKEL0L5MsDg48+itiDz5K4/t2EieoE/k3MvkpnMla/sWS5Uo3MnCo/hQzA7kuwWCU5Bbt7N/W 7r6BYF1V1bvC8pleF8FVwC68cvHndxaM4A9OeZQnUMeVKjkjXyESQr0W5rh2H8OjktgcHIj9WRM 64HD5/w9tj39TKrUQPTwQ3DikE6raTPa7Iy8hL6ld1QFnIuKd1qACJya485vTaV+XEWv2DWfjr/ OLrost+A/W/bFofGoMEDYC/4/bbop+4fyifFa0bR/UnNkqGNxsqiSmu6FpmMXoPjR8t1FZWnceq vlovtNhgsHLtU+3DqKVRbUi851vUItbHz/IWKk/CYFMK/1l5XqHB2YcXKTrMJLG88cFK+kSIdsh 3V6sgaPpv/qIK8tG6kg== X-Proofpoint-GUID: F2UvbBtSurJdprNr72YSaHpjNW0W4LSm X-Authority-Analysis: v=2.4 cv=WNVyn3sR c=1 sm=1 tr=0 ts=69b02830 cx=c_pps a=LryC7IEqKcSdoWktnkYnkA==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=Yq5XynenixoA:10 a=s63m1ICgrNkA:10 a=RWc_ulEos4gA:10 a=VkNPw1HP01LnGYTKEx00:22 a=iX4cTi3TZMoOKdANLEfx:22 a=Dj2-6B8FqX4mGL0U3gbX:22 a=w1d2syhTAAAA:8 a=cAk_rfhBCTFALOCBzuUA:9 X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" Don't preserve '/' in firmware filename fields - convert it to '-' like other punctuation characters. The code originally normalized the entire string, including the directory prefix. To prevent breaking the directory it had to preserve '/' characters in the name, but this meant that the system name and ALSA prefix must not contain those characters. It's trivial to skip the directory name prefix and start the normalization after it, and that means the normalization does not need to make a special case for '/'. Signed-off-by: Richard Fitzgerald --- sound/soc/codecs/wm_adsp.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index 69e573507df3..034766760c86 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -776,16 +776,15 @@ static int wm_adsp_request_firmware_file(struct wm_ad= sp *dsp, return -ENOMEM; =20 /* - * Make sure that filename is lower-case and any non alpha-numeric - * characters except full stop and forward slash are replaced with - * hyphens. + * Make sure that filename after dir is lower-case and any non-alpha-nume= ric + * characters except full-stop are replaced with hyphens. */ - s =3D *filename; + s =3D *filename + strlen(dir); while (*s) { c =3D *s; if (isalnum(c)) *s =3D tolower(c); - else if ((c !=3D '.') && (c !=3D '/')) + else if (c !=3D '.') *s =3D '-'; s++; } --=20 2.47.3 From nobody Thu Apr 9 05:51:01 2026 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 3361C2E11A6; Tue, 10 Mar 2026 14:18:41 +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=1773152322; cv=fail; b=b4FYAg/NtIOJMwNAdD4+Jp6ry+Xmr0rLA1NJ5lgzYAJu+T8vSX89ufSSbWX8IGbbUuKzBO7XmD2EOyFz8D7sWLwwjTA8kqrwMgxHsnFvq2AfGYxjKopdlMIjnBj6rDBEG+4w34zlOwtnMrubJStfBGSamD7rM0k9ky1jDZ7IbRA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773152322; c=relaxed/simple; bh=1SOk4yWKjrd1gqKR/S0/eW2Dk1wRAcwZDCsZ4PoE6ww=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=O3+7AEbVT90nObwrFttxkPtfDAA6Ist7oX9RRrxhSDzs/Wuul+Z6A8XPAx7Vv0XO2sFwXLeG9pI54F3ujB6xuQJcyW/p5JPqjnPhAhEeRunk4oAe5jgF6s8wS2gBbfArOwViY8Z9yCEOZsqJw1NQQbwhQE0MdlcXfwdtl1W+ep8= 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=MfFb5vkh; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=vTgQyiKO; 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="MfFb5vkh"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="vTgQyiKO" Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 629KwXJE2289610; Tue, 10 Mar 2026 09:18:28 -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=tDT5S2JAONkN5qQa5aaZGdUfXkh9ODE7THwq9uQ5vKc=; b= MfFb5vkh0VqL7gBrbBBKMeEFxuT+Ly5EkP29AzohDFSpfWOBuDTQ/QqShh9pmEr+ mhM2NCLWak4VxSsjyK9+iyCwXatPtJgOUzn4Fk940sYLxMaiYe7jvmDdcAOPst7h XBGQB6Fk64vBc/asfQhNdRRXJqzGMiNL4vTpT4bbvIS5c5hrr/NRpPCd/OiwrZaD e1JbrAH0G6ag/XMZiFrgiZyfVvxsRK5RwKjTshoOzsc6Fl7+iLfdUQiCZBaXjSzP 9iLgVthQzmVaYzKlbifycijCVaXrLZuYQfIdyaPJ/tRmlchq/27h67ybolMMkeWs Hud1nYvBhhmK8SBgqHYoyA== Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11021082.outbound.protection.outlook.com [52.101.57.82]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 4crja4bk2g-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 09:18:28 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Svr57Hrg/vWfnpYjU6dpwP77fi/EzlcPNTuSNb13oTaSpFKOEGL+/xq38cHsa9wWaHM7R/SRCu5g2JqjWxa5s5/otwhs6ZLWtkyiayprx45udtixIbWXVfdRmgUkLz0+VOSTNs8DLGYcBkPlXITxvM1w9z1MqKTKgwpcAaWaLJSBPOwaSGYY+MspjfCHI1QgbKkuzOlZEb8yoh87c00utrGjL64qJIFF6ublMMAIOzdKRefp1o/kzCDRj+io7ikdwZXtH9m4yRbPTz51uFiqWedil8LUfnF8XLyyWHgXP9J8i47twd4hsXQIpCB7qvlZKLDHPTyrdXo/4PBWDwDj3w== 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=tDT5S2JAONkN5qQa5aaZGdUfXkh9ODE7THwq9uQ5vKc=; b=gGEZdVmJh+XKQwwUffI+P6sitx0JGp9W8GHif5gV/oYnqZQvtVMYk+Yo4VghtMV2GBztDpA8wqFUSYcjdFpE4znvOF6t28iW9P8MNOnPHT+US5MFpE72NYnzNH6dskzQ7x6e2E1Yi2lFyQpZu3tuDgSffRM/5qoY/CMyPO4JIlerWRL3aMTtJxDx+nd4MseOYbQ47OLi6+bX6aRxG0yl4KeKGUrK0RCWCdebos19NcNWwRJfbOKdz398EkFDvWyKVdiPvO1X1YfmDklNC9YKxqBrMndXCKzgeONfSa7a/6AT6EkOhmV/824H1fGkPqy+bWPNWEsIYFWOwTEzVp2BiQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (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=tDT5S2JAONkN5qQa5aaZGdUfXkh9ODE7THwq9uQ5vKc=; b=vTgQyiKON7OW3mY4JLw4Fm0ZcrxaISbVSSRBY3hPTYWxDsqqyFOvJDtaR2CHprf3hmXU0ifoiEfpniUqz1LxwOttYgyM35h0wn0dkRXNG7YtQIkrBEqCYjiAyhvn+hkL591MLh2AN1uQbVQlLFcyGJtTtmqwOUNM69Ik3rpJqvo= Received: from MW4PR03CA0003.namprd03.prod.outlook.com (2603:10b6:303:8f::8) by DS0PR19MB7246.namprd19.prod.outlook.com (2603:10b6:8:13c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Tue, 10 Mar 2026 14:18:22 +0000 Received: from CO1PEPF00012E81.namprd03.prod.outlook.com (2603:10b6:303:8f:cafe::43) by MW4PR03CA0003.outlook.office365.com (2603:10b6:303:8f::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.25 via Frontend Transport; Tue, 10 Mar 2026 14:18:02 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (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: SoftFail (protection.outlook.com: domain of transitioning opensource.cirrus.com discourages use of 84.19.233.75 as permitted sender) Received: from edirelay1.ad.cirrus.com (84.19.233.75) by CO1PEPF00012E81.mail.protection.outlook.com (10.167.249.56) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.18 via Frontend Transport; Tue, 10 Mar 2026 14:18:21 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id C7C2D406579; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) Received: from ediswws06.ad.cirrus.com (ediswws06.ad.cirrus.com [198.90.208.24]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id 9C327822546; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) From: Richard Fitzgerald To: broonie@kernel.org Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH 08/10] ASoC: wm_adsp: Add KUnit test cases for '/' in firmware filenames Date: Tue, 10 Mar 2026 14:18:15 +0000 Message-ID: <20260310141817.1871794-9-rf@opensource.cirrus.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260310141817.1871794-1-rf@opensource.cirrus.com> References: <20260310141817.1871794-1-rf@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: CO1PEPF00012E81:EE_|DS0PR19MB7246:EE_ X-MS-Office365-Filtering-Correlation-Id: b6b54789-979c-4643-19fa-08de7eafe250 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|61400799027|36860700016|54012099003|18002099003|22082099003|56012099003|16102099003; X-Microsoft-Antispam-Message-Info: yZTufVlrYACvyy6fsXF/WqQYVUUZmP499PFqmr0+5B+Xb25cc5RYfMP2jWYstGJAsSL6TssFta2LaUPacjmR5aNHQWzKxZ5EO7J9QkfjUqeXHxJwb4xAsp53Y8n2VfWPsaQRKTiJVUxeehgrgS3aAYhekP5eHl0JkopZFSaGK0JZTvRJ68q2goABXw8Qg1Cur5SkGFcxbOuKymyU9hGC0uMTEh2vpDRIwgsWNFhW2Z46PQ1rRN0EEgX8q1IzrjxtS0nRsq+YOmQHMm5U1srPlm4Y5kd8B6qzwd7YvfuvDX+vMmveRy4cPDEAjOwsgvHU1xAymos2zRpcEukFIvpM+vQIfk2qzZijAitLR+HybErfrO0A5XiXmQ0QSPNZyqzkhC8ZqtCbpwgdKLbQ9BcQ5pnXK7oQJVnXOjjR7PgWay1d9vcWpTk7FDvuhbJGSo+WhXDDJwo6/uI7eBbpEK/mQ+dycAYk9c/HhiqE96BEQ0k4yL2HXOpb/0z8prAgpPmAUFFURDl1l1uJBBj1lVIiNkTYzD+I3I0PN0gtO3MMxNfqF1crY0t/9ItgOR6lTXYQ130xJEgaGcb7JB5voUHQ4s+tvKUryBJpHBfBVbCwkOm0H03mffaqb0h7fFLm7HEBdX4Px3ORKzPfvvFcStf22ip96qGh2FaP7/zs81oDF8qKVbIvYzUVN90pdplvHIiUvy8ogeCEHRfazsA82HiFn+X8C5rP6e32ceIUHs7P0/2eo29VD511u84LR448Lnkhc8NaLJt6gMIkJQlRuki3Sg== 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)(376014)(82310400026)(61400799027)(36860700016)(54012099003)(18002099003)(22082099003)(56012099003)(16102099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZvdqksLAli9Jo5HsS6eeN91MErNkFLYmZodTsMPi++hzZR4UgEQUxFcNqKpUTvyFzl35HI/KRgEmiHCb+xzkPEZgKSnEHBbcPWdCdQSbc4OOZVWiwVRV0mGqAnYJrKui7Gj6pOQB52eZP8CaecMT8dxqGnpc5UqKmdKsNo2URfnNTT3bzb8Dqez8RxiZi7oB9Qrrh2r4jGKpWZUEnxUw/dGZchHKX+8TCVK3/g4PXQsN3YEv4dpX5eb9UP36WSpCo4vDdGRHzzxTaQl6owj0V6/Tzdf6uGkNPch/eOuSFcVy1KqhCmjQBbOFPCvqKj5L8BMhuV0K9V2um80WeRGS/n+Jm6b5XRDehx12bJi8xzQLvFZu62G577u1Slef+s3uqVJg04PEIaqS0UWe3uhsNEX6m6Q1jdoUU7xJ69tQcPds6T0Gaj/qM2fe+BluWfhM X-Exchange-RoutingPolicyChecked: D2xjwKHJImch7LRpCAXauJCqgAbG53roT++O7kVfB/PHzRn56Tq6KZnORThhbwvYDB4LIYbt4marG3TxCO8ueKxx5a+9EOp9td1ox5B/t9WQSyDZTZvifJOiBJ+eisHIDcJjFNOpgFZvMlyqJp+ZVTHlMbM78YC7huNKYzDGW05EsVcFH1bViUEZJzqKZ5/og24rifi5tX0ZEti6WrMhWQ1YL0yzpBANdJ6NXXC8GpCBT43zp+TYrdTNMDkOZA0oC1/oK7MMTnT7uBKx2a5bGld2X9biZ3n99a3imMT/coacTnHd/QlGBWhPm2iMXRGogB+fK1uNJMJ+NJKv9SdaPw== X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 14:18:21.1251 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b6b54789-979c-4643-19fa-08de7eafe250 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-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-CO1PEPF00012E81.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR19MB7246 X-Proofpoint-ORIG-GUID: 5P30-auquksHS_xeeI8jSxeNfmJBoo_o X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEyNCBTYWx0ZWRfXyxLAm/x04Kqn 6nlnGew1eNS8mANXrB0jaGMmmhnH/tSW5GPkMfJ1O/81k24Md+v5h5xhAPPv/POtAbu0DC2csb1 HHptV1Om9Uc95AfvHt6QLS8Zk6s1QZ/lN4nyZCj0tdmdDtvoe0HVhRj7eyjNOwq+QjQcK0N5hg+ h+FAYKcGvgMMnI9Uy4BEz682BPXicxAF5zO/At1GsR99ZxFR0d2CSsPwJtC7AhsTvBtQJaFzAT9 nH8Ye6O623zL1CUvw9h/Vw7fhWOO6Xu4NLCNJdvJ9yjSTqa0/wZD0eb9rLYHzFyGWJWEGiWcksu 5r07DiaCWr+iIl/KTqs/+pu1ORUCxaGpGbg2ej3HC+nmZHL+VsJRRAxNkNJmc5HzvlsvJJDjBdp QCbmlxf5NISZUAufm4DhHRHm3TixoDyyD1z1HHJRDul4NoJv4lpK4jpihHZhsEuKBNgBkJhnrlm MVZxVj8ENMOwOKyfMfw== X-Proofpoint-GUID: 5P30-auquksHS_xeeI8jSxeNfmJBoo_o X-Authority-Analysis: v=2.4 cv=WNVyn3sR c=1 sm=1 tr=0 ts=69b02834 cx=c_pps a=ub9VQ7IHc6Y/4yCKmbqoEA==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=Yq5XynenixoA:10 a=s63m1ICgrNkA:10 a=RWc_ulEos4gA:10 a=VkNPw1HP01LnGYTKEx00:22 a=iX4cTi3TZMoOKdANLEfx:22 a=Dj2-6B8FqX4mGL0U3gbX:22 a=w1d2syhTAAAA:8 a=DjHVjw-X5isnz-IzJVsA:9 X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" Add test cases that '/' in the system name or ALSA prefix are converted to '-' in the firmware filename. Signed-off-by: Richard Fitzgerald --- sound/soc/codecs/wm_adsp_fw_find_test.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sound/soc/codecs/wm_adsp_fw_find_test.c b/sound/soc/codecs/wm_= adsp_fw_find_test.c index 556221d38a50..11047851fd80 100644 --- a/sound/soc/codecs/wm_adsp_fw_find_test.c +++ b/sound/soc/codecs/wm_adsp_fw_find_test.c @@ -949,6 +949,13 @@ static const struct wm_adsp_fw_find_test_params wm_ads= p_fw_find_normalization_ca "cirrus/cs1234-dsp1-mbc-vss-vendor-device.wmfw " "cirrus/cs1234-dsp1-mbc-vss-vendor-device.bin", }, + { + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "Vendor/Devic= e", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-vendor-device.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-vendor-device.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-vendor-device.bin", + }, { .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "1234:56AB", .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-1234-56ab.wmfw", @@ -997,6 +1004,14 @@ static const struct wm_adsp_fw_find_test_params wm_ad= sp_fw_find_normalization_ca "cirrus/cs1234-dsp1-mbc-vss-abc-cs1234.1.wmfw " "cirrus/cs1234-dsp1-mbc-vss-abc-cs1234.1.bin", }, + { + .part =3D "cs1234", .dsp_name =3D "dsp1", .system_name =3D "abc", + .alsa_name =3D "Spk/Jack", + .expect_wmfw =3D "cirrus/cs1234-dsp1-mbc-vss-abc-spk-jack.wmfw", + .expected_searches =3D + "cirrus/cs1234-dsp1-mbc-vss-abc-spk-jack.wmfw " + "cirrus/cs1234-dsp1-mbc-vss-abc-spk-jack.bin", + }, }; KUNIT_ARRAY_PARAM(wm_adsp_fw_find_normalization, wm_adsp_fw_find_normalization_cases, --=20 2.47.3 From nobody Thu Apr 9 05:51:01 2026 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 5215940DFC5; Tue, 10 Mar 2026 14:18:37 +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=1773152319; cv=fail; b=YvTIXFs69zlPfpqAJBIjZ1X4xmhg9QB6iTeAYGfTVLdz2HZP4jwAHUcZWcZ2fgP+qU7Tr04f/DL2VPinbIkhoduywwQIPzj8DC+2D/VMISWVTWu4RdodgYktpdueW73J3N5cRWTX5TOrsy2BPVHOUSWLszkHahcz4d57PmqV1zg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773152319; c=relaxed/simple; bh=5510vXpIFy2v0i26ppGS1v/QkvRcv4jKqT2kViw26bg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mXFXN2liMaBpSo064Svt5/qpnlrWuAIENTfShGvETDtq7/EM7WWkRmgFgvGlQc0LNsMYlZ+WVPptKI9IMFGwoCX34g1+ZN2sGS0P5OhebKSx1QJwqN5Vi9unA6k32/Mt7TLySn+sMnsp1CZZbng7DXZTxy78/CHzL9gQRFm+FpQ= 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=DOlJ3uKi; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=LsNGN0A2; 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="DOlJ3uKi"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="LsNGN0A2" Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 629Kvbt92288204; Tue, 10 Mar 2026 09:18:29 -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=7TSTHxEGAxcJvxYJEZzyv71dG8Vq8czP72cjYZrygw0=; b= DOlJ3uKiuG9E9dpQIw1XtGWO5nrRY0BhxRNbhOw7zaE/C67AOtalU16u8eJz19yR nT+vAenQXTLhkbKVpstAe0xMj0qkLpWizepx/Ms9v5no100a+PMiBYgbga7wdU2v JUXR3BRY6/kmZj6ttvJvMPH0DvqJyVfoonKdZiOF/jFef9LPzYCMRST4qG9k2WcD Ii1osmc0C2WacxTXR9q7fgVNy7uzIaVmZ16yCqyMEnzKDYs2ig5tf0DMZKFzU5hH hiBQBIc2Gqgo0ZavdK7KT4H6hAgKEG8sZobPehuCNwalC7q6vj2xqkFj28KNqqBT IX3LmsZ1WcKlp1QxqzjsPQ== Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11020125.outbound.protection.outlook.com [52.101.56.125]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 4crja4bk2h-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 09:18:28 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LE9XdHonO6PGG7SDcT2voBejI+KEgjeJV802jRkE2YbUh7RCCa3uX5ll6HxFoskbrMHSCNJXOzQ11ovx3wcbSt46EE3N3Lxr48QaX85Sh1R16Z3loxpJ5S+B9C1nRJufzcF+eVI2sM9znuf7WFApu4dQZaLYZf8pTcrCeNkBSNKSglCrD/ecxzB6dxYX1rhYlrYgkJwbr2aG4iiDGrHKr1y3Wu1iMVqueUDcJ3aB6NdZmm7Bc5b69SbDwW8zqJQmzbP4m/Cur8w88CXaKgyozMqHM1m0pIErbXURN8p0FurO0vXXz+4XjYsMg0Gxp6rI/HRWKFGu8MhyiXLX8sezbg== 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=7TSTHxEGAxcJvxYJEZzyv71dG8Vq8czP72cjYZrygw0=; b=thUQOB5Zux9NfYcmpxZoX0ScER4CYvJItJ8dUVs0Z5ZVMZo1FE/K51zecuEWxhQmggX9pYNcXxCav0WXNliHgYQa55gS43sIB7PRBO01eMtaIyuuQx/XOoAufru+SH12NGP2IWHT/i60BCoqwGDdTcW0ru+WXtucnSQPpusRTtY32chE5dl3KNmAxjM/PVD0nMm+pXpF2B73KcwngUtwTpleDZ3P+KwgR4EikIqRDgaCx4SZrNVmz8g/mqRI7B29PwPC4cFkRw2d6NaDeUuEhkqVChc3OAu6hUobHw6FSoqxWByMyZaclcKGawNhO1sl7IIxsHVVteIpFXWW9n0i7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (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=7TSTHxEGAxcJvxYJEZzyv71dG8Vq8czP72cjYZrygw0=; b=LsNGN0A2dVgoNMbB02lHu16F8rtQDRNeaXmoi3ds2yCR++cFlylbykQouRfV8u9r4cdB/B0o63BuJTkrpD0Y5wVJdVDLKE86+GIvaFOAy9mKtvhUhGMfmJ4rbXu22H/3X2jWOK1XRZWx0sfCWfMfFDv2iYdRngXvMMEmL+NMpuo= Received: from SJ0PR03CA0079.namprd03.prod.outlook.com (2603:10b6:a03:331::24) by CO1PR19MB4965.namprd19.prod.outlook.com (2603:10b6:303:fb::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Tue, 10 Mar 2026 14:18:23 +0000 Received: from MWH0EPF000A6733.namprd04.prod.outlook.com (2603:10b6:a03:331:cafe::78) by SJ0PR03CA0079.outlook.office365.com (2603:10b6:a03:331::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.25 via Frontend Transport; Tue, 10 Mar 2026 14:18:17 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (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: SoftFail (protection.outlook.com: domain of transitioning opensource.cirrus.com discourages use of 84.19.233.75 as permitted sender) Received: from edirelay1.ad.cirrus.com (84.19.233.75) by MWH0EPF000A6733.mail.protection.outlook.com (10.167.249.25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.18 via Frontend Transport; Tue, 10 Mar 2026 14:18:22 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id CBB4F40657D; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) Received: from ediswws06.ad.cirrus.com (ediswws06.ad.cirrus.com [198.90.208.24]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id 9E9C9822547; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) From: Richard Fitzgerald To: broonie@kernel.org Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH 09/10] ASoC: wm_adsp: Use a struct to pass around firmware struct and filename Date: Tue, 10 Mar 2026 14:18:16 +0000 Message-ID: <20260310141817.1871794-10-rf@opensource.cirrus.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260310141817.1871794-1-rf@opensource.cirrus.com> References: <20260310141817.1871794-1-rf@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: MWH0EPF000A6733:EE_|CO1PR19MB4965:EE_ X-MS-Office365-Filtering-Correlation-Id: bea26a03-df1b-41c7-a4f1-08de7eafe2d6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|61400799027|82310400026|18002099003|22082099003|56012099003|54012099003|16102099003; X-Microsoft-Antispam-Message-Info: hBXF5tw8eqW4yA7GVR23+izju3CxcgcRfOcVJ29i+BXppbK2M5pyybT/URW58NXR2zK2cflc0WFFAterv1tUCqpLj4ZJ9QLmyfj718K/dKGkVi6CZuWul5kVJBGRozvh0Hwu+sj3OvcfIjZ9qoBSTZsMoZfd9dGH75iTLSICAdAvxMDo70rLQbY7PocZOEVqzZqIwvaWedM+mhIub7KaI964+iX1Lbz7ixmbtaP/a7VulqaarfbblP7WLqOy4d3Ij5MDypILR0TOJJV7ZludWEVZ4eTymoZ6PudI9O4LNhreXJLRAzCEREFq6wthE0/p3wJkOCon1uMlfZyy3BkwGsy9BT8LLHfY+6dnSCpYhSYUDjGzSLutSYSYMGgXbJtdIhWT3usfOkTA7vnhZZxPSSAaWP9H7EJlr8dWFG3fp6IqXQAZW9nxuGM8+vu5N52+QYDJQa2NTlUAIFNWdc3cMSZZ9g2tuG57SiauwveBBSLf/RG4RRdEHnVgyyrUefaaB1tw8Pj62sV+jCC4W2CcW0JGZj2VWkw2TJhJ+kKZRNmsRumKQCDXt3L8+ztuuxa+kdE4jwLKick0CdgbQ50xHDcNmuIUTZwRHkz/EtKRY+AeNbCN+X/ulS+ApniN/G9bO7MMmrKFOabp72Xs1zcqhZyI84mJKzxy8tx46npoudr95JFEUP/1pDyU9Q2jtq1vee4nMhbMI/0rb7sW0zmhhFqr+keARd7tJN3YaR9eEIu6UmaFhEDqDMhQdp9bolxwmZkRLoUxu2MJGiqg9I0Zvg== 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)(36860700016)(376014)(61400799027)(82310400026)(18002099003)(22082099003)(56012099003)(54012099003)(16102099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UgKP2WiuqKy8Cua1y9DG7sSnu/6m2ceuXPTwvilBQMhCZ+K5PkCeMVljExCrmbJv+r+VpGfZ1Ik+WicHP4HNjHqp9o7oxCFwcpTX6eTx6qUeFskt8WhGi/5JDuDsp3izvw9rquFsmdYTJJSiPICJsfZveNJXFJ0o44rGdocWjIXJjTyZjuDsbAjDknIB4OkOL8Ts9k8qm2R+fvltupCy2HVOpnSFW8ZEM0b/K3yyzk8QvC6EVJ6yyM8J55UzwHQ1gYSFHKwLajIYCK06ZxxTOHj0stoMJx+mUZB8sgbqHD3pYO9HK14s1eA+jd8LM2IqCm0bJ0RD/vhtrsbk/7LtAiME49Uj1nP73gxsatThCKDOI05m2l8leZkq03VSneHlgy1dFH3t1+HpZjgxqGJGhOklS6v5kM9CVk9g2p4Voq0x7xDXTcZwzypeJJcPzmUD X-Exchange-RoutingPolicyChecked: ElkGmLaL0CALIlUmxyAHIeF03lM0cX0wVA9crhzduE7T2mMQejN15rs+ELY+WmdG2AgE4SdD0IoON99R5UMgTOkxLfE05vbFKK3GRtqVzYqfOQQ9/VxY7s/h+PocOYLcZZHlJ/YxrdiHhQ/5tAXs/uo1P5ukVbYDdJ4z+edn5GgrjcYadVgnkLdQY+WSJGn1CNh1XgDaOMApmM/BnWvPaObxwgUc1nGvxSJgbz5gAgl3aNfikmOChiPyXaf/SLDL9NrclhXYcRrGamI7IP72cy1ogADfxncfoG98EDAl9EQgARKTdJayqbU2joqN1SnTMMkPG3HOPDWsQc//86sCYQ== X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 14:18:22.0019 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bea26a03-df1b-41c7-a4f1-08de7eafe2d6 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-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-MWH0EPF000A6733.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR19MB4965 X-Proofpoint-ORIG-GUID: RdC1p4lJ_lGLx1tN-zYjsWRuhCyeHPTX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEyNCBTYWx0ZWRfXyr9Cuttxh+OS FPr7CGJ4uOoIjapOXjB13tNVHZCD2bjKoc8XquXLpcBve8dZeAi1K7FtC6DUlA/2GEeNe1/0Btx 9AUNxYr0L+MJfAh96ey51RXP2nI6iKCbErnISPsofLFty6+x0DcW3jLP8r/Rqv+fK0/LkS3UQGL Wf//Usf9vdm7JxH43moB6OH4S16Wfsp48pgOxMCHuVqoAP8F2DQX79BF37epQN7mag93cczui7b rrSjPD4WBhPWWdRC1OMt8Bwnxn4Gt55/Na3g0jzBZPduHd0bUteVjROAooev/M4x61+JDhXk9JJ q/tjCTpsEJx+2iJdC6VJfpSPgCePsTCVjTE4NTqFVr3zkOf0kdlKFOhwxDGGTXG+0G8cYZrDnWK iGceFa1jMIs1hbb82PecyQKJ0iDNuPx/Ug2ZS4L36u45nsC9rJI0sRPnttlLJ/h57yHE1YQ4NRt kPNyy9GZM5JMKPeD3ag== X-Proofpoint-GUID: RdC1p4lJ_lGLx1tN-zYjsWRuhCyeHPTX X-Authority-Analysis: v=2.4 cv=WNVyn3sR c=1 sm=1 tr=0 ts=69b02834 cx=c_pps a=qoAvcrxUHY3FHMzwJxUv3w==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=Yq5XynenixoA:10 a=s63m1ICgrNkA:10 a=RWc_ulEos4gA:10 a=VkNPw1HP01LnGYTKEx00:22 a=iX4cTi3TZMoOKdANLEfx:22 a=Dj2-6B8FqX4mGL0U3gbX:22 a=w1d2syhTAAAA:8 a=7SzLS8ox6QvL2X636aoA:9 X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" Bundle the pointers to struct firmware and its filename into a new struct wm_adsp_fw_files. This simplifies passing these pointers around. Changes are also needed to the test cases in wm_adsp_fw_find_test.c that use this API. Signed-off-by: Richard Fitzgerald --- sound/soc/codecs/wm_adsp.c | 123 ++++++++++-------------- sound/soc/codecs/wm_adsp.h | 21 ++-- sound/soc/codecs/wm_adsp_fw_find_test.c | 47 +++------ 3 files changed, 77 insertions(+), 114 deletions(-) diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index 034766760c86..1c480d59bd55 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -717,20 +717,15 @@ int wm_adsp_read_ctl(struct wm_adsp *dsp, const char = *name, int type, } EXPORT_SYMBOL_GPL(wm_adsp_read_ctl); =20 -VISIBLE_IF_KUNIT void wm_adsp_release_firmware_files(const struct firmware= *wmfw_firmware, - char *wmfw_filename, - const struct firmware *coeff_firmware, - char *coeff_filename) +VISIBLE_IF_KUNIT void wm_adsp_release_firmware_files(struct wm_adsp_fw_fil= es *fw) { - KUNIT_STATIC_STUB_REDIRECT(wm_adsp_release_firmware_files, - wmfw_firmware, wmfw_filename, - coeff_firmware, coeff_filename); + KUNIT_STATIC_STUB_REDIRECT(wm_adsp_release_firmware_files, fw); =20 - release_firmware(wmfw_firmware); - kfree(wmfw_filename); + release_firmware(fw->wmfw.firmware); + kfree(fw->wmfw.filename); =20 - release_firmware(coeff_firmware); - kfree(coeff_filename); + release_firmware(fw->coeff.firmware); + kfree(fw->coeff.filename); } EXPORT_SYMBOL_IF_KUNIT(wm_adsp_release_firmware_files); =20 @@ -745,7 +740,7 @@ VISIBLE_IF_KUNIT int wm_adsp_firmware_request(const str= uct firmware **firmware, EXPORT_SYMBOL_IF_KUNIT(wm_adsp_firmware_request); =20 static int wm_adsp_request_firmware_file(struct wm_adsp *dsp, - const struct firmware **firmware, char **filename, + struct wm_adsp_fw_file *fw, const char *dir, const char *system_name, const char *asoc_component_prefix, const char *filetype) @@ -761,25 +756,25 @@ static int wm_adsp_request_firmware_file(struct wm_ad= sp *dsp, fwf =3D dsp->cs_dsp.name; =20 if (system_name && asoc_component_prefix) - *filename =3D kasprintf(GFP_KERNEL, "%s%s-%s-%s-%s-%s.%s", dir, dsp->par= t, - fwf, wm_adsp_fw[dsp->fw].file, system_name, - asoc_component_prefix, filetype); + fw->filename =3D kasprintf(GFP_KERNEL, "%s%s-%s-%s-%s-%s.%s", dir, dsp->= part, + fwf, wm_adsp_fw[dsp->fw].file, system_name, + asoc_component_prefix, filetype); else if (system_name) - *filename =3D kasprintf(GFP_KERNEL, "%s%s-%s-%s-%s.%s", dir, dsp->part, - fwf, wm_adsp_fw[dsp->fw].file, system_name, - filetype); + fw->filename =3D kasprintf(GFP_KERNEL, "%s%s-%s-%s-%s.%s", dir, dsp->par= t, + fwf, wm_adsp_fw[dsp->fw].file, system_name, + filetype); else - *filename =3D kasprintf(GFP_KERNEL, "%s%s-%s-%s.%s", dir, dsp->part, fwf, - wm_adsp_fw[dsp->fw].file, filetype); + fw->filename =3D kasprintf(GFP_KERNEL, "%s%s-%s-%s.%s", dir, dsp->part, = fwf, + wm_adsp_fw[dsp->fw].file, filetype); =20 - if (*filename =3D=3D NULL) + if (!fw->filename) return -ENOMEM; =20 /* * Make sure that filename after dir is lower-case and any non-alpha-nume= ric * characters except full-stop are replaced with hyphens. */ - s =3D *filename + strlen(dir); + s =3D fw->filename + strlen(dir); while (*s) { c =3D *s; if (isalnum(c)) @@ -789,15 +784,15 @@ static int wm_adsp_request_firmware_file(struct wm_ad= sp *dsp, s++; } =20 - ret =3D wm_adsp_firmware_request(firmware, *filename, cs_dsp->dev); + ret =3D wm_adsp_firmware_request(&fw->firmware, fw->filename, cs_dsp->dev= ); if (ret < 0) { - adsp_dbg(dsp, "Failed to request '%s': %d\n", *filename, ret); - kfree(*filename); - *filename =3D NULL; + adsp_dbg(dsp, "Failed to request '%s': %d\n", fw->filename, ret); + kfree(fw->filename); + fw->filename =3D NULL; if (ret !=3D -ENOENT) return ret; } else { - adsp_dbg(dsp, "Found '%s'\n", *filename); + adsp_dbg(dsp, "Found '%s'\n", fw->filename); } =20 return 0; @@ -805,10 +800,7 @@ static int wm_adsp_request_firmware_file(struct wm_ads= p *dsp, =20 static const char * const cirrus_dir =3D "cirrus/"; VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(struct wm_adsp *dsp, - const struct firmware **wmfw_firmware, - char **wmfw_filename, - const struct firmware **coeff_firmware, - char **coeff_filename) + struct wm_adsp_fw_files *fw) { const char *system_name =3D dsp->system_name; const char *suffix =3D dsp->component->name_prefix; @@ -818,14 +810,14 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(s= truct wm_adsp *dsp, suffix =3D dsp->fwf_suffix; =20 if (system_name && suffix) { - ret =3D wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, + ret =3D wm_adsp_request_firmware_file(dsp, &fw->wmfw, cirrus_dir, system_name, suffix, "wmfw"); if (ret < 0) goto err; =20 - if (*wmfw_firmware) { - ret =3D wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filena= me, + if (fw->wmfw.firmware) { + ret =3D wm_adsp_request_firmware_file(dsp, &fw->coeff, cirrus_dir, system_name, suffix, "bin"); if (ret < 0) @@ -836,45 +828,43 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(s= truct wm_adsp *dsp, } =20 if (system_name) { - ret =3D wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, + ret =3D wm_adsp_request_firmware_file(dsp, &fw->wmfw, cirrus_dir, system_name, NULL, "wmfw"); if (ret < 0) goto err; =20 - if (*wmfw_firmware || dsp->wmfw_optional) { + if (fw->wmfw.firmware || dsp->wmfw_optional) { if (suffix) { ret =3D wm_adsp_request_firmware_file(dsp, - coeff_firmware, coeff_filename, + &fw->coeff, cirrus_dir, system_name, suffix, "bin"); if (ret < 0) goto err; } =20 - if (!*coeff_firmware) { + if (!fw->coeff.firmware) { ret =3D wm_adsp_request_firmware_file(dsp, - coeff_firmware, coeff_filename, + &fw->coeff, cirrus_dir, system_name, NULL, "bin"); if (ret < 0) goto err; } =20 - if (*wmfw_firmware || (dsp->wmfw_optional && *coeff_firmware)) + if (fw->wmfw.firmware || (dsp->wmfw_optional && fw->coeff.firmware)) return 0; } } =20 /* Check legacy location */ - ret =3D wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, - "", NULL, NULL, "wmfw"); + ret =3D wm_adsp_request_firmware_file(dsp, &fw->wmfw, "", NULL, NULL, "wm= fw"); if (ret < 0) goto err; =20 - if (*wmfw_firmware) { - ret =3D wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filenam= e, - "", NULL, NULL, "bin"); + if (fw->wmfw.firmware) { + ret =3D wm_adsp_request_firmware_file(dsp, &fw->coeff, "", NULL, NULL, "= bin"); if (ret < 0) goto err; =20 @@ -882,13 +872,13 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(s= truct wm_adsp *dsp, } =20 /* Fall back to generic wmfw and optional matching bin */ - ret =3D wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename, + ret =3D wm_adsp_request_firmware_file(dsp, &fw->wmfw, cirrus_dir, NULL, NULL, "wmfw"); if (ret < 0) goto err; =20 - if (*wmfw_firmware || dsp->wmfw_optional) { - ret =3D wm_adsp_request_firmware_file(dsp, coeff_firmware, coeff_filenam= e, + if (fw->wmfw.firmware || dsp->wmfw_optional) { + ret =3D wm_adsp_request_firmware_file(dsp, &fw->coeff, cirrus_dir, NULL, NULL, "bin"); if (ret < 0) goto err; @@ -903,8 +893,7 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(str= uct wm_adsp *dsp, =20 ret =3D -ENOENT; err: - wm_adsp_release_firmware_files(*wmfw_firmware, *wmfw_filename, - *coeff_firmware, *coeff_filename); + wm_adsp_release_firmware_files(fw); =20 return ret; } @@ -939,29 +928,23 @@ int wm_adsp1_event(struct snd_soc_dapm_widget *w, struct snd_soc_component *component =3D snd_soc_dapm_to_component(w->dapm= ); struct wm_adsp *dsps =3D snd_soc_component_get_drvdata(component); struct wm_adsp *dsp =3D &dsps[w->shift]; + struct wm_adsp_fw_files fw =3D { 0 }; int ret =3D 0; - char *wmfw_filename =3D NULL; - const struct firmware *wmfw_firmware =3D NULL; - char *coeff_filename =3D NULL; - const struct firmware *coeff_firmware =3D NULL; =20 dsp->component =3D component; =20 switch (event) { case SND_SOC_DAPM_POST_PMU: - ret =3D wm_adsp_request_firmware_files(dsp, - &wmfw_firmware, &wmfw_filename, - &coeff_firmware, &coeff_filename); + ret =3D wm_adsp_request_firmware_files(dsp, &fw); if (ret) break; =20 ret =3D cs_dsp_adsp1_power_up(&dsp->cs_dsp, - wmfw_firmware, wmfw_filename, - coeff_firmware, coeff_filename, + fw.wmfw.firmware, fw.wmfw.filename, + fw.coeff.firmware, fw.coeff.filename, wm_adsp_fw_text[dsp->fw]); =20 - wm_adsp_release_firmware_files(wmfw_firmware, wmfw_filename, - coeff_firmware, coeff_filename); + wm_adsp_release_firmware_files(&fw); break; case SND_SOC_DAPM_PRE_PMD: cs_dsp_adsp1_power_down(&dsp->cs_dsp); @@ -1037,33 +1020,27 @@ EXPORT_SYMBOL_GPL(wm_adsp2_preloader_put); =20 int wm_adsp_power_up(struct wm_adsp *dsp, bool load_firmware) { + struct wm_adsp_fw_files fw =3D { 0 }; int ret =3D 0; - char *wmfw_filename =3D NULL; - const struct firmware *wmfw_firmware =3D NULL; - char *coeff_filename =3D NULL; - const struct firmware *coeff_firmware =3D NULL; =20 if (load_firmware) { - ret =3D wm_adsp_request_firmware_files(dsp, - &wmfw_firmware, &wmfw_filename, - &coeff_firmware, &coeff_filename); + ret =3D wm_adsp_request_firmware_files(dsp, &fw); if (ret) return ret; } =20 - if (dsp->bin_mandatory && !coeff_firmware) { + if (dsp->bin_mandatory && !fw.coeff.firmware) { ret =3D -ENOENT; goto err; } =20 ret =3D cs_dsp_power_up(&dsp->cs_dsp, - wmfw_firmware, wmfw_filename, - coeff_firmware, coeff_filename, + fw.wmfw.firmware, fw.wmfw.filename, + fw.coeff.firmware, fw.coeff.filename, wm_adsp_fw_text[dsp->fw]); =20 err: - wm_adsp_release_firmware_files(wmfw_firmware, wmfw_filename, - coeff_firmware, coeff_filename); + wm_adsp_release_firmware_files(&fw); =20 return ret; } diff --git a/sound/soc/codecs/wm_adsp.h b/sound/soc/codecs/wm_adsp.h index b4d5bd321c0b..8922732479c2 100644 --- a/sound/soc/codecs/wm_adsp.h +++ b/sound/soc/codecs/wm_adsp.h @@ -79,6 +79,16 @@ struct wm_adsp { SOC_ENUM_EXT(dspname " Firmware", wm_adsp_fw_enum[num], \ wm_adsp_fw_get, wm_adsp_fw_put) =20 +struct wm_adsp_fw_file { + const struct firmware *firmware; + char *filename; +}; + +struct wm_adsp_fw_files { + struct wm_adsp_fw_file wmfw; + struct wm_adsp_fw_file coeff; +}; + extern const struct soc_enum wm_adsp_fw_enum[]; =20 int wm_adsp1_init(struct wm_adsp *dsp); @@ -145,18 +155,11 @@ int wm_adsp_read_ctl(struct wm_adsp *dsp, const char = *name, int type, =20 #if IS_ENABLED(CONFIG_KUNIT) const char *wm_adsp_get_fwf_name_by_index(int index); -void wm_adsp_release_firmware_files(const struct firmware *wmfw_firmware, - char *wmfw_filename, - const struct firmware *coeff_firmware, - char *coeff_filename); +void wm_adsp_release_firmware_files(struct wm_adsp_fw_files *fw); int wm_adsp_firmware_request(const struct firmware **firmware, const char *filename, struct device *dev); -int wm_adsp_request_firmware_files(struct wm_adsp *dsp, - const struct firmware **wmfw_firmware, - char **wmfw_filename, - const struct firmware **coeff_firmware, - char **coeff_filename); +int wm_adsp_request_firmware_files(struct wm_adsp *dsp, struct wm_adsp_fw_= files *fw); #endif =20 #endif diff --git a/sound/soc/codecs/wm_adsp_fw_find_test.c b/sound/soc/codecs/wm_= adsp_fw_find_test.c index 11047851fd80..44c26e991b35 100644 --- a/sound/soc/codecs/wm_adsp_fw_find_test.c +++ b/sound/soc/codecs/wm_adsp_fw_find_test.c @@ -16,10 +16,7 @@ KUNIT_DEFINE_ACTION_WRAPPER(_put_device_wrapper, put_dev= ice, struct device *); struct wm_adsp_fw_find_test { struct wm_adsp dsp; =20 - const struct firmware *found_wmfw_firmware; - const struct firmware *found_bin_firmware; - char *found_wmfw_filename; - char *found_bin_filename; + struct wm_adsp_fw_files found_fw; char searched_fw_files[768]; }; =20 @@ -101,28 +98,24 @@ static void wm_adsp_fw_find_test_pick_file(struct kuni= t *test) wm_adsp_firmware_request, wm_adsp_fw_find_test_firmware_request_simple_stub); =20 - ret =3D wm_adsp_request_firmware_files(dsp, - &priv->found_wmfw_firmware, - &priv->found_wmfw_filename, - &priv->found_bin_firmware, - &priv->found_bin_filename); + ret =3D wm_adsp_request_firmware_files(dsp, &priv->found_fw); kunit_deactivate_static_stub(test, wm_adsp_firmware_request); KUNIT_EXPECT_EQ_MSG(test, ret, (params->expect_wmfw || params->expect_bin) ? 0 : -ENOENT, "%s\n", priv->searched_fw_files); =20 - KUNIT_EXPECT_EQ_MSG(test, !!priv->found_wmfw_filename, !!params->expect_w= mfw, + KUNIT_EXPECT_EQ_MSG(test, !!priv->found_fw.wmfw.filename, !!params->expec= t_wmfw, "%s\n", priv->searched_fw_files); - KUNIT_EXPECT_EQ_MSG(test, !!priv->found_bin_filename, !!params->expect_bi= n, + KUNIT_EXPECT_EQ_MSG(test, !!priv->found_fw.coeff.filename, !!params->expe= ct_bin, "%s\n", priv->searched_fw_files); =20 if (params->expect_wmfw) { - KUNIT_EXPECT_STREQ_MSG(test, priv->found_wmfw_filename, params->expect_w= mfw, + KUNIT_EXPECT_STREQ_MSG(test, priv->found_fw.wmfw.filename, params->expec= t_wmfw, "%s\n", priv->searched_fw_files); } =20 if (params->expect_bin) { - KUNIT_EXPECT_STREQ_MSG(test, priv->found_bin_filename, params->expect_bi= n, + KUNIT_EXPECT_STREQ_MSG(test, priv->found_fw.coeff.filename, params->expe= ct_bin, "%s\n", priv->searched_fw_files); } } @@ -181,27 +174,23 @@ static void wm_adsp_fw_find_test_search_order(struct = kunit *test) wm_adsp_firmware_request, wm_adsp_fw_find_test_firmware_request_stub); =20 - wm_adsp_request_firmware_files(dsp, - &priv->found_wmfw_firmware, - &priv->found_wmfw_filename, - &priv->found_bin_firmware, - &priv->found_bin_filename); + wm_adsp_request_firmware_files(dsp, &priv->found_fw); =20 kunit_deactivate_static_stub(test, wm_adsp_firmware_request); =20 KUNIT_EXPECT_STREQ(test, priv->searched_fw_files, params->expected_search= es); =20 - KUNIT_EXPECT_EQ(test, !!priv->found_wmfw_filename, !!params->expect_wmfw); + KUNIT_EXPECT_EQ(test, !!priv->found_fw.wmfw.filename, !!params->expect_wm= fw); if (params->expect_wmfw) - KUNIT_EXPECT_STREQ(test, priv->found_wmfw_filename, params->expect_wmfw); + KUNIT_EXPECT_STREQ(test, priv->found_fw.wmfw.filename, params->expect_wm= fw); =20 - KUNIT_EXPECT_EQ(test, !!priv->found_bin_filename, !!params->expect_bin); + KUNIT_EXPECT_EQ(test, !!priv->found_fw.coeff.filename, !!params->expect_b= in); if (params->expect_bin) - KUNIT_EXPECT_STREQ(test, priv->found_bin_filename, params->expect_bin); + KUNIT_EXPECT_STREQ(test, priv->found_fw.coeff.filename, params->expect_b= in); =20 /* Either we get a filename and firmware, or neither */ - KUNIT_EXPECT_EQ(test, !!priv->found_wmfw_filename, !!priv->found_wmfw_fir= mware); - KUNIT_EXPECT_EQ(test, !!priv->found_bin_filename, !!priv->found_bin_firmw= are); + KUNIT_EXPECT_EQ(test, !!priv->found_fw.wmfw.filename, !!priv->found_fw.wm= fw.firmware); + KUNIT_EXPECT_EQ(test, !!priv->found_fw.coeff.filename, !!priv->found_fw.c= oeff.firmware); } =20 static void wm_adsp_fw_find_test_find_firmware_byindex(struct kunit *test) @@ -221,12 +210,7 @@ static void wm_adsp_fw_find_test_find_firmware_byindex= (struct kunit *test) wm_adsp_firmware_request, wm_adsp_fw_find_test_firmware_request_stub); =20 - wm_adsp_request_firmware_files(dsp, - &priv->found_wmfw_firmware, - &priv->found_wmfw_filename, - &priv->found_bin_firmware, - &priv->found_bin_filename); - + wm_adsp_request_firmware_files(dsp, &priv->found_fw); kunit_deactivate_static_stub(test, wm_adsp_firmware_request); =20 KUNIT_EXPECT_NOT_NULL_MSG(test, @@ -278,8 +262,7 @@ static void wm_adsp_fw_find_test_case_exit(struct kunit= *test) * dummies not allocated by the real request_firmware() call they * must not be passed to release_firmware(). */ - wm_adsp_release_firmware_files(NULL, priv->found_wmfw_filename, - NULL, priv->found_bin_filename); + wm_adsp_release_firmware_files(&priv->found_fw); } =20 static void wm_adsp_fw_find_test_param_desc(const struct wm_adsp_fw_find_t= est_params *param, --=20 2.47.3 From nobody Thu Apr 9 05:51:01 2026 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 5043B2DC35F; Tue, 10 Mar 2026 14:18:39 +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=1773152320; cv=fail; b=ekInmgVVtvsUGo7ui2uwEa1Yi4FpDNIngjyiDfW0IFww5rQXXbq9ucdYHawHi9AC2hB7L6C2nFXt0cld3m6ot6PCXi5UquGkLW42CTZZsIHAWlA4q1+3xLnkuMj6DX+Ow3lau4aoVp+/rPtQw2v4u0gWNW+Bvoi9Z3cr7c7edeU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773152320; c=relaxed/simple; bh=rFM+tHXaa7Ob/7T46rHNsWVKHXSZAGFOIFu5J7yRLZs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=HO7j23/Y/nfqRVJFC5IuA+ImrLb7QxoNUPyV6dZbcD2LJC9K27ZOCy8jgJnUXVe/6RMPc0iauAWBnH7fJ9PSe+uT3ZcWyLxtRp4EEXZReiEPrgF1TEhaBD/SjIYVsIBhayVjEHSOkeIInJcyGA87XSEWE3OE5tj+XdJIrK2hNic= 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=aF0BqRW4; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b=K7ci/HHd; 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="aF0BqRW4"; dkim=pass (1024-bit key) header.d=cirrus4.onmicrosoft.com header.i=@cirrus4.onmicrosoft.com header.b="K7ci/HHd" Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 629Kvbt82288204; Tue, 10 Mar 2026 09:18:26 -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=6S9CnCeR3I/73F/ci7xcoLjjbn1tUm3KDIMsnPI33aU=; b= aF0BqRW4g9cUHXLMdHZS1VMqSsULYVXU9r3xOGrTW4hgNJOaaXlLw7smY6v9qD/w C46ckABqNxvlTGamvx+rnHz5QkVAbFJhohbwHxtsGEF6evXW+b829WxsRQWMJRQJ w2JpaG/PpNKiLBoT5slW8OA53hUBvvx/623+KX5Pu+pxprFfFBiKSpdVEu29TeoW ocuJF/85k84A0l02Cd3kfYdW687kLNIm+fGuCUPX4R+l5eASNHfuIFlSRkyLmsDi zWLqunqrU2EPO6/aSgJzqgts0QykS3g6W5mtRiVGzsgZEQDrsfVQqZmaU9SOCRXz ycfcOTyK/Obq55zNNPcltQ== Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11020085.outbound.protection.outlook.com [52.101.201.85]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 4crja4bk2b-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 09:18:25 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Xz1roK+spWV96hEg9Uo1cJ59nQqrSxSwxpif2NHWVifeGz837rcj0KJmrN4DCyhbPckPhzegaErKSk4qB4NTTQIIWbC/3gyD12IwixzuMvwlq/SqaDIZ/LeIfORv0brzEgakCaG8HmQmzwzB++JL3dRZyXjEBij3Mdly8IvIUY3k/VzNjd7uvpVXzstI7SIqZh4MYYMV7a7bZVDrG/rT9TE4a1A1aWk7YeDIxvRQToMjCMHHCw7QB911cQkNQKy8ichEoRSs3vVWe4efkP3Wh3YvaHvREzYBuY4fMMrjJJogo7jyNZeP6tExy341jofyxqnkafd+zPb4i/WI9lrsdw== 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=6S9CnCeR3I/73F/ci7xcoLjjbn1tUm3KDIMsnPI33aU=; b=UhsdD/N3o9mP27kl1a5+6PhLgjVsH8HS0m3KzM/nH4+p18Eekkv8sC82Bdv/tgnjg9I+ywgGkAVi/7zIFLTL11k+ANUgxuCxxXDaZzIEd9qpXnhwvyLUErq+JEx19dOdPGljsMWNyNGnFL8vx58VE1GQDwBduZmRFVxthv2vnEoTFpN1PRPW/GdTgtm5lzCR44hRz96zTNvVtSXfeu7yON9B/MEwuM7TDpwBL3u+L3/gvl0D8JyE1qa/rhaWlz6PMokSM53o9/9YUH30M63wqD9a6ivXIE38pCuqjaC96DU+lVDSDdxEmjO47DCw+74NEQQTWI6g1I59lGlrp7lhvA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (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=6S9CnCeR3I/73F/ci7xcoLjjbn1tUm3KDIMsnPI33aU=; b=K7ci/HHdza++7F9H5kqd1J8l/uoVMWUnjrErmCJQmmjpqYqSk2bgwdPqNJYOFrRUdbJUVjgd204sZEDl+TTRXj+lDM6NZVc5gc8BnGlZzanIohLVsjfn82T4ONAHYZo+PdlilGcI7SuQnOhMP1vh/J+FzPrzSV0ONrpNapzV9Ks= Received: from PH7P221CA0078.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:328::9) by BN0PR19MB5295.namprd19.prod.outlook.com (2603:10b6:408:156::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Tue, 10 Mar 2026 14:18:22 +0000 Received: from SJ1PEPF000023D4.namprd21.prod.outlook.com (2603:10b6:510:328:cafe::55) by PH7P221CA0078.outlook.office365.com (2603:10b6:510:328::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9678.25 via Frontend Transport; Tue, 10 Mar 2026 14:18:21 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (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: SoftFail (protection.outlook.com: domain of transitioning opensource.cirrus.com discourages use of 84.19.233.75 as permitted sender) Received: from edirelay1.ad.cirrus.com (84.19.233.75) by SJ1PEPF000023D4.mail.protection.outlook.com (10.167.244.69) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.1 via Frontend Transport; Tue, 10 Mar 2026 14:18:21 +0000 Received: from ediswmail9.ad.cirrus.com (ediswmail9.ad.cirrus.com [198.61.86.93]) by edirelay1.ad.cirrus.com (Postfix) with ESMTPS id CED7A406642; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) Received: from ediswws06.ad.cirrus.com (ediswws06.ad.cirrus.com [198.90.208.24]) by ediswmail9.ad.cirrus.com (Postfix) with ESMTPSA id AAF6D822548; Tue, 10 Mar 2026 14:18:17 +0000 (UTC) From: Richard Fitzgerald To: broonie@kernel.org Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH 10/10] ASoC: wm_adsp: Combine some similar code in firmware file search Date: Tue, 10 Mar 2026 14:18:17 +0000 Message-ID: <20260310141817.1871794-11-rf@opensource.cirrus.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260310141817.1871794-1-rf@opensource.cirrus.com> References: <20260310141817.1871794-1-rf@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: SJ1PEPF000023D4:EE_|BN0PR19MB5295:EE_ X-MS-Office365-Filtering-Correlation-Id: 7468dd97-bc84-42e7-d800-08de7eafe2c3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|61400799027|376014|82310400026|36860700016|18002099003|22082099003|56012099003|54012099003|16102099003; X-Microsoft-Antispam-Message-Info: 5Zwe6ZcyUpdOWaYT2vNdTblIKc+qsYbsNSkRtohRFTdv4a1t32IJgeXQSj726G9xNHO0/qjkduwj3BMrAZmAE/vMwpx86ruTiZAmeD/hlrtm3AC/egpx6TSenG2mS26kus0nWlviqrWkn/ZNTiIpcA6xlF/o8na5dv1QlRA0Xjry+lKEK1HyegVpnzm+1YkDTpyaLI2H6mGROf5rGiQYpYZGhgA1b0ffX5wcKu1bkGcxHJTvcEPtipFku/rx0iqkX3WCqnp9ms8JA0iIZIv0l/g8q/fpUTCcVF51+9Q7LZ35NOIzdoVX7oPJJTs8qSans8XNK6dYhVNw53BjlJcQmi7rqbYTl6pXDG8dAj/x6EhWf2/XubIHDkkjx14N5hvrQudo0/PUfNjogJSDzFdB8cpgbvy6mU4Qe3/TGhYpyjUihTdkOxfTTeciQW+QB3jyJ3fD0L3PTBT0n5yhDYoz5gK52DmgwynV1fJBohsD75Li+7W9acKCiKt79llva3YzQcW6IVJGkHIHAvQyQo3GM9Cz1B77SUvNwm27jxpUYc5iwgC251FWQL4EboiDbflWmA3cMVQp4PpRyCmqlK8e3519b98FI2yITzdKYvhXFjR+64+ZAypwgEFOlpl/enaqRmkmeGhac4WqarQoMp5qaiCTw2c+XmUdk774d+NOqyT/IbT+zIP0uzWS7wgTw8EpOmSho884yXmUQBoG6Ep7oGWOd7q7wpzhJ2r2EnPUP8EWKA9YFqgyUTAWtKoY9ukVlmoOsWbZ6nrWlfie86OiRw== 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)(376014)(82310400026)(36860700016)(18002099003)(22082099003)(56012099003)(54012099003)(16102099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GRQQzKKMnsjFMQFDXIbLmWSjoHhwGNVylVu0Y4w3x05JQ17ud4uuPIr7Yrzg7GUd4+LcjE6GNDeQWO+CBuknKviemfg/j2HzozwEZo1+SFTVhlnysqBIM+au7eYH32jnNxOETLswpwxuSCAQ9PO2tZRfdoIZsahGPmRyd3og4MIRHpwIfswlpqoFlPncGUFQGZ7x6AiyIyE26NcgL6VJ0Yr3ubmXu03++ywc1HbTm9DBQJGOzG3qUgaOB324z4V1zcjbfYGLzANuX6vhusVuwtpZPqZWCJIV5r30ptwoY37OpoI61xHU8TqcsQsLEoe5N6PaoZZ9KGcs3xdCWiFCAkh5G3G6Cwhp8U1MA3RuKlgeek8z7b5WINTpsPOfe7IMdnujBOEnPA2kyk2yx1zM4S5IttTP3YApxIzOCFO46VA+Ybyn4nZPrGmGOg9XQ7SC X-Exchange-RoutingPolicyChecked: X4QRVHZdAjwM0vi5avzuKRleTn0zNt1GyNAXHrvEE+Hlx1RMxxLT5lUBfA/m56nDIao3y0PohLlSoppiAh5KM80XZd0TGmtB7pj2CpiM4FpsHgwX+gCpx9mv1o05yjZtNZ8+b1mJ7q5qCk19suMf3lA9Y/nXZqiJP7BkomHdIUYhQS3PZYqUStRcha88hU0r7bHmfexintaXODAzgNp94BZXBHlfbARpYBWtmdBG1MvNuFiNCg4YSpKBkQS0LgBWzwZt9Ysh4lsw7VGLbPkxQ73Q63UQD72ZH2yzPqIuJGF1v2wI6vv2sgLZ6lqMwXWiYdaTuYUXqvn5JBql6FArBw== X-OriginatorOrg: opensource.cirrus.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 14:18:21.8757 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7468dd97-bc84-42e7-d800-08de7eafe2c3 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-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TreatMessagesAsInternal-SJ1PEPF000023D4.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR19MB5295 X-Proofpoint-ORIG-GUID: xfvFFXOVSKi8tmanA8EUM-8H_RKC75OD X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEyNCBTYWx0ZWRfX9cQgRZETyuJI RPJF2Hqw0CdW9Pc5qXb+qXPIGQAzod2fhlFivtuiBvubG2P4dVz2UOuwbZgxYCZr0q3TBIdBHG5 XRdWjODnk4q/KiYjYR960rE6Rx3LJsAaie5fwzY0AuzVEhvq2fQrvP3Qa8ZvDwDCQ5U0FcNYhik vZRYl80PsAQYbQEK9jcNU+oUYqULSxMfO9prQ2kjku6EYhxvBmj1zgKPHNRbxsdIDXlkxRXx/YS uwtiik0vx2HbgvmII5HqV24UjCIBeWEWgYFom4ayAdFO7Jk74xFdeM1gPEF/+SFx5v24kplkgxr m38cAWAWqZhc54dSVTG5Gro7GvmXz/POw6996gtn3lKPHpcTyPreLBeRYqB+JOEmtfij5wfP2WP uiCkTtz5rb3npgwYB55UI/tGBFWGfv+yEyFGCxzVUat9/x3C63JwhyYyB3eA2zuak9ZT6fuJL/F WDatf1brqKfDjhWw1Ag== X-Proofpoint-GUID: xfvFFXOVSKi8tmanA8EUM-8H_RKC75OD X-Authority-Analysis: v=2.4 cv=WNVyn3sR c=1 sm=1 tr=0 ts=69b02831 cx=c_pps a=H3Na7JgWheL2EZIWx/c7UQ==:117 a=h1hSm8JtM9GN1ddwPAif2w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=Yq5XynenixoA:10 a=s63m1ICgrNkA:10 a=RWc_ulEos4gA:10 a=VkNPw1HP01LnGYTKEx00:22 a=iX4cTi3TZMoOKdANLEfx:22 a=Dj2-6B8FqX4mGL0U3gbX:22 a=w1d2syhTAAAA:8 a=pikAlEzSmbeyXIGJbxYA:9 X-Proofpoint-Spam-Reason: safe Content-Type: text/plain; charset="utf-8" In wm_adsp_request_firmware_files() squash the if (system_name && suffix) and the following if (system_name) blocks together. This removes some duplicated code. Signed-off-by: Richard Fitzgerald --- sound/soc/codecs/wm_adsp.c | 49 +++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c index 1c480d59bd55..a637e22c3929 100644 --- a/sound/soc/codecs/wm_adsp.c +++ b/sound/soc/codecs/wm_adsp.c @@ -804,47 +804,42 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(s= truct wm_adsp *dsp, { const char *system_name =3D dsp->system_name; const char *suffix =3D dsp->component->name_prefix; + bool require_bin_suffix =3D false; int ret =3D 0; =20 if (dsp->fwf_suffix) suffix =3D dsp->fwf_suffix; =20 - if (system_name && suffix) { + if (system_name) { ret =3D wm_adsp_request_firmware_file(dsp, &fw->wmfw, cirrus_dir, system_name, suffix, "wmfw"); if (ret < 0) goto err; =20 - if (fw->wmfw.firmware) { + if (suffix) { + if (fw->wmfw.firmware) { + require_bin_suffix =3D true; + } else { + /* Fallback to name without suffix */ + ret =3D wm_adsp_request_firmware_file(dsp, &fw->wmfw, + cirrus_dir, system_name, + NULL, "wmfw"); + if (ret < 0) + goto err; + } + } + + /* Look for matching .bin file */ + if (fw->wmfw.firmware || dsp->wmfw_optional) { ret =3D wm_adsp_request_firmware_file(dsp, &fw->coeff, cirrus_dir, system_name, suffix, "bin"); if (ret < 0) goto err; =20 - return 0; - } - } - - if (system_name) { - ret =3D wm_adsp_request_firmware_file(dsp, &fw->wmfw, - cirrus_dir, system_name, - NULL, "wmfw"); - if (ret < 0) - goto err; - - if (fw->wmfw.firmware || dsp->wmfw_optional) { - if (suffix) { - ret =3D wm_adsp_request_firmware_file(dsp, - &fw->coeff, - cirrus_dir, system_name, - suffix, "bin"); - if (ret < 0) - goto err; - } - - if (!fw->coeff.firmware) { + if (suffix && !fw->coeff.firmware && !require_bin_suffix) { + /* Fallback to name without suffix */ ret =3D wm_adsp_request_firmware_file(dsp, &fw->coeff, cirrus_dir, system_name, @@ -852,10 +847,10 @@ VISIBLE_IF_KUNIT int wm_adsp_request_firmware_files(s= truct wm_adsp *dsp, if (ret < 0) goto err; } - - if (fw->wmfw.firmware || (dsp->wmfw_optional && fw->coeff.firmware)) - return 0; } + + if (fw->wmfw.firmware || (dsp->wmfw_optional && fw->coeff.firmware)) + return 0; } =20 /* Check legacy location */ --=20 2.47.3