From nobody Thu Sep 24 13:41:52 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011069.outbound.protection.outlook.com [52.101.65.69]) (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 7D63C3BB13C; Wed, 23 Sep 2026 06:13:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.69 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144005; cv=fail; b=Qdk9cwoGZuxaw6A/uQ1RLRhmFlbvWmXVzFyYjJ8vNkZ6wvi5HVfYDV2jCGSdZ/ZA28h2F0GVAc59O6V++bjE1mKvoMijt6DNR78oUWEw85Ghc4xKFojpw/FjJjNlmQl9O6xAJPkhQk/q1ksNUGZZryUfcE0uLSDghZoNpwWImnA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144005; c=relaxed/simple; bh=c7xnN5kAv/DZQbbn8SLYdEX5Ut8bjYu9XqB5HOe924o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Se7kglR4zCsi7jfJ2AMlOWVd3FXJEb5k/r51zUaJQycc41yrJ1W46WDpZlWVqJhqazi2T5qMPQfppaKfjxlODEwg0fIeX8ff/i4t/GQCnpKwG7ki/Roy/Ws3/b+DMZbEDEJrhaEyR26edfzwEbZ0788spmL0y3g0gqnaI62ZfkU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=FMJG0fgC; arc=fail smtp.client-ip=52.101.65.69 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="FMJG0fgC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iB225zwg7HPBGr/BZVCNz+j/rTr4112BHd1dTW0rwK7BsbMfZsh0rGGDLJ5fK6iAEdSvAnaNoAg7z/r27hsuiq93Rnvz6+TbBqR3EKKanvDZci+JNiuQ5eXYQni5/ZtSgV/R4D5/2c620H/5RdOBNIZBK3GS5G0rimFmcApBL2qh6KlkOZcB78U41S6i1p38qRWWuELl4K+Ts9kXNJHycWa92i7cnAgMIWdllWkaX3N6Y+UQUA6P3E/X96dXv8SzAEzCfWqNTKcX1BrRsLJfc4Fbrex/Xw7aNSazg0D4w+iIuLKsFNKNO5Pmffi9dkcUZ8VGFj3uLqJSMT96dPrKhw== 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=ZZQVQZf/6Uuyp9pKwkWGP7D52T71N5AtDOq4Fwo3zvo=; b=ioE9MklzzdqrkW8zkNCnBizmtTzvCO7B9RyhjYEQDRse7UH7R92aa5dxiQDj1uHrnIQpfQvFtWNP8W0D217lx0YqU2fGoKQpA45hT3wH3uGJZlZDvGbrbRjMqn/lfDvV+ctKJiI6dGEr9IPrAdNKEyr6kAZjDAwfWfy9xxXRkEdGbTvwAkjSkocXKxOK4U43pi/ocmgXPeTLlC7OB+58IzK5MKpBJmk9Dooemn9YsltNfXIITRwIbvQBnBIQtSQdbLv737GySWG5LrKme+HoqiJq60gX/UdWq8+JtuPi6saYJM5BasXufqnknNrRWHYnqfoijAKPL7tZOY6yzj1o8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZZQVQZf/6Uuyp9pKwkWGP7D52T71N5AtDOq4Fwo3zvo=; b=FMJG0fgC9kN5gXFKYOOmwLmfXYnaX1Gghj+llHQ7Ln9r3gZ5ohSzi7cjXIAyqLPA5H15qYEuh9m/0leBXTZU8nZwffJp77tBCF0vmGhKoSqYEBYKQTumZdzQ6mhTJkSc4ZO1ojdigdALcD/59ejugxu6bjb3Wtc48iYYMVqhq1zQirEWOeq/jiXjUfSSD3bCXp+DG0oaxOooH3cXWbcbQbgE5LwyqGwLtSIpNOBHIzbXmyua4Ot0G86LMBryhOTy95j+jJBvUdbIWafkFkgTKRyqlZbvESiWq9PnN9VqzWRpT0/tvuXkGEesubcRne6/fuiQvFDX5RXSPZ5xOqfFcA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by VI0PR04MB10997.eurprd04.prod.outlook.com (2603:10a6:800:267::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:13:19 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:13:19 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 01/21] ASoC: codecs: cpcap: Fix devm resource leaks across card bind/unbind Date: Wed, 23 Sep 2026 15:12:45 +0900 Message-ID: <20260923061305.4041197-2-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0063.KORP216.PROD.OUTLOOK.COM (2603:1096:101:118::12) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|VI0PR04MB10997:EE_ X-MS-Office365-Filtering-Correlation-Id: 199cf73e-735f-47b1-5f49-08df1939c37a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014|23010399003|19092799006|10067099003|56012099006|6133799003|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: zEXbbQmgD+oHyC/IWB2YkvWOC77HXi8OqxjcO/RGcW8u02k7NukJyflo7EJfzee0C2Ew4qxpXBH0TjNHnu7tQb/7r1yONoLS90ue8VT4KQzC1wFzX7cX2onyzvJkfl9b7MN/ns4tpkvtryiCdksJIR43Q0JmHAwhmiu0xLRt86e2zO/GsQAAHu51aCm4ZVD9ZaOJmE57NqjY9tw95BjYhWaZ2jQ518mGuAy0Hy1dBOn3HAIdJ+rz1ApPrGRpVVd4Cmfpqn6U6PhViJuvJN23labsnq/UhO7j8nzQ2CESVPtYrOBRmsU8crkwKyReWjcKlvrqzxDjJr7HarueYBl4HwrhNbdVbuIs3n+sK5ypOEJVbLGVadvN2WtD6mindvgODrkCP/Bqs6QHd/diR/dVJQSvN3juXlWUubCGRo24bisIrAmx59xjFCWvltD4WD20Dtx1jlqLzh2LHeJGtDbbVBGLCR1J4uFmJKe9NRTDm6DBPDGhegMgIqc4vjLN/l3V8MCa12/q6tpuqNcDVDqtZ5nE8yQQ9uepZV99bdupR/tPFSANPu2DXvR+G/WMSPtf0MX1hnQOmZqYyYuUy6xz5fnF0DAuWzrANG/fKZQe2ZT+DN7k+iKuI1fMbkeOsAAKU5+MnVEgzrkK2srMbTrNyLzYxUkwYg+YX6Zx+DrUhKA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(23010399003)(19092799006)(10067099003)(56012099006)(6133799003)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UgYgSJIAXhErS79no0QFaIknN08WxCcYCBfvWikF07EN6T2zEa8O6Xpq6NCp?= =?us-ascii?Q?UrAnWOYhmbVyoDF1Se4XTUCzbeZR6iWAsPsotIsflUbYOkqPlzYH+orb+h3t?= =?us-ascii?Q?VATxRf/3vzdxHtUOI+EVgTBdKF1113MJ1fnEJJB4H4UmHSn0KhnW7B/xqpBQ?= =?us-ascii?Q?7yv9Qw7RJYrw4LAIO6uYHZ6oerz1st9/ogwQPqMRORBD6YorS5QJsaFVetNS?= =?us-ascii?Q?O9P0ppFUNIUidjbqgJG0TbHwOCn/sDxFKjIpTI3Sez1wo3z58B8TxwPMwqb0?= =?us-ascii?Q?wdvx9axvwrLJZqPQ6MKcHfvpjjmAWh8fkzFXkNcUcdU6V4f0fbZGS9h2Qx3J?= =?us-ascii?Q?5BnE55whuX9iW3Uvhzs6dvl5JDHV27N9MwAtk3uoo+FM+KYakxkVHebhR6rJ?= =?us-ascii?Q?juf+z/yadJs/tuSv5pYLP3GqwyCS5XlbZsd5wqKKn8374WIooizaf2+l3JtJ?= =?us-ascii?Q?CrSYbOc2tDQkdkVhwOKsp8JZvYAaMt42/GNyRdXdxoRsYGR7Ygb6V7/h9fN3?= =?us-ascii?Q?7jzUS3iZJh+TnDaElf2oxtKpKPYh0YWWh/hDfyOksx5aNCXXlKnQgrxWtY1k?= =?us-ascii?Q?k4iyCvj6SLjx8IQlpk9+3k6A5i0JRCk+DXnI2XaAIVudPlp6lKTr08rlQafc?= =?us-ascii?Q?atEIOvwNJ+Zz0L1ypzoS7DC0K61FX/8tdazyEwM2puqarfzwkhBY6zjMsmy7?= =?us-ascii?Q?Vxj5SQCP+MgN1DM2pOUsgOD8F4KNQfO5KlHzG+D0Cd28D/5LYYZBYQ/Lzew9?= =?us-ascii?Q?LxNDMuh6GC4Y1SXZpZzqmG4muI9YvGAf/CsrDWP8n0z6BpArWhHBa+p+AszY?= =?us-ascii?Q?ECR3sj/ovre6Sc8DuwNk/+U6aFmpQZp7yfULOsbDMTKlyxjRGjTY+9+UKNZ0?= =?us-ascii?Q?DDl94NxSIpawMvLVWH1jZxtFxflasau2FiakaZD0HysAwObyG7fqvafZuSaL?= =?us-ascii?Q?x9Hn1z124LhijvAXN3cyCihLoTeHk2UjYb1bywL455SRC0gM/ce4dom7ZM7s?= =?us-ascii?Q?vD3bzAJ8plZMGsX9aZJiUx0uYcViPX1CZnj21qotUKz86tMrp6LM1+Z5R+uQ?= =?us-ascii?Q?mx3zgB2DQoEdzWapxbzFO1Or5dJS71jheuCfmudvzAX6cKjHMrwOOk0Bq8nW?= =?us-ascii?Q?FBXI6+Qv+Ndp1MKoj/1dBLr9fIgXc+YzjJEOL5IQUFZy0r2IoUkom5qoi2cQ?= =?us-ascii?Q?R+o04gHZAZ7ushsc3Elkou7vxJRHK9wk9H5Stqc4DggGNpMKGnWsjOJ5IAxQ?= =?us-ascii?Q?Y7S8jD7PDsx8scu4Ll2KtqL/uy+49OGD4edrTk8IKMrkQLUIbjowuruQyfZH?= =?us-ascii?Q?sl3n1gBlHIh94wBGnCiQPcOzU3Cy5H5nFnKq53aAuatUzL8fCamPSCF7vrXj?= =?us-ascii?Q?5voy5f9MLAqxaZowKsFvmb9NGUTCGY30UzNLU+fcTiFDAfsP6dFLXgnzjatG?= =?us-ascii?Q?loCnbRINOaBwufhe64CH+4oIKPFzK8VBfswyLPjw7mkF7DUDeVz7Lxm4ls3p?= =?us-ascii?Q?lR4QHcesyXc6Ukt4jLjaI3FOj6gML7AvvDOGQ+s/n5vNAbi1fsa9IbggcCmG?= =?us-ascii?Q?DpHWTUNmcdDjxw76hwlI64iji6PJqATe6jG2a7NIoehuMrDifs9JQRynd/Jy?= =?us-ascii?Q?w/ZzJ3NyHV2dZosY3nS1i5Kst3UvpzUR7MaRkfnDKqXhyuIrnk/gGKpqMoqo?= =?us-ascii?Q?A8pkI6GFILN08mF4prEQgJklJnb5ZyYkhT8yQxjFaquHfi73dGfkeZJeH+Z+?= =?us-ascii?Q?w0uxUOvOw/5VWBkfyxr7tV8pK3SNyp4/z9L7c5v0tdZiiyub8Jdd?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 199cf73e-735f-47b1-5f49-08df1939c37a X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:13:19.4554 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kw50ud3otHGpTXByJmoPyvwxHt1C7FDoRkPK3vVaBv/e/m107K2114kZoqgr3Jq+oKQBhOusC9sHBRmOyt9rihWIVPTLnrZbRAPJBZHaRt7Hg1eZcaPrkAPdYEum07Ev X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10997 Content-Type: text/plain; charset="utf-8" From: Chancel Liu The ASoC component .probe/.remove are called on card bind/unbind, but component->dev is the underlying platform device. Resources requested with devm_*(component->dev, ...) or request_irq() in the component .probe are only released when the platform device is removed, not on card unbind, leaking on every bind/unbind cycle. The VAUDIO regulator is a pure hardware resource that only depends on the platform device, so acquire it with devm_regulator_get() in the platform probe where its devres lifetime matches the device. The headset/mic-button IRQs genuinely depend on the component, so keep them in cpcap_soc_probe() but request them with the non-devm request_irq() API and free them explicitly in cpcap_soc_remove(). Signed-off-by: Chancel Liu --- sound/soc/codecs/cpcap.c | 74 ++++++++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 29 deletions(-) diff --git a/sound/soc/codecs/cpcap.c b/sound/soc/codecs/cpcap.c index 0262900fbb7d..dda68165b817 100644 --- a/sound/soc/codecs/cpcap.c +++ b/sound/soc/codecs/cpcap.c @@ -1622,21 +1622,12 @@ static int cpcap_soc_probe(struct snd_soc_component= *component) { struct platform_device *pdev =3D to_platform_device(component->dev); struct snd_soc_card *card =3D component->card; - struct cpcap_audio *cpcap; + struct cpcap_audio *cpcap =3D dev_get_drvdata(component->dev); int err; =20 - cpcap =3D devm_kzalloc(component->dev, sizeof(*cpcap), GFP_KERNEL); - if (!cpcap) - return -ENOMEM; - snd_soc_component_set_drvdata(component, cpcap); cpcap->component =3D component; =20 - cpcap->vaudio =3D devm_regulator_get(component->dev, "VAUDIO"); - if (IS_ERR(cpcap->vaudio)) - return dev_err_probe(component->dev, PTR_ERR(cpcap->vaudio), - "Cannot get VAUDIO regulator\n"); - err =3D snd_soc_card_jack_new(card, "Headphones", SND_JACK_HEADSET | SND_JACK_BTN_0, &cpcap->jack); @@ -1660,13 +1651,13 @@ static int cpcap_soc_probe(struct snd_soc_component= *component) if (cpcap->hsirq < 0) return cpcap->hsirq; =20 - err =3D devm_request_threaded_irq(component->dev, cpcap->hsirq, NULL, - cpcap_hs_irq_thread, - IRQF_TRIGGER_RISING | - IRQF_TRIGGER_FALLING | - IRQF_ONESHOT, - "cpcap-codec-hs", - component); + err =3D request_threaded_irq(cpcap->hsirq, NULL, + cpcap_hs_irq_thread, + IRQF_TRIGGER_RISING | + IRQF_TRIGGER_FALLING | + IRQF_ONESHOT, + "cpcap-codec-hs", + component); if (err) { dev_warn(component->dev, "no HS irq%i: %i\n", cpcap->hsirq, err); @@ -1674,25 +1665,27 @@ static int cpcap_soc_probe(struct snd_soc_component= *component) } =20 cpcap->mb2irq =3D platform_get_irq_byname(pdev, "mb2"); - if (cpcap->mb2irq < 0) - return cpcap->mb2irq; - - err =3D devm_request_threaded_irq(component->dev, cpcap->mb2irq, NULL, - cpcap_mb2_irq_thread, - IRQF_TRIGGER_RISING | - IRQF_TRIGGER_FALLING | - IRQF_ONESHOT, - "cpcap-codec-mb2", - component); + if (cpcap->mb2irq < 0) { + err =3D cpcap->mb2irq; + goto err_free_hsirq; + } + + err =3D request_threaded_irq(cpcap->mb2irq, NULL, + cpcap_mb2_irq_thread, + IRQF_TRIGGER_RISING | + IRQF_TRIGGER_FALLING | + IRQF_ONESHOT, + "cpcap-codec-mb2", + component); if (err) { dev_warn(component->dev, "no MB2 irq%i: %i\n", cpcap->mb2irq, err); - return err; + goto err_free_hsirq; } =20 err =3D cpcap_audio_reset(component, false); if (err) - return err; + goto err_free_mb2irq; =20 cpcap_hs_irq_thread(cpcap->hsirq, component); =20 @@ -1700,6 +1693,13 @@ static int cpcap_soc_probe(struct snd_soc_component = *component) enable_irq_wake(cpcap->mb2irq); =20 return 0; + +err_free_mb2irq: + free_irq(cpcap->mb2irq, component); +err_free_hsirq: + free_irq(cpcap->hsirq, component); + + return err; } =20 static void cpcap_soc_remove(struct snd_soc_component *component) @@ -1708,6 +1708,9 @@ static void cpcap_soc_remove(struct snd_soc_component= *component) =20 disable_irq_wake(cpcap->hsirq); disable_irq_wake(cpcap->mb2irq); + + free_irq(cpcap->mb2irq, component); + free_irq(cpcap->hsirq, component); } =20 static int cpcap_set_bias_level(struct snd_soc_component *component, @@ -1754,11 +1757,24 @@ static int cpcap_codec_probe(struct platform_device= *pdev) { struct device_node *codec_node =3D of_get_child_by_name(pdev->dev.parent->of_node, "audio-codec"); + struct cpcap_audio *cpcap; + if (!codec_node) return -ENODEV; =20 pdev->dev.of_node =3D codec_node; =20 + cpcap =3D devm_kzalloc(&pdev->dev, sizeof(*cpcap), GFP_KERNEL); + if (!cpcap) + return -ENOMEM; + + cpcap->vaudio =3D devm_regulator_get(&pdev->dev, "VAUDIO"); + if (IS_ERR(cpcap->vaudio)) + return dev_err_probe(&pdev->dev, PTR_ERR(cpcap->vaudio), + "Cannot get VAUDIO regulator\n"); + + platform_set_drvdata(pdev, cpcap); + return devm_snd_soc_register_component(&pdev->dev, &soc_codec_dev_cpcap, cpcap_dai, ARRAY_SIZE(cpcap_dai)); } --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11012027.outbound.protection.outlook.com [52.101.66.27]) (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 ECE0441684A; Wed, 23 Sep 2026 06:13:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.27 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144013; cv=fail; b=DD9SpYU+K1gYnbszNLXewb7cWcygx5T8H2o5Q7WWPgbmln2voQIbPgl2VpzIrcS6zJkECWyEYlXUgoTgncIVfqdzhUdEetwGl1q1JZqI3zOZx0LRxc5L10n1qkr36IbpCDwkppjGjeLPbU1Ul/a9WvYhkrNcBrdMDvrT0Bpb4dk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144013; c=relaxed/simple; bh=q02eT454bppJo/x4D8PgwceGgKdres7RczIXpkbgrXc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=CqetLsHWB2onullUwRZ5Mjuorw9OZ5gQMV22v00039EiDvmZ49KJq1dsw0Rt7fvbU0Rvg9+VCRpFO2mURJi6c/h6uSiyysxytMGRqZcAUwYJa1cgBrKljUp9uBm3x+h/Bv8/S6wcWs8CsqoVmXw7alEXNoPhe/Lwjx/tnXN0rxg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=DMlwRaxX; arc=fail smtp.client-ip=52.101.66.27 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="DMlwRaxX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iE8xKhUhI1QujeIqUiKT1lLv5plP6WN7sG7+KwhyRBvOgzVQJNZNhByl8/MAERj+T9/OvG2/t0jefLPM9grGgm9LKb59+G4Kq2fe8OIXDzCt8Mf3NcmXc+l0sdE+qd9PFcdtr6vfDkylL6nUPx7JRdpFoTHuNU8ZMg+FBt5xRVdPg1tQ1sdBgdABWCT52zWcvI9ZtFkFp9ogUVNKaoj5VMJQfyQiEBn02zOSpKUObEkZuK0gmzNYFAlWihrlQ0pKmWOQ21bjeirfsl0kcbyFB066M5CM1p4a7ldK4M4BNF8eStNLZ0dMoE/j+q5dzzWWvsx8ps8UpLnyirfYywTNWw== 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=PzUepdnzWbVSGRHO+ZVcIv+V3m63ee4plTk22Sjo3nE=; b=uuZ4q5wqCgl7GlPvx3qlMsjg+LZ364T8NT5pjiKbQeeEkOard8MBQihbPknhQoUHOvkmyp5WImLcrXuKY2b+fc+2SAdInvb3oHs1iiQzaTPcBe9VhmwhRaZmzmvFbIE54otGGTPdCgP7lrglwmUWnVfN1fkBCaBkTe7OWnltI50gLw95fK/lvklmTTBgCofTt4/5SyyUYPCZkDvFSCClkY0IljfonKfeagtK1tQA0dV3+Mb8rzHBuW70IafNuWVTvWarBDGDXl4Tmczv08g8uPNKE7UfzDVjK8Bg+wodfPJrVo0Rs7dntY02IqcWLDcrxc4oRSf4FauDcNlrcJkonw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PzUepdnzWbVSGRHO+ZVcIv+V3m63ee4plTk22Sjo3nE=; b=DMlwRaxXXJkMuCZXwfPUk2s7o81hR2XgRCYhc5FxsuE+JXdi4r0msn5jtyeqKqKFbSVdeFVVVuD8Wd5pgwXr3oIb1i2Mn+JQ89A+g11lDlhOvjnE1QvpzG4BTnkU/Pje7uZK8iNJnl7QuVeFn/ikaCr4zThTS9n21cGU5O2E8aMblIadAIEeCynC4nmG/cu0n1krXEguxp+9IhTyHOfTHe1/xVjghWda0VO4vQIGc5eIDWoiKcWGhBnrbRu67g4KRDqhA4XYs3k170YajGNiIHLWQbQMJGXLFcix7u5ga8fwTy0Ru41umZ/aGny6aqkwtTh8GxzWTZ/hf8kKAupjXg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by VI0PR04MB10997.eurprd04.prod.outlook.com (2603:10a6:800:267::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:13:27 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:13:27 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 02/21] ASoC: codecs: da7218: Fix devm resource leaks across card bind/unbind Date: Wed, 23 Sep 2026 15:12:46 +0900 Message-ID: <20260923061305.4041197-3-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0079.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c6::12) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|VI0PR04MB10997:EE_ X-MS-Office365-Filtering-Correlation-Id: 4378094a-8a6e-40cd-18b2-08df1939c7ec X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014|23010399003|19092799006|10067099003|56012099006|6133799003|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 57pXIHbVab0b9o8nQOwzuX8+D4cYhKM1d8Mhp+AhKg9mG/5nRYtzH+ceVXBdClQ9v+R9W8kz8ALc1vb2UYqpAFyv9sjv2Wo122khVwtVO3CSvIeojp7/GqPH7SmpmS99MWhBxEmgi+V1tiz5TeAkQQmr0LPkOrj5VtebgCh1fi6ezearEqbLf3qhILj/iErZ7dJW8cT38EFwmcGgSItpX9ybccAxPqTBeKOs8mhtr3MJapRByxIsOFVtixswuOsfAgZt9zLUh9aPfdpkpyewxmaXVW26TC0DZ+amFn2bkeppxbQepwVCY14ZPQW2Vgg1xEb+8xG+FSFo2E9sjo2cIE4O19Hxhar5sx6kd0qInpCqrEHEBhE5YrbYNg1MPgEA22lZGG2hvrBuF1QmrHpmtgJuWsEZOkq0exQiZ4JUtXTva5I9smgYdVM+pmss5nrYpFRU+Ls2IcHcGmyCIYDhLe/MryT8usn/V2JwW77jFyAhioIYLf1hmU9pIzd5JPBYSKOsQR8CN/oOolsDnAqlJ9lszUQjpL3o+JcOyDyKv6wrOQoQbhGR5XW0k43HrEjZSGl+IkfpEMgEcn41C5juREFKtB1ezerLLSh892wbZIOJnXU5J2E+E+dfeW/HZGnX2FyY9mw/M/MV7YcYFtTlZa6GV16fzCzXYMINabr7LbI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(23010399003)(19092799006)(10067099003)(56012099006)(6133799003)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Y1Q81vPVCoI7okXQPX283Sgic8Qf478BEpzDzNt9m6hfWEROHSZBDdLODITS?= =?us-ascii?Q?kTfmq8VFq3RauasX1pml86uH9eCAkXNdKNmzW8AckBx4zRyGf4rbeQACiWRD?= =?us-ascii?Q?o9S/Ezqm82F7XGOGCaOQFUiEL+dIUvSCUkIqJDRUy0HMrVNpSnvh76HDMaC/?= =?us-ascii?Q?vMFzyhc2OdqLa/yxliUBCvQYPwWbhOMnWyEXFk8PXk4p/3+kjzM8g1K8tcwg?= =?us-ascii?Q?hTsLw8T1pAQpFWaFUyZ799u1XG+JeuG709n+5tyDpsazs9MV4KkciX9mCGuZ?= =?us-ascii?Q?pgrldt5QGdakR6QlvVUYb6rnnOk9jmf1lL8qilr/pg0tf0GWBpsp+olOiWGz?= =?us-ascii?Q?G+2iJlA2/F8SJpXhYukgr5tfh/HL8bhX+1LFTHWCeAMaP+KFZTZSeYcDw0Oy?= =?us-ascii?Q?pF0Ob6b8DnZxRrDeDYjfaj94J2mS/DDCEBZFgosMy1qqBcaH4/wH4g1RFiVJ?= =?us-ascii?Q?1g5XWK5fCFLPV15nXN9+Ro8nK/1tXNLSMaN3Kg8n/U3VKbQRACPHyo8NG1wH?= =?us-ascii?Q?24AdLBdtlGTXVswNeSU0kwHij4nTYbcPdJ7SECSl1HzBbIE0oWN3RSu+2+UK?= =?us-ascii?Q?KGu9CfLQ+kFRvGqXdeU9SkDDGsFPfoRvF3kc0WY4Mm93I4+jrWy/QH8oG3hr?= =?us-ascii?Q?UsxWqReFrhNtoC2f7ddkIg77rnCp7BdwdDhlc+k/cRwTNlx+uta7TgzZvphv?= =?us-ascii?Q?WV7EtIar2aNifr2FRQyD1c8TM5sBbLyIbPpKvDrlpfMKUzw7wtgD+i9syJPn?= =?us-ascii?Q?2pNYseIEFTvukKLv7N7WXNLrzjbpW/seIyL3zm0vxxHwQYzj0cZ1i+rvlzGy?= =?us-ascii?Q?yS/6u/noR4bL/RqUatALiJF0LobKPcSdTfh7zF4PnwVR7hCzzcQSFtVz/R6k?= =?us-ascii?Q?309E1fxgUqaA2cKZTJ1LiHkDGX9dRyq8es9L5UHmd47RdowGCgFSkJaQAXe3?= =?us-ascii?Q?+cupKD5YzTs9g/kq1Zn0cDaBxuXsrDRn3xJ2t9y2HZDVk+QqieLWdQ0XqSJj?= =?us-ascii?Q?IZocQrxQH363j4qxbGQGRitJHN7lC07f3R/GbCxeNDm4yKqtmeCsqWw4MdHh?= =?us-ascii?Q?4/cOCf+GGMhvnL2a324kPamns923ymDnieWdVtTG2IB7Z+FyjYQ8bE+pccFC?= =?us-ascii?Q?OU4oVFs/aIdy/qH42bxNox3R0lm4vad2tubSaDYPogDGbu/4lF65p9Ntx63N?= =?us-ascii?Q?HZkf7AmD66PHIwV7ctwsLycoNmRcFmWSmcxj8NWu/+SwUBBT9EQlmWGwTbX3?= =?us-ascii?Q?Bl1tU1zvhY8Vp9pTlXHCk+Ld3BOWnRF8AOxY/hc9aAVvVmWcAuwlWX0r3Y2P?= =?us-ascii?Q?5OTaEpRmzFrBkv00dWxyo5gwic2rIDxDFthqyiPDnLj/0VqExOyovzITK0ZD?= =?us-ascii?Q?KhxtP/57cfyD1Qa7lx0Oiwq+AtSrOcZgOoJN36GbOuGeIXcWqKmc79CqUVr3?= =?us-ascii?Q?5th7GW2Y+1uhzioKqnrr346jRPBhD509kq6M6NFpMVFC7Bo1zvtY9qegk4Dr?= =?us-ascii?Q?/sZozDyeO83U7RYtRVCH2WMealtn3R8ZUz9S7DFV+bmOvIQ7y16JL6ANCP9l?= =?us-ascii?Q?UyjYXQl7T/p0hNEjRiUx6Lmw+GKcQGzrXk29hQTYYZGMZm24sc6Gbu/43ym2?= =?us-ascii?Q?VOCvHX/4F9hrmhxpbY9twjcnZhJwwg6ttI3V7Hx136oTQkHOx49FM6Ior3y4?= =?us-ascii?Q?a1Iy2pbDlmQsP9H0bPluRqzBHqVxTmzI2Rv0Kog4csIDEcvtUXaXw7HeD0rt?= =?us-ascii?Q?25VUb8KZw7UwVrgZ3pnZnwMdo5TkRmszW988NXFMZqpRocttNjVw?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4378094a-8a6e-40cd-18b2-08df1939c7ec X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:13:26.9919 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: v96ph6Nvq88N3xdvHHa23sAy0KLGCrB58XGOsLdLAE+E35S2EFKOC5ZHTiFasyfpwvbj1ApjTT71kgoQ6SPjagW+8MX3pED50d7waoCUpOvADA/AsZPwrJ21a/teX912 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10997 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying I2C device, so resources requested with devm_*(component->dev, ...) in the component .probe are only released when the I2C device is removed, not on card unbind. This leaks the mclk clock, the regulator bulk, the platform data parsed from the device tree and the IRQ on every card bind/unbind cycle. Move the mclk clock and the regulator supplies (pure hardware resources tied to the I2C device) to da7218_i2c_probe() using devm on &i2c->dev. Likewise move the device tree parsing (da7218_of_to_pdata()), which also allocates with devm, to da7218_i2c_probe() and store the result in da7218->pdata; the OF helpers now take a struct device so they no longer depend on the component. Keep the IRQ in the component .probe (it feeds the component) but request it with the non-devm API and free it in da7218_remove(). Signed-off-by: Chancel Liu --- sound/soc/codecs/da7218.c | 129 +++++++++++++++++++------------------- 1 file changed, 65 insertions(+), 64 deletions(-) diff --git a/sound/soc/codecs/da7218.c b/sound/soc/codecs/da7218.c index 361daf14152e..a538b3dd1635 100644 --- a/sound/soc/codecs/da7218.c +++ b/sound/soc/codecs/da7218.c @@ -2298,7 +2298,7 @@ static const struct of_device_id da7218_of_match[] = =3D { MODULE_DEVICE_TABLE(of, da7218_of_match); =20 static enum da7218_micbias_voltage - da7218_of_micbias_lvl(struct snd_soc_component *component, u32 val) + da7218_of_micbias_lvl(struct device *dev, u32 val) { switch (val) { case 1200: @@ -2320,13 +2320,13 @@ static enum da7218_micbias_voltage case 3000: return DA7218_MICBIAS_3_0V; default: - dev_warn(component->dev, "Invalid micbias level"); + dev_warn(dev, "Invalid micbias level"); return DA7218_MICBIAS_1_6V; } } =20 static enum da7218_mic_amp_in_sel - da7218_of_mic_amp_in_sel(struct snd_soc_component *component, const char = *str) + da7218_of_mic_amp_in_sel(struct device *dev, const char *str) { if (!strcmp(str, "diff")) { return DA7218_MIC_AMP_IN_SEL_DIFF; @@ -2335,39 +2335,39 @@ static enum da7218_mic_amp_in_sel } else if (!strcmp(str, "se_n")) { return DA7218_MIC_AMP_IN_SEL_SE_N; } else { - dev_warn(component->dev, "Invalid mic input type selection"); + dev_warn(dev, "Invalid mic input type selection"); return DA7218_MIC_AMP_IN_SEL_DIFF; } } =20 static enum da7218_dmic_data_sel - da7218_of_dmic_data_sel(struct snd_soc_component *component, const char *= str) + da7218_of_dmic_data_sel(struct device *dev, const char *str) { if (!strcmp(str, "lrise_rfall")) { return DA7218_DMIC_DATA_LRISE_RFALL; } else if (!strcmp(str, "lfall_rrise")) { return DA7218_DMIC_DATA_LFALL_RRISE; } else { - dev_warn(component->dev, "Invalid DMIC data type selection"); + dev_warn(dev, "Invalid DMIC data type selection"); return DA7218_DMIC_DATA_LRISE_RFALL; } } =20 static enum da7218_dmic_samplephase - da7218_of_dmic_samplephase(struct snd_soc_component *component, const cha= r *str) + da7218_of_dmic_samplephase(struct device *dev, const char *str) { if (!strcmp(str, "on_clkedge")) { return DA7218_DMIC_SAMPLE_ON_CLKEDGE; } else if (!strcmp(str, "between_clkedge")) { return DA7218_DMIC_SAMPLE_BETWEEN_CLKEDGE; } else { - dev_warn(component->dev, "Invalid DMIC sample phase"); + dev_warn(dev, "Invalid DMIC sample phase"); return DA7218_DMIC_SAMPLE_ON_CLKEDGE; } } =20 static enum da7218_dmic_clk_rate - da7218_of_dmic_clkrate(struct snd_soc_component *component, u32 val) + da7218_of_dmic_clkrate(struct device *dev, u32 val) { switch (val) { case 1500000: @@ -2375,13 +2375,13 @@ static enum da7218_dmic_clk_rate case 3000000: return DA7218_DMIC_CLK_3_0MHZ; default: - dev_warn(component->dev, "Invalid DMIC clock rate"); + dev_warn(dev, "Invalid DMIC clock rate"); return DA7218_DMIC_CLK_3_0MHZ; } } =20 static enum da7218_hpldet_jack_rate - da7218_of_jack_rate(struct snd_soc_component *component, u32 val) + da7218_of_jack_rate(struct device *dev, u32 val) { switch (val) { case 5: @@ -2401,13 +2401,13 @@ static enum da7218_hpldet_jack_rate case 640: return DA7218_HPLDET_JACK_RATE_640US; default: - dev_warn(component->dev, "Invalid jack detect rate"); + dev_warn(dev, "Invalid jack detect rate"); return DA7218_HPLDET_JACK_RATE_40US; } } =20 static enum da7218_hpldet_jack_debounce - da7218_of_jack_debounce(struct snd_soc_component *component, u32 val) + da7218_of_jack_debounce(struct device *dev, u32 val) { switch (val) { case 0: @@ -2419,13 +2419,13 @@ static enum da7218_hpldet_jack_debounce case 4: return DA7218_HPLDET_JACK_DEBOUNCE_4; default: - dev_warn(component->dev, "Invalid jack debounce"); + dev_warn(dev, "Invalid jack debounce"); return DA7218_HPLDET_JACK_DEBOUNCE_2; } } =20 static enum da7218_hpldet_jack_thr - da7218_of_jack_thr(struct snd_soc_component *component, u32 val) + da7218_of_jack_thr(struct device *dev, u32 val) { switch (val) { case 84: @@ -2437,76 +2437,76 @@ static enum da7218_hpldet_jack_thr case 96: return DA7218_HPLDET_JACK_THR_96PCT; default: - dev_warn(component->dev, "Invalid jack threshold level"); + dev_warn(dev, "Invalid jack threshold level"); return DA7218_HPLDET_JACK_THR_84PCT; } } =20 -static struct da7218_pdata *da7218_of_to_pdata(struct snd_soc_component *c= omponent) +static struct da7218_pdata *da7218_of_to_pdata(struct device *dev, + struct da7218_priv *da7218) { - struct da7218_priv *da7218 =3D snd_soc_component_get_drvdata(component); - struct device_node *np =3D component->dev->of_node; + struct device_node *np =3D dev->of_node; struct device_node *hpldet_np; struct da7218_pdata *pdata; struct da7218_hpldet_pdata *hpldet_pdata; const char *of_str; u32 of_val32; =20 - pdata =3D devm_kzalloc(component->dev, sizeof(*pdata), GFP_KERNEL); + pdata =3D devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL); if (!pdata) return NULL; =20 if (of_property_read_u32(np, "dlg,micbias1-lvl-millivolt", &of_val32) >= =3D 0) - pdata->micbias1_lvl =3D da7218_of_micbias_lvl(component, of_val32); + pdata->micbias1_lvl =3D da7218_of_micbias_lvl(dev, of_val32); else pdata->micbias1_lvl =3D DA7218_MICBIAS_1_6V; =20 if (of_property_read_u32(np, "dlg,micbias2-lvl-millivolt", &of_val32) >= =3D 0) - pdata->micbias2_lvl =3D da7218_of_micbias_lvl(component, of_val32); + pdata->micbias2_lvl =3D da7218_of_micbias_lvl(dev, of_val32); else pdata->micbias2_lvl =3D DA7218_MICBIAS_1_6V; =20 if (!of_property_read_string(np, "dlg,mic1-amp-in-sel", &of_str)) pdata->mic1_amp_in_sel =3D - da7218_of_mic_amp_in_sel(component, of_str); + da7218_of_mic_amp_in_sel(dev, of_str); else pdata->mic1_amp_in_sel =3D DA7218_MIC_AMP_IN_SEL_DIFF; =20 if (!of_property_read_string(np, "dlg,mic2-amp-in-sel", &of_str)) pdata->mic2_amp_in_sel =3D - da7218_of_mic_amp_in_sel(component, of_str); + da7218_of_mic_amp_in_sel(dev, of_str); else pdata->mic2_amp_in_sel =3D DA7218_MIC_AMP_IN_SEL_DIFF; =20 if (!of_property_read_string(np, "dlg,dmic1-data-sel", &of_str)) - pdata->dmic1_data_sel =3D da7218_of_dmic_data_sel(component, of_str); + pdata->dmic1_data_sel =3D da7218_of_dmic_data_sel(dev, of_str); else pdata->dmic1_data_sel =3D DA7218_DMIC_DATA_LRISE_RFALL; =20 if (!of_property_read_string(np, "dlg,dmic1-samplephase", &of_str)) pdata->dmic1_samplephase =3D - da7218_of_dmic_samplephase(component, of_str); + da7218_of_dmic_samplephase(dev, of_str); else pdata->dmic1_samplephase =3D DA7218_DMIC_SAMPLE_ON_CLKEDGE; =20 if (of_property_read_u32(np, "dlg,dmic1-clkrate-hz", &of_val32) >=3D 0) - pdata->dmic1_clk_rate =3D da7218_of_dmic_clkrate(component, of_val32); + pdata->dmic1_clk_rate =3D da7218_of_dmic_clkrate(dev, of_val32); else pdata->dmic1_clk_rate =3D DA7218_DMIC_CLK_3_0MHZ; =20 if (!of_property_read_string(np, "dlg,dmic2-data-sel", &of_str)) - pdata->dmic2_data_sel =3D da7218_of_dmic_data_sel(component, of_str); + pdata->dmic2_data_sel =3D da7218_of_dmic_data_sel(dev, of_str); else pdata->dmic2_data_sel =3D DA7218_DMIC_DATA_LRISE_RFALL; =20 if (!of_property_read_string(np, "dlg,dmic2-samplephase", &of_str)) pdata->dmic2_samplephase =3D - da7218_of_dmic_samplephase(component, of_str); + da7218_of_dmic_samplephase(dev, of_str); else pdata->dmic2_samplephase =3D DA7218_DMIC_SAMPLE_ON_CLKEDGE; =20 if (of_property_read_u32(np, "dlg,dmic2-clkrate-hz", &of_val32) >=3D 0) - pdata->dmic2_clk_rate =3D da7218_of_dmic_clkrate(component, of_val32); + pdata->dmic2_clk_rate =3D da7218_of_dmic_clkrate(dev, of_val32); else pdata->dmic2_clk_rate =3D DA7218_DMIC_CLK_3_0MHZ; =20 @@ -2520,7 +2520,7 @@ static struct da7218_pdata *da7218_of_to_pdata(struct= snd_soc_component *compone if (!hpldet_np) return pdata; =20 - hpldet_pdata =3D devm_kzalloc(component->dev, sizeof(*hpldet_pdata), + hpldet_pdata =3D devm_kzalloc(dev, sizeof(*hpldet_pdata), GFP_KERNEL); if (!hpldet_pdata) { of_node_put(hpldet_np); @@ -2531,14 +2531,14 @@ static struct da7218_pdata *da7218_of_to_pdata(stru= ct snd_soc_component *compone if (of_property_read_u32(hpldet_np, "dlg,jack-rate-us", &of_val32) >=3D 0) hpldet_pdata->jack_rate =3D - da7218_of_jack_rate(component, of_val32); + da7218_of_jack_rate(dev, of_val32); else hpldet_pdata->jack_rate =3D DA7218_HPLDET_JACK_RATE_40US; =20 if (of_property_read_u32(hpldet_np, "dlg,jack-debounce", &of_val32) >=3D 0) hpldet_pdata->jack_debounce =3D - da7218_of_jack_debounce(component, of_val32); + da7218_of_jack_debounce(dev, of_val32); else hpldet_pdata->jack_debounce =3D DA7218_HPLDET_JACK_DEBOUNCE_2; @@ -2546,7 +2546,7 @@ static struct da7218_pdata *da7218_of_to_pdata(struct= snd_soc_component *compone if (of_property_read_u32(hpldet_np, "dlg,jack-threshold-pct", &of_val32) >=3D 0) hpldet_pdata->jack_thr =3D - da7218_of_jack_thr(component, of_val32); + da7218_of_jack_thr(dev, of_val32); else hpldet_pdata->jack_thr =3D DA7218_HPLDET_JACK_THR_84PCT; =20 @@ -2638,18 +2638,7 @@ static int da7218_handle_supplies(struct snd_soc_com= ponent *component) struct da7218_priv *da7218 =3D snd_soc_component_get_drvdata(component); struct regulator *vddio; u8 io_voltage_lvl =3D DA7218_IO_VOLTAGE_LEVEL_2_5V_3_6V; - int i, ret; - - /* Get required supplies */ - for (i =3D 0; i < DA7218_NUM_SUPPLIES; ++i) - da7218->supplies[i].supply =3D da7218_supply_names[i]; - - ret =3D devm_regulator_bulk_get(component->dev, DA7218_NUM_SUPPLIES, - da7218->supplies); - if (ret) { - dev_err(component->dev, "Failed to get supplies\n"); - return ret; - } + int ret; =20 /* Determine VDDIO voltage provided */ vddio =3D da7218->supplies[DA7218_SUPPLY_VDDIO].consumer; @@ -2887,21 +2876,8 @@ static int da7218_probe(struct snd_soc_component *co= mponent) if (ret) return ret; =20 - /* Handle DT/Platform data */ - if (component->dev->of_node) - da7218->pdata =3D da7218_of_to_pdata(component); - else - da7218->pdata =3D dev_get_platdata(component->dev); - da7218_handle_pdata(component); =20 - /* Check if MCLK provided, if not the clock is NULL */ - da7218->mclk =3D devm_clk_get_optional(component->dev, "mclk"); - if (IS_ERR(da7218->mclk)) { - ret =3D PTR_ERR(da7218->mclk); - goto err_disable_reg; - } - /* Default PC to free-running */ snd_soc_component_write(component, DA7218_PC_COUNT, DA7218_PC_FREERUN_MAS= K); =20 @@ -2965,10 +2941,10 @@ static int da7218_probe(struct snd_soc_component *c= omponent) } =20 if (da7218->irq) { - ret =3D devm_request_threaded_irq(component->dev, da7218->irq, NULL, - da7218_irq_thread, - IRQF_TRIGGER_LOW | IRQF_ONESHOT, - "da7218", component); + ret =3D request_threaded_irq(da7218->irq, NULL, + da7218_irq_thread, + IRQF_TRIGGER_LOW | IRQF_ONESHOT, + "da7218", component); if (ret !=3D 0) { dev_err(component->dev, "Failed to request IRQ %d: %d\n", da7218->irq, ret); @@ -2989,6 +2965,9 @@ static void da7218_remove(struct snd_soc_component *c= omponent) { struct da7218_priv *da7218 =3D snd_soc_component_get_drvdata(component); =20 + if (da7218->irq) + free_irq(da7218->irq, component); + regulator_bulk_disable(DA7218_NUM_SUPPLIES, da7218->supplies); } =20 @@ -3259,7 +3238,7 @@ static const struct regmap_config da7218_regmap_confi= g =3D { static int da7218_i2c_probe(struct i2c_client *i2c) { struct da7218_priv *da7218; - int ret; + int i, ret; =20 da7218 =3D devm_kzalloc(&i2c->dev, sizeof(*da7218), GFP_KERNEL); if (!da7218) @@ -3284,6 +3263,28 @@ static int da7218_i2c_probe(struct i2c_client *i2c) return ret; } =20 + /* Get required supplies */ + for (i =3D 0; i < DA7218_NUM_SUPPLIES; ++i) + da7218->supplies[i].supply =3D da7218_supply_names[i]; + + ret =3D devm_regulator_bulk_get(&i2c->dev, DA7218_NUM_SUPPLIES, + da7218->supplies); + if (ret) { + dev_err(&i2c->dev, "Failed to get supplies\n"); + return ret; + } + + /* Check if MCLK provided, if not the clock is NULL */ + da7218->mclk =3D devm_clk_get_optional(&i2c->dev, "mclk"); + if (IS_ERR(da7218->mclk)) + return PTR_ERR(da7218->mclk); + + /* Handle DT/Platform data */ + if (i2c->dev.of_node) + da7218->pdata =3D da7218_of_to_pdata(&i2c->dev, da7218); + else + da7218->pdata =3D dev_get_platdata(&i2c->dev); + ret =3D devm_snd_soc_register_component(&i2c->dev, &soc_component_dev_da7218, &da7218_dai, 1); if (ret < 0) { --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013048.outbound.protection.outlook.com [40.107.159.48]) (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 863BF43BDC7; Wed, 23 Sep 2026 06:13:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144021; cv=fail; b=cvoAmsEblUSONovwpg8Z0Sww6r4n+mUaD99bRZH1f5PsUMX8+43O1X9FFRBtrXEvtGEY2ZcKT8tysln7BOyLct/HXyA/edj6bDoysH6DFvpwWEl3FuFuv0XKyEmlBlWwkKZYVIDiiz2IBDrYu0cbXTsR1Vvq7q86gP+Q5uc0DlM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144021; c=relaxed/simple; bh=qEMqprp8CWTdo7TMThRLU1Zh5CRm1eBW79ke9ElAD9A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=SfVhiX4WRYeJHbDJxW5qB+SwO6hKi38s5WtuS1Ti70fqjr3Y//gOlpMs6jtx2UnrxuGLqbAIaecrsvlkjWF5JhaPWYVEo6JeFedM4/s6Ds8dXpeHGi+h6vtB9vF+EHQoI/39pbfOQ83P66YhlCtZZ89FviOdOEACMieLrnPjPP8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=iXY9osL+; arc=fail smtp.client-ip=40.107.159.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="iXY9osL+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pSmFrdYU/grkXA2E20aY2Q5VPs1WRgwORIXsvGhojDFTT6LtjZvJxpkEXOo9hHq7kozyxvbiFJNVywX6kx/aidBQEQuhBKs+xHj0IILoQfmEotAvte/PMPw2DUyNU8eiL9i6eBBv+XfD9vfN4Jduvy9xJpAZdhuX469hzFvfPt7kWuU2B0m6ggWKiOzqovv8t9a05tiqoJYo10SDuBnTWkAqSQ4CpmcYkqcAh1vhVwnoRFfo/dUWuARnDm29b6igyQtPEec7kr/nqkaC1pG+40wFy+pThVadHLO5aCqEmEwss+wsbLRKFbYEAchm1ZENBOI56nNTUtdyHPtCnHGxYg== 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=Cv2W0k0/Ejzq2odJu2pL7H9Wi9Ka+zCk4zA7jrVjKUk=; b=meztiJkFaLh0PujTHWm2mbKGxNEBlRgz4KjH94L7xz5wc/pHth/VgvqFXdc9UUdItzY3ehRPhFsK32RXYJh9HQ46UcCVbLoD47zrUqCXRuehMIcPtalHaeWI6vAa6p9ABbFvmHmKDVFlg9Vsyh/LwVr6SddNPPqJpx0n0PYLHg/pYTbb/9HWngnEYT6SfHqa4w8W7K/ATuGM5OwJ7XTm0fiK8dCKyO/Mct3vpsbo+oMO33zolrXzcOqY5YUAo779yK7M8zC/jjPepnrXsX1MHL0ImXM6ZkhjWFR3c7LiS1RPzt81i3BQwlBs5r+PsI1f9eZkweGR1uXZC1BU8UOC2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Cv2W0k0/Ejzq2odJu2pL7H9Wi9Ka+zCk4zA7jrVjKUk=; b=iXY9osL+4GzkXI1FrSxRaoUv5cfINTRHNR7Bx6ccuo2hJPWDQr/aYZJBrNKGZ5XoqInY1HADE4KrGxaiXxhLX918lKfIPHCjHfIKws4VrkRm2yK/B5dkIOAbEfqKjLL/dOjYHCWGQcmIkAprRLbvsBicr2AssmBN5eYLfYHs2WrDVwH0da55vwXPvAFiN3s5BbeRiYejDCvNYmBLgjM7CbO/sPcZSHlVvHuApbPFQAyQOyPAGN9Ainw3QIURDNvcjItQY4he4P1auB1LjnW8UBWglYbRF8iNyqoV5SD0mi2PY0YU+X0L77JYxfmplGNyE0Zs22X/Ei0EG+uqmUnfVA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by VI0PR04MB10997.eurprd04.prod.outlook.com (2603:10a6:800:267::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:13:33 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:13:33 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 03/21] ASoC: codecs: tlv320aic32x4: Fix clock leak from runtime callbacks Date: Wed, 23 Sep 2026 15:12:47 +0900 Message-ID: <20260923061305.4041197-4-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0078.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c6::15) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|VI0PR04MB10997:EE_ X-MS-Office365-Filtering-Correlation-Id: df4bae80-f219-4d73-8e78-08df1939cc06 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014|23010399003|19092799006|10067099003|56012099006|6133799003|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ZNm7EQwbkBxE7d8+QCvfcwfcyqGFOyi+UOjOVLMQ0ql+p+sZ37IwsvQmYIGy3btpuQy4CQLsta1cpt5UNWnQ8fGU+ggf5XxChgSBzhbz1YkFhQyG8vMgW3Guy6exmrOMotCDXUJhFWqNm+eEjxPPjOr18+EvFGd3tjejcu2t3Vwiw3tj0M+y55RnYuxoF4DN/ClbyAGNPLuwUN64pwWJGf+fMJvzn5CzQDyxGjLhi5Idj/0BKmn2YaRpIJeZG3r426P2wdRzfCsAMsQDRvMwQMWuH615zLPq8LsaiZz/Znb7aYBt1CK2Kn9bptDZ2RAjd8C6tXC7R8q+jh/AbHjSS8t2BvjyholtjAayHCsXgZG6wupkF4nOd1Ej18jfQoypcPVPtP2RQYiPs0pRearI9y1i+AxmfhHFnCo+BNgdo1r9Sk+iQTFEaHSD0lwflJp8EEnd4txBIpfA4Lf+wSY6/xpAo2gUgPB7MBMw1bEzECdftq8koTdPOLz+uMKMfIjcq54aMQhyFtpptx6ok7voNMI7hSoMmvBAKJw9BgLCvq3OdQij+f35Gp6SyVrqlnIyYx+20HSRp6FmVXzPybaiPhk/WhKXIh3Vqt75Yl4N2SxQ5VxExg02cr4S07IIedIh9nSOlTZuvZKbbOhmoV3PmWkaYRuaSoqEciXfE8mPCkw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(23010399003)(19092799006)(10067099003)(56012099006)(6133799003)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+657yRa8qhfwb55Lq+x/svDroKeJ/s4LZvRXnA1F4NoEPAhQxoAHn53kqL5T?= =?us-ascii?Q?dDfUOdXnCWg7ZJx+0Nroa+H2HiPUP42qPifUQJJJteaeQU/T/YE/HwPOaXrr?= =?us-ascii?Q?klEDUI5O4KComR/IB83y846PDG8Ev59EEGXffMYkDVYMIYZZoFO/JJi3c4mV?= =?us-ascii?Q?5+wdVeKgfkCvN88tpBVESeXnPq2YKiqwRwBRJxNxsY+M9cUMy5FdKl0yIuJk?= =?us-ascii?Q?+YiMV45/Fa6wK+n21kQrzETnwNJKXM5I+SF+n4nLpCnZXcoYU8jhIwl/XVCG?= =?us-ascii?Q?NIhPBfV5wiNipIwddvZHWUrqZY3QIiDqfVB+yqOujU/EX2tHCYsImjGyGpJI?= =?us-ascii?Q?q2iE7NLyKiVsbY3o0s6GQJobpGX8MK5KlKIRsCaV8jPhAMJIzFNi5oyLTX2+?= =?us-ascii?Q?hW1A10EzxNbyo+F9ygH0Spa5z017R41xrjHP1zB6FbuD4lrp6Qv2oNoVj0Hy?= =?us-ascii?Q?vL+QNPQk+ZmawRHtyvBUXOGBUjxe7ixd+x2a7uNHZ+66aPM4ja9RTGHJzNiF?= =?us-ascii?Q?5N5TiNZBJ4KmP423Sdq6K3FyKIyGgvXQRFIcGmcNyTwg/+mJgcUgtIJLCa/8?= =?us-ascii?Q?4zdjLHhDxz6yekWPBFmZ7cOJ9aJfIV58OvK1cbqW41O1yAZst+6PwnqNUbJf?= =?us-ascii?Q?baTEArJw3QOL96/sLI4sGFePccsmmtSM1GrBW856K/FSqJwfP/4ggrqBN8e6?= =?us-ascii?Q?aLHfaC4xgT5txfN1ksxtXK3INoTd9mzfxhSTmBvSx7UCj3K4cSY7t2yE5Za3?= =?us-ascii?Q?drqNVrxgTfwOZR7Z/z9NJA4BUYgFwDkQ+Oj3e5PwK8fv9nm4xJeb9sK1L9pu?= =?us-ascii?Q?f3x7pYQSy0IEakeZotQhAhjNyH+E/h/YnKED1FcxuesDlft951PcARiLsthu?= =?us-ascii?Q?jSMWXgk+c/ndpHCU0qWgEfw4H0qx8F8yzlVI0lD2Y9zhzn8Oy7XmLtMWFEUC?= =?us-ascii?Q?TDAayaViXzB/8N+rx+kaYy/EDDiOLfx1udACuZE2u9veb/uyySxbHyWHQxJ/?= =?us-ascii?Q?DvVxtZ5U0JvLacOKYujyCXa0gZDnzT2gBMEekBMv5dDv6f32aAtRgUFLp6nF?= =?us-ascii?Q?gnPQzZJzWhslhgjQVshEAg1aeCUffsSEdvWyEVAJvbvHoMkkomYNnx2tm/YP?= =?us-ascii?Q?L3WJ849mbP6b4eSKsddiuoFbY8TaPlOmJBUrVKBB/5F3gvyprBksatqlWqQg?= =?us-ascii?Q?gDSyVN46X6TZq/F4uYRcFTZcWn0WOYklXnTYxATKsR2Wgg2GMtybERJhbqX1?= =?us-ascii?Q?WTGsQDOBOFLaY973Fg+R6CPUqJrIlIlUYh9pCXTY6OTq0SIsPawbhcIW4iAg?= =?us-ascii?Q?HQ2SQW8MvZm9eqvCGpnv38/spsq8//PTdqYQfc1DiVfzgY/wF0N/I95jQi2d?= =?us-ascii?Q?SiuX4all0HZky1ouJCbtcEaPkPQ4fsyLuHDHX6VAZN8J4NKchjrWkYhhgX3A?= =?us-ascii?Q?Ksw6x+g+w/2IbxdcUoUSNalchbePu1HaIRkI3qRRZEXOraqXAj/7aTzlH0Vf?= =?us-ascii?Q?5Gm51sp49E7TvfnALVduFc9NXb1yUklUAbX6T07tDxGYtliCUeyW8a5dej7N?= =?us-ascii?Q?QGQPlpDN4NOBb6IOnHWpqL90MlQfP6KCNvabgvvzghAd4x3Xy3FNs9q83d0h?= =?us-ascii?Q?/KRu5PYF8U+cerdtuvI8WxT1bw5Uv7KGc6jFUemMlpLBRMtvub4M2LdoqPeq?= =?us-ascii?Q?sHDKvxWMEzoW+f0rgefUPuei/7HPJ8GxYITb32vLB3nncecXA4Z+PfO3HS0k?= =?us-ascii?Q?z0BAMNQcxT53NBd0Nq58lLLIXsKtPSHiBweUjE0F5j+28GF7TpjK?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: df4bae80-f219-4d73-8e78-08df1939cc06 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:13:33.8254 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KRCqxvmnrGLcHtmMjS7dUhYVJX/uwNIBm6OqFlEbbdG+oEWNUBszZ46eWRZ+cSH3VuORk7a/SYcfLYXyqj2ldGqhgeYud+KGHLg3l/mCrSlQoaPvXmBBxlMn96/5dch0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10997 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying I2C/SPI device. The driver acquired its codec clocks with devm_clk_get()/devm_clk_bulk_get(component->dev, ...) from the DAI set_sysclk runtime callback, from set_bias_level and from the component .probe. Because devres on component->dev is only released when the platform device is removed, each card bind/unbind (and, for set_sysclk, each runtime invocation) leaked a fresh clock reference. Acquire all codec clocks once in the bus probe with a single devm_clk_bulk_get() into the private struct, and have the runtime callbacks and both component probes reuse those stored references. Signed-off-by: Chancel Liu --- sound/soc/codecs/tlv320aic32x4.c | 94 +++++++++++++++----------------- 1 file changed, 44 insertions(+), 50 deletions(-) diff --git a/sound/soc/codecs/tlv320aic32x4.c b/sound/soc/codecs/tlv320aic3= 2x4.c index af4be5bee723..7fec94768afb 100644 --- a/sound/soc/codecs/tlv320aic32x4.c +++ b/sound/soc/codecs/tlv320aic32x4.c @@ -48,8 +48,18 @@ struct aic32x4_priv { enum aic32x4_type type; =20 unsigned int fmt; + + struct clk_bulk_data clocks[7]; }; =20 +#define AIC32X4_CLK_CODEC_CLKIN 0 +#define AIC32X4_CLK_PLL 1 +#define AIC32X4_CLK_NADC 2 +#define AIC32X4_CLK_MADC 3 +#define AIC32X4_CLK_NDAC 4 +#define AIC32X4_CLK_MDAC 5 +#define AIC32X4_CLK_BDIV 6 + static int aic32x4_reset_adc(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { @@ -591,14 +601,10 @@ static int aic32x4_set_dai_sysclk(struct snd_soc_dai = *codec_dai, int clk_id, unsigned int freq, int dir) { struct snd_soc_component *component =3D codec_dai->component; + struct aic32x4_priv *aic32x4 =3D snd_soc_component_get_drvdata(component); struct clk *mclk; - struct clk *pll; - - pll =3D devm_clk_get(component->dev, "pll"); - if (IS_ERR(pll)) - return PTR_ERR(pll); =20 - mclk =3D clk_get_parent(pll); + mclk =3D clk_get_parent(aic32x4->clocks[AIC32X4_CLK_PLL].clk); =20 return clk_set_rate(mclk, freq); } @@ -750,17 +756,7 @@ static int aic32x4_setup_clocks(struct snd_soc_compone= nt *component, unsigned long adc_clock_rate, dac_clock_rate; int ret; =20 - struct clk_bulk_data clocks[] =3D { - { .id =3D "pll" }, - { .id =3D "nadc" }, - { .id =3D "madc" }, - { .id =3D "ndac" }, - { .id =3D "mdac" }, - { .id =3D "bdiv" }, - }; - ret =3D devm_clk_bulk_get(component->dev, ARRAY_SIZE(clocks), clocks); - if (ret) - return ret; + struct clk_bulk_data *clocks =3D &aic32x4->clocks[AIC32X4_CLK_PLL]; =20 ret =3D aic32x4_configure_rate(component, sample_rate, &aosr, &adc_resource_class, &dac_resource_class, @@ -876,18 +872,15 @@ static int aic32x4_set_bias_level(struct snd_soc_comp= onent *component, enum snd_soc_bias_level level) { struct snd_soc_dapm_context *dapm =3D snd_soc_component_to_dapm(component= ); + struct aic32x4_priv *aic32x4 =3D snd_soc_component_get_drvdata(component); int ret; =20 struct clk_bulk_data clocks[] =3D { - { .id =3D "madc" }, - { .id =3D "mdac" }, - { .id =3D "bdiv" }, + aic32x4->clocks[AIC32X4_CLK_MADC], + aic32x4->clocks[AIC32X4_CLK_MDAC], + aic32x4->clocks[AIC32X4_CLK_BDIV], }; =20 - ret =3D devm_clk_bulk_get(component->dev, ARRAY_SIZE(clocks), clocks); - if (ret) - return ret; - switch (level) { case SND_SOC_BIAS_ON: ret =3D clk_bulk_prepare_enable(ARRAY_SIZE(clocks), clocks); @@ -970,23 +963,16 @@ static int aic32x4_component_probe(struct snd_soc_com= ponent *component) { struct aic32x4_priv *aic32x4 =3D snd_soc_component_get_drvdata(component); u32 tmp_reg; - int ret; =20 - struct clk_bulk_data clocks[] =3D { - { .id =3D "codec_clkin" }, - { .id =3D "pll" }, - { .id =3D "bdiv" }, - { .id =3D "mdac" }, - }; - - ret =3D devm_clk_bulk_get(component->dev, ARRAY_SIZE(clocks), clocks); - if (ret) - return ret; + struct clk *codec_clkin =3D aic32x4->clocks[AIC32X4_CLK_CODEC_CLKIN].clk; + struct clk *pll =3D aic32x4->clocks[AIC32X4_CLK_PLL].clk; + struct clk *bdiv =3D aic32x4->clocks[AIC32X4_CLK_BDIV].clk; + struct clk *mdac =3D aic32x4->clocks[AIC32X4_CLK_MDAC].clk; =20 aic32x4_setup_gpios(component); =20 - clk_set_parent(clocks[0].clk, clocks[1].clk); - clk_set_parent(clocks[2].clk, clocks[3].clk); + clk_set_parent(codec_clkin, pll); + clk_set_parent(bdiv, mdac); =20 /* Power platform configuration */ if (aic32x4->power_cfg & AIC32X4_PWR_MICBIAS_2075_LDOIN) { @@ -1127,23 +1113,16 @@ static int aic32x4_tas2505_component_probe(struct s= nd_soc_component *component) { struct aic32x4_priv *aic32x4 =3D snd_soc_component_get_drvdata(component); u32 tmp_reg; - int ret; - - struct clk_bulk_data clocks[] =3D { - { .id =3D "codec_clkin" }, - { .id =3D "pll" }, - { .id =3D "bdiv" }, - { .id =3D "mdac" }, - }; =20 - ret =3D devm_clk_bulk_get(component->dev, ARRAY_SIZE(clocks), clocks); - if (ret) - return ret; + struct clk *codec_clkin =3D aic32x4->clocks[AIC32X4_CLK_CODEC_CLKIN].clk; + struct clk *pll =3D aic32x4->clocks[AIC32X4_CLK_PLL].clk; + struct clk *bdiv =3D aic32x4->clocks[AIC32X4_CLK_BDIV].clk; + struct clk *mdac =3D aic32x4->clocks[AIC32X4_CLK_MDAC].clk; =20 aic32x4_setup_gpios(component); =20 - clk_set_parent(clocks[0].clk, clocks[1].clk); - clk_set_parent(clocks[2].clk, clocks[3].clk); + clk_set_parent(codec_clkin, pll); + clk_set_parent(bdiv, mdac); =20 /* Power platform configuration */ if (aic32x4->power_cfg & AIC32X4_PWR_AVDD_DVDD_WEAK_DISABLE) @@ -1362,6 +1341,21 @@ int aic32x4_probe(struct device *dev, struct regmap = *regmap, if (ret) goto err_disable_regulators; =20 + aic32x4->clocks[AIC32X4_CLK_CODEC_CLKIN].id =3D "codec_clkin"; + aic32x4->clocks[AIC32X4_CLK_PLL].id =3D "pll"; + aic32x4->clocks[AIC32X4_CLK_NADC].id =3D "nadc"; + aic32x4->clocks[AIC32X4_CLK_MADC].id =3D "madc"; + aic32x4->clocks[AIC32X4_CLK_NDAC].id =3D "ndac"; + aic32x4->clocks[AIC32X4_CLK_MDAC].id =3D "mdac"; + aic32x4->clocks[AIC32X4_CLK_BDIV].id =3D "bdiv"; + + ret =3D devm_clk_bulk_get(dev, ARRAY_SIZE(aic32x4->clocks), + aic32x4->clocks); + if (ret) { + dev_err(dev, "Failed to get clocks\n"); + goto err_disable_regulators; + } + switch (aic32x4->type) { case AIC32X4_TYPE_TAS2505: ret =3D devm_snd_soc_register_component(dev, --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011034.outbound.protection.outlook.com [40.107.130.34]) (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 2C275415F0B; Wed, 23 Sep 2026 06:13:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.34 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144031; cv=fail; b=BlGj+Z7GlLm6JhHYsAWNVqN64d8BAPaM1lV0474JvnBJsjpBus9H4RsCi/wbzrfKa9Wq7i58EDGbETKqhh7/sLZrdu+iWkcs6QZToCP+uuTxPBtd0WJlJYUWwACi/4tB92RLJOSRbhNpCxL023GN+3W+E40djj3vE/lCD8ATJy0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144031; c=relaxed/simple; bh=XP5kDniofYKa/9VQ7QhRDEBhaOJNuAK7XrVXn9wZjdU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ri1q3XyRZb8iiCgEdikpQMeahsOdLAyOFleVdWbwCybg2j/pkrzPhSToInlht+HVN/B+udMXOQa0b53K9GPVO9wc5rfsB3vChjiCjVGTr7ORXzrKYgVjWEt2iMY/eVE/FWR5SRShb+/+b+hgKK4hl8A8QJuY4o618+zo7HaKbfY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=vXo/Ugpe; arc=fail smtp.client-ip=40.107.130.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="vXo/Ugpe" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mJZREmFXhWGswqTRkqhxC0UbrwNr3jS/WTU9+6aVYPo4uEyagN8ahDHcrm6Xdvopy0ABBLU8f/Hg7Yx4+wqWlXhxdlQks9/G19ziiKfCYuLnhR7EzrrpoMBWAs0lwJVm0hbeqgcgk6EGyDKGM3qZBBZvDt57PoDcZmEiOSFlkMv2ftgrOxbPOroh9PQx7/Iv1PH46vk/sEZAAwG6dWRioxVc7K0pjVPPCzayOJxPShyOHxLGILe/dEBDPE/RghIu2bghvmUCZzLdjAqZ3uG4sca8rJXBCQRLTOA0m84fpy/7Ctc2FQXM0/kJOglyABgrEWFeDuLsPL0yyCchf9Y4zw== 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=DcavGUxELXPW98RJksf9nLoEG+k/mtu5EkghU1zE0dA=; b=F2dyq4jzBoJBOBCXVCKQZ4EH7+YcxJnUnkH0Enz2f3FsKGt/UpNWrHV54RCFJu5n5Bv0Le1ZClVB4vHRZFK2datJXyTeOItS1Xys9/o/CB0I7xl1btuVrSJDg+Y3+DIFMzFBenay7VkqTf9Jb4cft0Hfa1kXnnM5j48L4Z0unpzbv9GdBDaF5hhWKMLIjjZav+AUnwJLIRRU0wsdM7YfBTPmqc2QbQ1YHBgxGocfCM+U4IWab0ZnjL4ehiOytj75ywd/rP0tF77prSL67OEo2nbqaKmPmPxvkp/MtFdM5FR9lY5qEG5u8HXe14zskwSYBzwl/43HtiCnvpxofIWSfg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DcavGUxELXPW98RJksf9nLoEG+k/mtu5EkghU1zE0dA=; b=vXo/UgpeyF80hD/FuLCkxFt+5klvePZ2goi2Imwqu96bEzl5xK7kDynhlK8A/UW+ONamoukOpaDXJ1qISyJOzMb5mHeM7CoZCu0RnepX1TNssgHOAvs+5muT+XgDFYjKr0agbt7yiTaMsZgSbkMSaIOg1ewbE+tTYHN0o3DQnEg5F0cBHJkpjTQg8vtVX2bts+A+Pu92rEeQnqRXWT3hh4AlAdN7504RMvXNfOJPrkoOcJ17o6ECZJJPGnZ+Ba70TejvrgwlaDegRBdd+mmh5v6uOBlZsvjLKLN8n4kKQ+TsvxdE/IzO5r9CWMrLbGKeVA2nS0SFkUPSb/UfeqVNTA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by VI0PR04MB10997.eurprd04.prod.outlook.com (2603:10a6:800:267::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:13:41 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:13:41 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 04/21] ASoC: codecs: twl4030: Acquire board params and hs_extmute GPIO in the platform probe Date: Wed, 23 Sep 2026 15:12:48 +0900 Message-ID: <20260923061305.4041197-5-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0060.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2ba::8) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|VI0PR04MB10997:EE_ X-MS-Office365-Filtering-Correlation-Id: 0756055c-8bcf-4387-8b97-08df1939d0bc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014|23010399003|19092799006|10067099003|56012099006|3023799007|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: TzYKsSdy6zL1gbMVhOAfGYyHijOvkQact7KtqLBR9Lsd5xecNsYlRJ4V5SOpzsvXetA6IZIN02vWqx0CejI+1vlEx44z4v4/tr5nOXmQSI6PYcsHAM3qHIHlIS8j9CUip4aB8FnAjJ+a7Eyq8sDTXdecQNYApz4nUTMH8yMJfXl/aG3UVFr2/b2zNVjVtOdjXWJ6j1X8+NcxRLNHImDFVSyUJnF0NtuPVaUK6rFLx62ZKp6wMvosnaxGyRsgreKRZrE1AAPQbmnhrS3VgO1oX8a1THFrcB0w+UUbpk1kQ4PbcWCRjOEWu5vA2CF7XcMVdkDuo2TnNz2bqU4OTinc0ejFRM5oJo9k0gilO3qFz/m4T7AHeRYCXvFayid9R2dXozXLxIHzlYdzHC/ei3lz8h0vBzDyooR3JdZnvD1IPRd71M1oizbUL2GG4iPHo10Er1oE6HYc9BF74LAynsoByQv8UvyUrqIvZcfefxPVakTH8sONX1E9/YuNldjtJZngxfzyOM/uGKR565cbTZb/3qn0heBZivYFhyvaWd//ysXGnvkt/D+/Y5P4ufxumfJh4pfvxr96Sb6BPCRZQhnEDOdrQqM0w8B2aIQRODX3gHvQq/cj9HJiFU03WG4VVZJafQ/LlY9FTTvVpOaVfDYRn6nVFR/S0P8DlHWmzjNUNlY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014)(23010399003)(19092799006)(10067099003)(56012099006)(3023799007)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?aGjPqjzjhtZYNTP5hWeulpzfwo7RoUWYOfTriFcktEsXjhB5J0u5TBr9a0i8?= =?us-ascii?Q?I8FRw+F9wk7VrFIke2Qoh5zQg15AJnJn54fsmTLM7LyE4RXbfrJGi6jq9oVx?= =?us-ascii?Q?55cmnEq6cyq6YL7moqPi+oPh64zoEwnYTp4lkBa6QvChCmCexHY/ncTN/YS6?= =?us-ascii?Q?aIQzNjeRVCiP2JCiPkE2gbiAjesI57K/iaZxmK0y2zr0oYgzWGKjvqSWV/kv?= =?us-ascii?Q?9dLULUoc3IMPR5RzLPMDhDAk6NWmtIjQA+XdBKWCKlht77sy+gKH6S53X+u6?= =?us-ascii?Q?unyizTNzo6O4rVRRgod7Va3R6zu1T7w1PP9aLSl4xAdnMkWefW60wb7m3zQp?= =?us-ascii?Q?axaOl7pa/mDZQuwSEqOdexuK4Gxe05jACw1yfYScq3gVlR0Nhp6vKhFfYwKJ?= =?us-ascii?Q?F/ibCbB05HraSi64kA7MEOn/ph0NZnZdOWBQWBdHPKQapQrVV264r3uW7dyh?= =?us-ascii?Q?dfMBwKlzI+CGyNN8K8g2Vxayy/xV7+LBML0wwMucS/ualvJpJSTID+Wz49Xa?= =?us-ascii?Q?koGrsjDyY1QLriX0s+uH+NxwGKJAhWsoWgY8E1kwd8zg1cMgb5/sjLRPd0VD?= =?us-ascii?Q?gh9w+nSubv1Dssx1VbbNE40NxR5yC3sRPIFal8STdQ6v6pOnq6uvfvQ6tL/H?= =?us-ascii?Q?zdD/JRQEVq1hy1Ql9zEaCKjjCSVIfqolx7jInNudR/fLwFCnbyE7j327zZcj?= =?us-ascii?Q?QMiAWpMPivIf7M58hoOm4fNWAodjxQ343zDIauMfu3QSnO8JjImR1qycsAW2?= =?us-ascii?Q?T9g3M7/ACrsybeaUTisVOAZ5YJZ99aCtj4BdIzSO55AJQcVBZMKKU3xdqRjp?= =?us-ascii?Q?xRd/TRrEXZZob1kvwwiVxVHlqOMj2e7ZfBBPOq4LUulTJAS8SCi8gap6h4tG?= =?us-ascii?Q?3+AOR1Pq8gpSfDgEbDyNMNdv+53HCF19evOWt1xAvCr+dNzApqJr9Cvmj920?= =?us-ascii?Q?wvrliNytyiIApB4GkibLetfS3OYBiciOWhI34VXoKKNa7D561HKIudSLz/2t?= =?us-ascii?Q?DEYnwckDAFfsUXlcIMk9nupQAbuecIGl2jOGVJ04M+OiVfwjOU5/K7/wuGOZ?= =?us-ascii?Q?4blCPnFFMsCf+YTu6PHDwROVEC56C5jmFMgf1nI7DBHkntdCgibGmR5nQIh7?= =?us-ascii?Q?XY+khAA4zrkTUtSSUEtI0W6TldF1L65CnqY2gQZyNGj+itkP1qOIrDWvJvMm?= =?us-ascii?Q?Pidf71vZGn2h41fwKSlrB2vOGdAk/yGub+nqHvOI4/hAVZqTrOTOycnPpXSd?= =?us-ascii?Q?BRvNp6J8M4ani4O0caHoEMTuUB8aHq8bqL2fGq4Kclpt5KmRloTT1Nn7HUWM?= =?us-ascii?Q?UX2FH4p8FnlVgq8fL+pByPtZ6tWf1XT0ED4KFrt3KNFplc8hf34UgzzBk9G4?= =?us-ascii?Q?8sfKZLtwB8mFpTuhIxKHqX9CY+0NOnQf2XHfVpnZB4bgX9RtUAOLfiLZX8fz?= =?us-ascii?Q?T0B0gz3REbiPpDXJIk/PObclU2v54ONP+EpQ/66AwCdZ+W1pHmjQN1H7S6rQ?= =?us-ascii?Q?ms0DrzvVbWsMJoVrQa79AlAGc/MmVzQ82FWVFIS9Dn/38BrjQLhLu2pepbha?= =?us-ascii?Q?kOXlvbg71JX8KA+eP4+yyO8CD7li5esLQd2vp97sS9i7gMfxfEvjTKWDbVZJ?= =?us-ascii?Q?DaIG1iPNjqR6K+gpCJtpFbF4sBdUnoEGGeK1pV+cMEYzw5/3wQs2/znJQSrK?= =?us-ascii?Q?cqY1fPuDsCLN7HLhZOoREA3VC8jfJ64fixoDHi9smlSFlOC0/jvexnBNTtMK?= =?us-ascii?Q?qJJM3ABy1rHfL523uIvF7J4RZU3ZMd9LMDSmOWu3xwnHkgshPgPW?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0756055c-8bcf-4387-8b97-08df1939d0bc X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:13:41.7105 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hF2NJobo9G/u7ExJckSc2lFT93WUxnoqqIguxQCdLvn0tcs7zTjBAyRmwYj++DkkTjncvTApawU0cx5VScVoWr1BDDhpP/MEwRIe1S7noOQ+AlsRMquOtEo1Y0L01oSL X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR04MB10997 Content-Type: text/plain; charset="utf-8" From: Chancel Liu The component .probe/.remove callbacks fire on ASoC card bind/unbind, but component->dev is the underlying platform device whose devres is only released on physical device removal. Resources allocated with devm_*(component->dev, ...) in the component probe are therefore never freed on card unbind, leaking one copy per bind/unbind cycle and leaking the hs_extmute GPIO descriptor (which can also fail to be re-acquired on re-bind). The board parameters and the hs_extmute GPIO are pure hardware/device level resources: they only depend on the physical device and the DT, not on the ASoC component. Acquire them (together with the driver context) in twl4030_codec_probe() using devm on the platform device, and hand the context to the component through drvdata. Their devres lifetime then correctly follows the device rather than the card bind/unbind, so no explicit component .remove is needed. The component probe keeps only the codec register initialisation that genuinely needs the component. Signed-off-by: Chancel Liu --- sound/soc/codecs/twl4030.c | 63 +++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c index b986ece55d5a..442624cf2a31 100644 --- a/sound/soc/codecs/twl4030.c +++ b/sound/soc/codecs/twl4030.c @@ -212,21 +212,21 @@ twl4030_get_board_param_values(struct twl4030_board_p= arams *board_params, } =20 static struct twl4030_board_params* -twl4030_get_board_params(struct snd_soc_component *component) +twl4030_get_board_params(struct device *dev) { struct twl4030_board_params *board_params =3D NULL; struct device_node *twl4030_codec_node =3D NULL; =20 - twl4030_codec_node =3D of_get_child_by_name(component->dev->parent->of_no= de, + twl4030_codec_node =3D of_get_child_by_name(dev->parent->of_node, "codec"); =20 if (twl4030_codec_node) { - board_params =3D devm_kzalloc(component->dev, + board_params =3D devm_kzalloc(dev, sizeof(struct twl4030_board_params), GFP_KERNEL); if (!board_params) { of_node_put(twl4030_codec_node); - return NULL; + return ERR_PTR(-ENOMEM); } twl4030_get_board_param_values(board_params, twl4030_codec_node); of_node_put(twl4030_codec_node); @@ -235,21 +235,22 @@ twl4030_get_board_params(struct snd_soc_component *co= mponent) return board_params; } =20 -static int twl4030_init_chip(struct snd_soc_component *component) +static int twl4030_get_hw_params(struct device *dev, + struct twl4030_priv *twl4030) { struct twl4030_board_params *board_params; - struct twl4030_priv *twl4030 =3D snd_soc_component_get_drvdata(component); - u8 reg, byte; - int i =3D 0; =20 - board_params =3D twl4030_get_board_params(component); + board_params =3D twl4030_get_board_params(dev); + if (IS_ERR(board_params)) + return PTR_ERR(board_params); =20 if (board_params && board_params->hs_extmute) { - board_params->hs_extmute_gpio =3D devm_gpiod_get_optional(component->dev, + board_params->hs_extmute_gpio =3D devm_gpiod_get_optional(dev, "ti,hs_extmute", GPIOD_OUT_LOW); if (IS_ERR(board_params->hs_extmute_gpio)) - return dev_err_probe(component->dev, PTR_ERR(board_params->hs_extmute_g= pio), + return dev_err_probe(dev, + PTR_ERR(board_params->hs_extmute_gpio), "Failed to get hs_extmute GPIO\n"); =20 if (board_params->hs_extmute_gpio) { @@ -257,7 +258,7 @@ static int twl4030_init_chip(struct snd_soc_component *= component) } else { u8 pin_mux; =20 - dev_info(component->dev, "use TWL4030 GPIO6\n"); + dev_info(dev, "use TWL4030 GPIO6\n"); =20 /* Set TWL4030 GPIO6 as EXTMUTE signal */ twl_i2c_read_u8(TWL4030_MODULE_INTBR, &pin_mux, @@ -269,6 +270,18 @@ static int twl4030_init_chip(struct snd_soc_component = *component) } } =20 + twl4030->board_params =3D board_params; + + return 0; +} + +static int twl4030_init_chip(struct snd_soc_component *component) +{ + struct twl4030_priv *twl4030 =3D snd_soc_component_get_drvdata(component); + struct twl4030_board_params *board_params =3D twl4030->board_params; + u8 reg, byte; + int i =3D 0; + /* Initialize the local ctl register cache */ tw4030_init_ctl_cache(twl4030); =20 @@ -288,8 +301,6 @@ static int twl4030_init_chip(struct snd_soc_component *= component) if (!board_params) return 0; =20 - twl4030->board_params =3D board_params; - reg =3D twl4030_read(component, TWL4030_REG_HS_POPN_SET); reg &=3D ~TWL4030_RAMP_DELAY; reg |=3D (board_params->ramp_delay_value << 2); @@ -2163,15 +2174,9 @@ static struct snd_soc_dai_driver twl4030_dai[] =3D { =20 static int twl4030_soc_probe(struct snd_soc_component *component) { - struct twl4030_priv *twl4030; + struct twl4030_priv *twl4030 =3D dev_get_drvdata(component->dev); =20 - twl4030 =3D devm_kzalloc(component->dev, sizeof(struct twl4030_priv), - GFP_KERNEL); - if (!twl4030) - return -ENOMEM; snd_soc_component_set_drvdata(component, twl4030); - /* Set the defaults, and power up the codec */ - twl4030->sysclk =3D twl4030_audio_get_mclk() / 1000; =20 return twl4030_init_chip(component); } @@ -2193,6 +2198,22 @@ static const struct snd_soc_component_driver soc_com= ponent_dev_twl4030 =3D { =20 static int twl4030_codec_probe(struct platform_device *pdev) { + struct twl4030_priv *twl4030; + int ret; + + twl4030 =3D devm_kzalloc(&pdev->dev, sizeof(*twl4030), GFP_KERNEL); + if (!twl4030) + return -ENOMEM; + + /* Set the defaults, and power up the codec */ + twl4030->sysclk =3D twl4030_audio_get_mclk() / 1000; + + ret =3D twl4030_get_hw_params(&pdev->dev, twl4030); + if (ret) + return ret; + + platform_set_drvdata(pdev, twl4030); + return devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_twl4030, twl4030_dai, ARRAY_SIZE(twl4030_dai)); --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010065.outbound.protection.outlook.com [52.101.69.65]) (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 D2D7342E8F0; Wed, 23 Sep 2026 06:13:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144048; cv=fail; b=UzHixuMw3dcRqR2g/pSnHm/lUp25Sp+fddhtoUnfvuEekAN1gEBkmpzLi7GCkYs7ZdlYjLMYak18PTcXEv6ub2/rsAJBhphopGVmUqDkgv14O85B85lT3FQIxBDRPxxfQv5kjpko2O9H7JMh5Gk6uwbnXd9paS9CXamlwjPOQaM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144048; c=relaxed/simple; bh=QjTRwWXeLgHnbSiJxCHL0q62L09aC/5C+KC63eh9SX0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=CYHvocq3TME010BfcXh/9KClNtafKwcuw+rb0mVhhk3G9dsMXMLGHaRP0o1wtM+0FhIFAblvUNZYcYsw5uJOvUQmNiEHVMMBoKB1JWQU8zUO/G7tXrDkDoVS5uD/ioTl8FpNrG8XVTdXpl+2J2chWHtyrYudk5YbFfjrXWFcOGM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=xydOLsd3; arc=fail smtp.client-ip=52.101.69.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="xydOLsd3" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mY/I3m5CvwT68zaUmJ0uwsSytw+yKzT/NsBTottvg6Rpi48UYqtkDfTfeHfDQCc9P/2PrdUi5MvTaX9u7oJ1iUGoin5/Wit8hMvKR6F7lSKPsmViZWz779TpjL2zEIsrhmAKJMJku0M0zSJ1duPrlnky0f2r9OA7pFc4CDn5WvGYb1LDqeImaJVcnPuSqOenD8J1bqoWXRqgH+FVFx8xWvsXpawRfqbhM/uOP1rBmSTolTitEqdjT1jbyvHCXW+lQPbR2dqDQ7qePJnFILQPBrv76SeTTLrUcyUubZ7+t8LdNm1LkiCazbL1zQFZZKoPpfJG6w6la5+YLxLJ4RwS2g== 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=2G/gwqRaBvMiPM7MSHBjpa+qTOS9DfoQPYr3z4aeoLo=; b=CmYUc4G0BLA5OMdfmgOTRQIE17kJ070AwNpXYPbf2Kksah+PjOlsZ2JPYv4r6CPYKIYp9+/QnzV/xPafcvRd/PldiGMxxizhTfwPrmg01hLfGYa3IV1TbB18XkJPBcle+LaUH04W8U0LWONQ7sRap53IH6an5j4LYAnmg8PtKj2VFGc34MmOPZAI21p7+xLYC+jLhN9oTR4aW45utq70DYjAVxDRRNMulhueHlamdTIa0GsvS9XYIZIJ02t8eGvyiKSy+Nu0K/2yCe8UamO775ZlUmPh6jmgHwvwapn5eIWpADwaVaySi8wEzxAdYrju0M/BBufpZK7p6AwmUpm9YQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2G/gwqRaBvMiPM7MSHBjpa+qTOS9DfoQPYr3z4aeoLo=; b=xydOLsd3YpPGT302+vaSpDOHW2DNsDfVzfOkeYZq05BCSamfuthh3g7Wtbt0UrJPwI6gzgjgC+aTfQV176IZKbPkVf6fqKofFi94+5FGu/f45dYxrUmLOBnVG+koboXx1fgHR05fETxN8496K9pOC0WB/ZipllnUkJf05/CdQ1fzGBl6WC9Is9wob2U/GhU2I4EgYREzasqxr43PFy3CUI6bMUdfOXGNEGdJeK136mvSv6CHQUW2tuL/OTICMtPh7iS2GMBzpQV8gio5ZPd9W5ZhVBtRap9dbW0+7UUogrPOhFTMoJFeOCNtodJxY0Jm/AkXX4WV/nTN8AiBVq9QTQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:13:55 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:13:54 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 05/21] ASoC: codecs: es8316: Move mclk acquisition to the i2c probe Date: Wed, 23 Sep 2026 15:12:49 +0900 Message-ID: <20260923061305.4041197-6-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0057.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2ba::18) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 01a86643-30c9-45c5-746c-08df1939d895 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: XDZfJ1eSxTsbpvEOcIMYfVQLeryJYGARy+pER9AG87G6Acb5j8EDq8dUbfsz9xFSblOM0TGfAckEl1pFJpfNcOwm+tX6xA/vTdzg4P2vm1cnhA9F9JOjUoF/m2JKMu+IMc6NDaUsMp7I63UZZqpLk3CsfLqc4CvDVRBV/bjh4esxGWoes4wOKBDAkxqQbRsW2xpGybHiUPbo/wmqQJZRQG2FVoW4DpQWYVITmMQ6McnCLOntuFh8lrw3TDcKle0iYR54Si0gRRbMTrvmdci0OlCxuQk54zBGLMuQPh0ikbFM+zwi77CIYfWLCZL7eecGfYlM4t56NUDTTmxCyEypMdmvk5QUC+F588Y9tB9tWm9Hdx6DOhp1HOBj9sQiM3Ob+AwGtPd2rygzKuiy62pTRx3w+3CBFShn/uszV8K3wAHnxnkMeSj9L8Q5BebMeNRlNuYyvDL9sYpmBPxwUzh4uRHu4OFL2mVYTRPOzdZTTGU+hDYORisnVkczbS0nKtzK+eZtURJxJumsPi3qfiC35t/QBWL2pFjQZT5PPhB16NW7TnGhZCudYLrxy2rEylchcJlO9q4Bjdr7Say7GXs6yOKonlbyBBQJnDhe+Zzb3HgidAdQlw3H9FHHfHB0+zsT9SUSU1Vdh+wSb0f1URU62twjWBNumLruDZpgpW5YKOk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Tt1rBP5xB0Z8beI5z1GbafNiyQJqZ3mcPni1KZQ0aNRCxqkQvglIyayo2Y5Q?= =?us-ascii?Q?XEu+guMpUfaVoCBBCRhvyX/Mc+qVwsXNB1knDLHo7T7vrzlTiMMrNHnY7Dxu?= =?us-ascii?Q?BoWPkzYLBhhw9DFNonngYyew6zUs2kuJ8jIIdUfN2F35+UzOFgpH6imBwRXJ?= =?us-ascii?Q?6ipGUm+fCgh6rzCNZq6LiF3Rb3e6PBarCGwKDdlJ0xf4FZvzx5W3QYD14QYi?= =?us-ascii?Q?iWtcJKXj71cKhz0EAMo2WKPui8QVsWN845Bk7IppAEP+RJe5JZJGiABSfqil?= =?us-ascii?Q?uerTFnMtZsf/Xlsczd2DtlPzoriFbk9YU1c4rzTa2O4FKJp0FmfHTKn2ybEI?= =?us-ascii?Q?5mv4mLdECVOVMkWyKQq3lGhHEi2vNVFUhgBkb2gjCRos5Oez+JO0VvdB2Ek4?= =?us-ascii?Q?Bm3ql+DxQ9LjeH4zYDrjbS0OH6wbRmFMcOtN1dlC1R9UgOf5QcqINzUQH4qO?= =?us-ascii?Q?hVIxnJw40Swxq/jZeCc8a4aF9JUQ2tPSV0p8nVInygN5O80LjoFqDwklW8b0?= =?us-ascii?Q?koFXAzjq235JX+aB5MBwRE4fSpDzp2tn2w9hnw4UhJNQc7E58+QjnbYj8LZk?= =?us-ascii?Q?2NgthpteR6gBtQa6w70pUwXhMw3gTwGxwpaMawymt8TpA8RY25uGZVXl0eol?= =?us-ascii?Q?2E0ar2wZQ3Adz2RxjNLBFl1T+XA80ULBC1qMu5dnf54tsjoAm/xQ5QhyOR4e?= =?us-ascii?Q?LqOZ14i06u+DG4vL3g6jPpiDUVbJRkbn2wXzj1uC6WtLeprG+fwrN6FbfXjZ?= =?us-ascii?Q?4DgSvA2GZBAToxodESUqOO5281C7e60N54wEdJeN2FfNIAqxyYE1Ofq8NnhL?= =?us-ascii?Q?e06/KKkcv9wbrQUOz9u4PfBPKECogXwDjPo11W8YXyHf/PAeXkxEI7wKKR8W?= =?us-ascii?Q?jqErXTpYDQtgwGIHVgCIVivJkAHoUOPDjkc2jy+/Kj5Rb9v/5kdvRsDfBujM?= =?us-ascii?Q?obTGFt5SRHCRoG5pGDWj6MTEFLq8l6BEvogh8wkJc8PfNL6QDs8i4bn55m7p?= =?us-ascii?Q?OTyKmnSEJ4fv1HyU3tepQ65kD0JN0lHlXE+WEBsEy6B1W2ztAu+iktO5KPTg?= =?us-ascii?Q?tbuYJ1RHzO+xvXsUG0Mc5nca2Yh8usxoe2brzXuYHbVR30tTsuIS9+XKcGSc?= =?us-ascii?Q?5lEvBk9vmuQW3LMVAb9T7qMNbGQ2iS1g7SS9QnELRb4OBRGLHo0Yz5uXt1uJ?= =?us-ascii?Q?G9+LIO+zq4dF3BP763feQpGC7UEncKJkOX/5JrFiat/ynVXPnkZo3yRM5Sgn?= =?us-ascii?Q?X9IgYl0I3c8XWUsrJrZegzHNcwv9DJV6o7K/2Ha+tjgLgb9xTxsLfxAcmUuG?= =?us-ascii?Q?caOeQMhn4YOnQ/5NVjY4QHkX4a7ygilA0rWBeZFA5oHWBP5nqRJPcN321CAL?= =?us-ascii?Q?VVGVPcEKaRm2okW6q0IyFu4eVOjzH8miGOYtQ3DpqyITFXe9vSVFT8HUsiwz?= =?us-ascii?Q?WQIhA2qoWiQNqqtq1GoKy33FOdluftUbmSrtpiZ/slzaCVi6Vavx0eMDXndI?= =?us-ascii?Q?l26iYRJfQvMl25pqvHDMX6HFD62herhXqwne/pxb5j//Q7ObfCcBLE0oqSoG?= =?us-ascii?Q?suHxEvkNhJn8vZRhJlJSNoMGRJDtOX69WyN1UHZt3/SK155Ulk2fXf/JPCq/?= =?us-ascii?Q?QYTxeai3Aoo3hd6ow7porm6d8m1LnKUpTRtIF0gVdrZssiWVVstohjHRndHc?= =?us-ascii?Q?vhByuukRsy5OnlUtf1ICoewjFT8xXh4d+MqwqhUsrY417P9++UVvTNx7xVlm?= =?us-ascii?Q?ZS0uOZl9hfNk2HZ+Uq46ADzYQC2c/jCrCx98toalsveETgUNC7nF?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 01a86643-30c9-45c5-746c-08df1939d895 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:13:54.8775 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pLvzX6rHMU0/78b9UQ1+XEUoL+hspWFeMw2CdTLuUvTku0CZxPC6CiUp69O2BXPgQS1TUzA8tcwMyY3GcswHZQgfqRaEm/RhOciML/aQPO+Q4GBld3azc137opFukwuZ X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the mclk with devm_clk_get_optional(component->dev, ...) in the component probe therefore leaks a clk reference on every card bind/unbind cycle. Move the devm_clk_get_optional() to es8316_i2c_probe() so the clk reference is tied to the i2c device lifetime. Signed-off-by: Chancel Liu Reviewed-by: Cezary Rojewski --- sound/soc/codecs/es8316.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/sound/soc/codecs/es8316.c b/sound/soc/codecs/es8316.c index 59399476b9d7..5e7bf6f020e0 100644 --- a/sound/soc/codecs/es8316.c +++ b/sound/soc/codecs/es8316.c @@ -771,14 +771,6 @@ static int es8316_probe(struct snd_soc_component *comp= onent) =20 es8316->component =3D component; =20 - es8316->mclk =3D devm_clk_get_optional(component->dev, "mclk"); - if (IS_ERR(es8316->mclk)) { - dev_err(component->dev, "unable to get mclk\n"); - return PTR_ERR(es8316->mclk); - } - if (!es8316->mclk) - dev_warn(component->dev, "assuming static mclk\n"); - ret =3D clk_prepare_enable(es8316->mclk); if (ret) { dev_err(component->dev, "unable to enable mclk\n"); @@ -883,6 +875,12 @@ static int es8316_i2c_probe(struct i2c_client *i2c_cli= ent) =20 i2c_set_clientdata(i2c_client, es8316); =20 + es8316->mclk =3D devm_clk_get_optional(dev, "mclk"); + if (IS_ERR(es8316->mclk)) + return dev_err_probe(dev, PTR_ERR(es8316->mclk), "unable to get mclk\n"); + if (!es8316->mclk) + dev_warn(dev, "assuming static mclk\n"); + ret =3D devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(es8316_supply_name= s), es8316_supply_names); if (ret) --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010065.outbound.protection.outlook.com [52.101.69.65]) (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 D546243F8B5; Wed, 23 Sep 2026 06:14:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144057; cv=fail; b=QSE6iAGKW6AC1Yu7GrE/9OwE+8vWSLvJMwAe/mjYVD1GU5dOrirYrWcerh5MoUi6FEKhE9EmYZsR5XUc+yPpTi2XQ+oOqcqEV6uBL79Iay7bAXLsOY9AkKBV0zaHyIKE6AJAFNmVt3kb+E/+b2bn04Nz4/z2upfUI3maYbFmWPQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144057; c=relaxed/simple; bh=otVERtQmvahCR+kyoSpgKfSzqyoRxQacGMeFwrAyqtA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=eUKCd7GXXjhAOFkwtTVN19Y6vLTqE0MXwMQb0H3OHFOUhs//7bBbxnajpFWt+dCRxFcrW10ELVgSoy/ZgLBvefe59o/zRGBm+FYM9fUWVuF5KbBZ7lbEg10ANx0a6IXVy2+O5aJwa4N4d2UsAFwLkkcCAFjuT9zgwBMIYBtyZm4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=ipbqp7aP; arc=fail smtp.client-ip=52.101.69.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="ipbqp7aP" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tH74fF91sTMgCrsWkosYD9ia+qGD4aKL3G/oBLti28q3zrk7F2F8g8pd3UcGbO0jltOn05OYul0cVB4sIYgnyMqNfNkEOOZ8s5t/3iTcXsCj4L1zFK1+VxdODTJD8wlAeml43bTY/Wfgjf1PYiTHUf0tBZbWtsZcpjhL54ODRW3EhjoFup3NfwPQvUomdppmJxK/qyjFpWxzlRHyDkHf1F78em5PERsUdOXfbAwOQXxkqrCzyWX7N1oj0IuxlXD9OozFFu2N3S5/EKUKTnw81gBbpmt0Uk0oLmkoj805019Vpy4PRHBMCiNro155MN3RLzNQGNSxzyYNzHbOLqpveA== 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=40pim2tjUqNgzAtNund6F5DddjCKrbifPSD+sxRagWo=; b=m/wh2itKAfw4NDGxTI+ceJr90tzwndlwLIcgM1e6D2eznLK0Cc2hTvexMEMStrybNHvWCws/VrGKWNttA1qf9z/dGdzW1UpkZ9dO26FLFtp5NlPPcfwAZUUsyLMf6QasZBj2fv3uwF0Xk6nsE+dt8HiZZ2HyoEGKnPWpxET5BfKrfaYN7+NgFZyGavl+R+JUF4IwYDarAo/pz4AphJuDzRs9icW/JiRqX+uDc616qF6IJ6d1qqqWwYYy2JFW6oOZ86RQ3Z/mk4vh7sjYUNorTh2furdSJuP1yEvhaDcB4sRjb6ugwUE/QbwtduNlPDoJ1qU/RliJaV+hbPl7kF21IQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=40pim2tjUqNgzAtNund6F5DddjCKrbifPSD+sxRagWo=; b=ipbqp7aPL+WtiExcqugcdX8+eSwgb+5zAGBH2CL45IzhyPomk6ubhWgIhtOKNhr/lzOq5WtwdP9WRW52d7bSDA0gA/vv5i/wKWCwA28S3T7Ir+nDiGB3UDmpiDTx4dswpkT3uWyybi51BSWxCmHdstHnVY4F3HR8+Xypt2G9ANSJgmeHS7yr1Wxh4bnyZFbha/7tviE46o03MmgCOWCQW8/Icn19XUHZWc4t+d4fA6CKSlIBcSufp0GkIFZVTM6pOOxzJfs8NimWDirCBvwfpsCAxKOqxyDmEX5i+b2aQRV4qo0dAA9At2L3E/vhguE3V8iOHfxX5htqi+PEdjAgEg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:14:02 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:14:02 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 06/21] ASoC: codecs: es8323: Move mclk acquisition to the i2c probe Date: Wed, 23 Sep 2026 15:12:50 +0900 Message-ID: <20260923061305.4041197-7-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0070.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2ba::6) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: c241bf2c-2a47-46e9-74a5-08df1939dd57 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: OBqUr+TLEjNnnrX8uu4c2C+5u6LXGrNSW4IdZjHmFOM/g0hr7yOE5BSO79TdpuqeDP/0IFacaTEDBZTwn/8ld2Jq4o0L1G30QxHnWKIJ9bgeVf0IjiemcDYTuUZz1LVE4oGz3Mjdurr4k8Ho0QOaULcKeNmaCp8QBlsdcrIvIEvzyWqKqKaM/5vfhvvmG40S8gXx7KQ/RcZr5RfNv/JMIsBWU1j+7K+ZbtBO28hlArwZZsmuiUAnw7A3FgIHEx01DQFzXpMrZ/jr9ebmcFU6aIu2xauD9q4zzHA6X+i1wTSFVuXgG1Z8vODPehUn5XfgEndKbIZrdAvf8Je5NtGY8+o8xuWWbII46GJ+/rbdnmKt+Xp/HczjqHFEAfNCAFlA4kUsn8MW8HqWn1Gl7vKbePy9YGvo/iUu2uFUwIM0PwSXc5H8hJ4upMvLG6uBxe2Fhfpp/8GrDPecpfP8eudYJ9gDgXpxVP/i0rM8jq8vWCZnacVzQQXgb83oDyCYcgXuJbaQHOlckNvled5bZ4LlohAtbk9MEtkzOqILCj+fkjKafAcRVMxjy3Dt8G4d23mWfmUJmF40PaZt8fsJ/x2y2NBBik8OQ/pTk3DGIkCK2t9GcqaQIkFOkFBPEQa9LtZ1G6+VcQPrFFeHe2qKEnqOUgEwYWRH1pDB9V5dz7q+SfU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DU6lI/rqxjpq9MYlwTpiAacnKJyaMKKTOcz7bcCw9i4rw8XSACTPs3NOV3P1?= =?us-ascii?Q?5obRz3+qIZqZsSbkc+Rs/MvXvF/fLARY1bH8EFEbStk9hI0cjrcDW9C+ft+H?= =?us-ascii?Q?AASEAH4Xt6E8t3C5AoH9tK8ckrkLece7hxaeNYxUAyZX80jW2TV8CZzl/aw3?= =?us-ascii?Q?RJMuHP2cCjnaXoecG9T2vO+vwJ8AhOxwUErfgqqH1RDT2zrLGW0jNGPmPBss?= =?us-ascii?Q?QQyvfcwIs5KKOxdZGEelcBLAcq/ZcRLzeAASdxE2OdhvqnkOjNDEU48yKxPg?= =?us-ascii?Q?jW8SJLrF3Y4dDHgoUV4OB4l4WWiw40ny/4xvSWPcztLloBBSkHrO8j7giNK7?= =?us-ascii?Q?I9uO6lIRElrNYNwBSArMJ2qnR73rtaI+vDCiux7DjpNZXELH/zpBUcQ67b/D?= =?us-ascii?Q?DtYDCa0RS+yYopLcf6FNEZlmDEY5rZ+9XNfxct1WfPjvMFaA0nnJuvKr4oKf?= =?us-ascii?Q?fH8UHYysrPQ30DRuz3Rs0qQt4jMd1mn8j/k4XmG/hr6TY+ic5oSSwCEdHCQd?= =?us-ascii?Q?jQja8lxliSuZZ4JzblrxANPT0BKDd/CVFlF0oUd/2alYXLJh0xaiIHUfDecd?= =?us-ascii?Q?wf4tgA13jqpCD0nl2gI3uHnAa7rFzC7QpUH5V3zR87iNCP0v/K1OvHSMgff7?= =?us-ascii?Q?hj4+VxrRcpdcx+Md/wA3PwXeEuGMW8OF5ePWgLnKHBsquAKCAwV2eF6etakI?= =?us-ascii?Q?tN5AiZNBsoz0JAB0o0+rO445ER1n3VUKW8m8X+enn5a2wUE80uC3Nw8KDVWs?= =?us-ascii?Q?4O9M5yivVL6hX9pMGfo1bd9+ce8Y2hjUVZExcH1GhESNAmYrxVSeTYXuohLj?= =?us-ascii?Q?yHOV8DXEbin7OOARRUdQN5iwubg1TamhwR821RQWcJO648TpjyPjtTfm6+Bg?= =?us-ascii?Q?mF+pVvr6cqzhYkXEAY4w/B+O2j+djFr3Z65GfkmLDWVdglDoZ3s+L8QGVzrC?= =?us-ascii?Q?mVzxtsD4VjObehiBAUvJ6O317e/sUTZkCV1NJLDHCOHvD4gK0dyLOoyMVkdf?= =?us-ascii?Q?0mbkd0lu12f73GHwCA0Lu2up3ChNNXnfagZhzlPEacFfnyMInuHq5N4Y9nHL?= =?us-ascii?Q?fURrs+UXtDbn3QppiZCOzEDq6FlLDquvxvhAtRVEuGGOx9pOLKyb0EB+qTv4?= =?us-ascii?Q?GyD1ZL6D+amD4aJEAMTe9qDmq3pepmVAS7GJXtEkjuhpvCy1wXFXoV0qWUAS?= =?us-ascii?Q?OOhO1YYzjwRC0LqL1eRhR+o0hMJ2o9g395ogCx1eg4CbWfLgmB26eoJ/lrY1?= =?us-ascii?Q?Xc6ZIAnntPYasOpYZafA/4xFPZ8N2Rt01kbXMfY4HigJRhCC5dN8wKNBAFg6?= =?us-ascii?Q?Vmn77u98eYHNIvrPk4volDliv5D8nZtffBHNEp0eHr8gk6JtAfgS/eCS2uS6?= =?us-ascii?Q?7avTiFotpe9KIXhux2TImuToDG5U6Yj8y/GBmSqRhcyN/u5JtbeQyrP6bAPM?= =?us-ascii?Q?ZG8NZiQGujTMVHsWLSjm7jQu1P8p3ZAVaSX9fE0TC1hoF8PLGr5ZLVQ62T24?= =?us-ascii?Q?8N6MbMFfJ86gIIjZ2g7KhHezuc1tquaIdoYFcF1NyfeFCAjNvBmuvCO7FMwY?= =?us-ascii?Q?9Tx2u+H+oJiZDu5gnPO8wMbeVDAxqNDNaT+fT+l+wuwSBWqKy3+gvK/Wjdgp?= =?us-ascii?Q?cC9Byj5vSMi1CMZYrHH03G0ruF6DRfH+SQ+4yhGdclQaRDeQln62pDXtSBUk?= =?us-ascii?Q?1r7g7C8zg2lbUe+5IsXAxPbaGHdxy/d1/FYI8Ui8o5GR2YS2LMfISu99JP3G?= =?us-ascii?Q?QRBxVkL5X7ni7LMHWrpqq+/WqWNbjhRAOCZ98Jnvc1xmfbwt6qOH?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c241bf2c-2a47-46e9-74a5-08df1939dd57 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:14:02.8633 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dUjwQKxTrkPtUMQqapqSVfHdsx2eGC2h+dox5btvJ+/1EGqb1t5AB3vm6BC3+3HHCthB+W0Fw0nwE71cSTha9fLRdp/sJXpt5D8HULI34z3B1QRiAKKbe4tRcZBCT9wa X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the mclk with devm_clk_get_optional(component->dev, ...) in the component probe therefore leaks a clk reference on every card bind/unbind cycle. Move the devm_clk_get_optional() to es8323_i2c_probe() so the clk reference is tied to the i2c device lifetime. Signed-off-by: Chancel Liu --- sound/soc/codecs/es8323.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/sound/soc/codecs/es8323.c b/sound/soc/codecs/es8323.c index 12fcfe017ab2..3f7fbbdb111e 100644 --- a/sound/soc/codecs/es8323.c +++ b/sound/soc/codecs/es8323.c @@ -671,15 +671,6 @@ static int es8323_probe(struct snd_soc_component *comp= onent) struct es8323_priv *es8323 =3D snd_soc_component_get_drvdata(component); int ret; =20 - es8323->mclk =3D devm_clk_get_optional(component->dev, "mclk"); - if (IS_ERR(es8323->mclk)) { - dev_err(component->dev, "unable to get mclk\n"); - return PTR_ERR(es8323->mclk); - } - - if (!es8323->mclk) - dev_warn(component->dev, "assuming static mclk\n"); - ret =3D clk_prepare_enable(es8323->mclk); if (ret) { dev_err(component->dev, "unable to enable mclk\n"); @@ -789,6 +780,12 @@ static int es8323_i2c_probe(struct i2c_client *i2c_cli= ent) =20 i2c_set_clientdata(i2c_client, es8323); =20 + es8323->mclk =3D devm_clk_get_optional(dev, "mclk"); + if (IS_ERR(es8323->mclk)) + return dev_err_probe(dev, PTR_ERR(es8323->mclk), "unable to get mclk\n"); + if (!es8323->mclk) + dev_warn(dev, "assuming static mclk\n"); + es8323->regmap =3D devm_regmap_init_i2c(i2c_client, &es8323_regmap); if (IS_ERR(es8323->regmap)) return PTR_ERR(es8323->regmap); --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010065.outbound.protection.outlook.com [52.101.69.65]) (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 484C443FD11; Wed, 23 Sep 2026 06:14:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144064; cv=fail; b=N2aOdpTM7KR9Mvdi1c2DERNBRGapYg4mzLBcCeHZ6jYsMkWsaN4Drj3HYhkYmDElZJoucYO0Uz89YKAGo9VBcj5v23ULxDtejohYb3wld/cNPAifdfHXBIoKDYYrMwRNlvzQxLAQMLlH/SUEZVWopCbj5PS2FhT7BFEw22lguAU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144064; c=relaxed/simple; bh=PgK0+gRG8n/xAyp6jC++w5seWnYOcf9w68CNq3/LyX4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=aKBBDDscgKbpZPzEiDD31tF3EJtW6Ki0o8MITCkuATtd0KRhCEWleYkTXu2/RCbnXmKsN57ldlO32QHK2WiYKmF/PIm0ZiEtBt4/SHpBpXUJ6uVyE4uQx7jd4Jx8dAH31RqGhLWkPYAJmOoIAf11QE0Jn8t7JZbv2qSfmqloXyg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=jM8pjdV7; arc=fail smtp.client-ip=52.101.69.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="jM8pjdV7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BDRIa6pzkb4hVOafQC8zt6YAaT1sAxChmVABNEHlmzppexhK2/znJpOs8mO4uGVjEsJPhT/GugCm4sP1wIl+WHbFZCzrm31ZkDrtnemwexoq2EgQfmED622ApkajjyvVHu6w4m+wEgXccZ52XFEJqhelHDPOHXIopWUMGQorud5kSrzMbdBPf9pDrgKzvMKMSzvA2vXWGzpVAD9nZWRRxDUMZrRH2Vi4MhuZmYsxdnbwa/A8vGu4vqyYqp5OqrwCemjoazSEmB31/KKVlTSK3tMtBnJPFhwBA/nMKpzYjFVSIP6KpQbp1nB1USlhQZMaDVkJKSt7qj96no0IHUjM/g== 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=bYRk6dum8k/ZLlscthqEH5dcpW8CX9F8697rr841jgs=; b=DwIKivdgISDYfTF+HLwDUmtJQZslmdgVxqfv+kSXC+oTq48SvjvHwArDSEA0am3pCKn7lelZBlbybKQjkteLnFtFYBseqYITbo5RZmtobm8n/IYqR9UQ6AJRA2RMC282qGjtLEIlTWPtYJbe3DGtjTlwQrhA+uDnHSwC60ttidAHjo6x7iaBbY/YlV8iOO/zD9FlUgMKBPH1AQvnpsy0HauHGxqBYbQI2Pi/AtrrCwhkgHtg92uIhjezs1pKn6CgUsLzh2LehlEsIomW/jlRy1PsEajDA8Mizbx4y3XmZo6xLGcBJz4bqmvhkEdu8JTXO+aqt6yEZtVRReHDUpDyxw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bYRk6dum8k/ZLlscthqEH5dcpW8CX9F8697rr841jgs=; b=jM8pjdV7aOvgcw8wJE+tvXSqI6Vjv/g6Bs9rkE2c2YRaWRdi2l2cA8rRfEJIAAMUMET2NuYaig77lU5T5t4EfcleEZ8+v5hJVdjpojpNqPUtO9owv27vMhtkytWeyQXAha6PIfSps4ClNJ2K9GRtv0gAD+iYi1wEWSnCVkKA6x7nQrGV0RmFJ3ih87vYooX5qjT/yLl/vL2o4PiLLB0IpWqyMm52Hl6MpVH7RXAbhqtmnigDafKDrfmd+vEM2pQNdl2WUqtt0qqOM4sbrQ442lUH8KVDEkYcBC4mHc6zfgQb1U41ESvpHI7FB1UeeLeOZ106Bsuhhjoj+whDsTebXQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:14:10 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:14:10 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 07/21] ASoC: codecs: es8311: Move mclk acquisition to the i2c probe Date: Wed, 23 Sep 2026 15:12:51 +0900 Message-ID: <20260923061305.4041197-8-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0063.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2ba::12) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 7b3fd81b-1b7d-4d95-24bb-08df1939e1e3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|3023799007|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: /LzDAQb4YbqdPqaafzua4fsxw9OjF/c2je9aKxWfGgzmV3aswWduRbxHSE1EpQhkfuwyRh/o4Kn6FGY78rqUrXMX0+BkSVNnQpThnvTGvQekk2g/Ck5XNaziSmPXRyemhgH3xwaFco3jhdCaMkv8NbYeKf8ccEejut/FG08OkSsiBvut4QtNlHODUgs2oak5c8tAlwz7XjaACrHqEF0dPoAh0OS6cRGMgRz7zHGvzR+aWob3ZTNLtdBSrRSC0ycw5+FU2k+MVBFlmFiZAwPIbD8hQZSTGLl+o2t9pLTRDBMGvfrdF95ivwfLjlXo62zjiX72EOdgN4BnYITgNFUq0ZomzuFGJ9zuL8c/CWYbV66p7PBf/tyBuXwoGBz5dU34IHVcS36PNElH7LEpa1gZGDT0ppEdV5/2IRmxAEOO5vq9CsR9W4AUOgkwk3ifC2c9S1Dk1rGh9uN1IIFVWw1e37TZZ6AfWpn6rewDQ+W4lE7o7booaKEDjaIbhkNGuwbzVArPg316hGxd4RtCCIbhjMze18y4y+T76BfLEMOydK7lbempnr41HCqgzAXxLrYm9Pr6/S+Ji7eoz8enOQ5H2iWi/TAoEHf0iv7S/BP142Fct929bC6oYKDik0q4xnuxzo4NoL8hOO5w0qOZk3DVrE8Wj8yOerliqTPzd6E/XGk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(3023799007)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uQbY37e3Spv/8K+qzekTIQbDFj4thpu7tSqLa5OiQlJV3BohQnHCzQyM2w26?= =?us-ascii?Q?+T54JyANtO18wf3x5aRgNCxaRycuBdR3cIHjdjN4fIfuMdp8TruOS0LJ/V2m?= =?us-ascii?Q?iAv/UjsqXthr4VK6hg2QdLXJo3M/cuGuh88HR091mGyHrTJ6h4xSTveWmjjJ?= =?us-ascii?Q?6eMFm4VLCK3aONuN9LNwrfdR+gNIm+Iu8EflG4ktrJAYZUV96NgrtWr5rQfu?= =?us-ascii?Q?c89//keV5KdpfNx3eq0agxXc1kvWqFjmBWTzTW8ghwQ0xtAjzstDHJiRQyB8?= =?us-ascii?Q?xn+PG4GLL1P04vMGZcPqFq3UQ80vSXpiTE9JOqNKvEPtH0g7zNplCuJdKUK9?= =?us-ascii?Q?2UDyZT/8y4r5xFKRIRLVMrlaAQ9MLVeVr33botD+W67E5n61FmMdrTsjsKlZ?= =?us-ascii?Q?9NdP2T5/JXYefqbK0uPWgEJJfjrnvLxxyGRTtcOvU/o9pcO3TKXJzJUa9ed2?= =?us-ascii?Q?/bxt+ZoDWF+j7NI3tZ6NWD+MxQVsd3wjVH3KlJ/zMs6nTDXVJ0msWWPrDkXn?= =?us-ascii?Q?WPDUcLCGd/1tWiZlgDJpcZzyeOOPYZ0gzGt62vIbkB8capFldwoli4dIeA3A?= =?us-ascii?Q?48m2Qic2y+0WfMkQjcszZYGrayi4SjOtXO7oFk9S3Uk5fF7IX1onGUoWAe5n?= =?us-ascii?Q?IpVV5ht6+4QdGX77wRsVMzpAMnoHw/8gWjLl4IfSsJPcan8I2b/kvANE04lh?= =?us-ascii?Q?Sbl90Qq3eCC94U8Fc5IBIhTC3BJwEyji/3o1vSnbD9bMvd7CRclqjaa1Cg71?= =?us-ascii?Q?CQbmK084fRHubrOK3xlriypJCX5KkfKas9/TPOjFw6/4RG8m41n3YudFelne?= =?us-ascii?Q?m3NQbhp3egXu/+uGlWa5pJpKf8x3X8xdlxSvWQHY4dFlrNaS1D5EINjO9UxW?= =?us-ascii?Q?/wnUiVHlgeW+rKGTCtV7Slr4oAUzJNQiTvuK5QkmzUuS79o0RFsctDNCorBh?= =?us-ascii?Q?YE3s+Z0h83YnEpyp0SUVQS0IzUvq/V3UThpYXM5ZWfc8l6j8c1mXWwK4MZYC?= =?us-ascii?Q?YJc+LW1GucmJCaT0AKwwgKMp1YIFh8JK+cmdMYRfOl7x8mYl8NeOOvjC5aEt?= =?us-ascii?Q?OseF3zj81GsP0LOMDPoTRDJQfp5x1/aK8DFPdnpAfLcu2HEVor9D0bIOWhnA?= =?us-ascii?Q?j2RlmjMjpEFg1exan5LNRTunve3T0sBjGymfU47/2s3YQzBl2HxcqQpTrm8s?= =?us-ascii?Q?hvPs/PGHCuhwVN0w6KDmQQ37FwPqc/NihlOcJaShmmBvGT8vau6kf1LaljVS?= =?us-ascii?Q?IzpQkUNcM79s65L+z/71Aw0+2paeZvtvCt6+/54bJMR78WYkIACpmRykVGO7?= =?us-ascii?Q?q7Z054vT554oPfYgvjDPR0Din4fONECbQVfEu79QbsPkyY4rzfD+0VRt/9MS?= =?us-ascii?Q?ERUR1ijjExWRjoHQ/yqcFilEySj9dPVpkZ7QAVTgPsWJlVYEIx3F7NFZTyeB?= =?us-ascii?Q?B3LAJp3dIhtDZatpVX+l3VrK+k8afHZ1fXz9dfo9ARSKW1CfJk55qnxAjmtf?= =?us-ascii?Q?iuGIpLSumjxonpEAJ/OdEPhJz8czhMJFT/JaQ+sq7nTQ2GvF5SHjSz3jE8Jg?= =?us-ascii?Q?G0ivZpidv36+HAgEyX3Hpf/rN3b8DoSNqE40A3au3N2tcv8czkbepMP6JtnL?= =?us-ascii?Q?GyJ+wGFs51n9IcnZ+UsHvOViBBYrZ9h6R3AnJwHLv4SpEvu2eAqnK3FGomxF?= =?us-ascii?Q?NaRz4J3N7ypknBZNq/fDMm4aW4lED1mmyVoimIX6Q2boEBRwTt71ATfC5x7l?= =?us-ascii?Q?ykQu4PwdnZnTgUey+9Oj6oLvOiyhjAadY/YUQHZ2otz06hHlVV06?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b3fd81b-1b7d-4d95-24bb-08df1939e1e3 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:14:10.4706 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0BZ6vtlyeFvHXp6XsIRRQmO/48OH699lTucyLxp1BqVFjcateDQLdfk/KUV8FkNMkbbVbOIybtRAQ74/Zy91Xw/4ETDQeZvc4N+t3ErgBaolD+qaXl5sAjmesxXwR52y X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the mclk with devm_clk_get_optional(component->dev, ...) in the component probe therefore leaks a clk reference on every card bind/unbind cycle. Move the devm_clk_get_optional() to es8311_i2c_probe() so the clk reference is tied to the i2c device lifetime. Signed-off-by: Chancel Liu --- sound/soc/codecs/es8311.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/sound/soc/codecs/es8311.c b/sound/soc/codecs/es8311.c index e46b85f11d57..ddbbfc2443b3 100644 --- a/sound/soc/codecs/es8311.c +++ b/sound/soc/codecs/es8311.c @@ -906,12 +906,6 @@ static int es8311_component_probe(struct snd_soc_compo= nent *component) =20 es8311 =3D snd_soc_component_get_drvdata(component); =20 - es8311->mclk =3D devm_clk_get_optional(component->dev, "mclk"); - if (IS_ERR(es8311->mclk)) { - dev_err(component->dev, "invalid mclk\n"); - return PTR_ERR(es8311->mclk); - } - es8311->mclk_freq =3D clk_get_rate(es8311->mclk); if (es8311->mclk_freq > 0 && es8311->mclk_freq < ES8311_MCLK_MAX_FREQ) es8311_set_sysclk_constraints(es8311->mclk_freq, es8311); @@ -960,6 +954,10 @@ static int es8311_i2c_probe(struct i2c_client *i2c_cli= ent) if (es8311 =3D=3D NULL) return -ENOMEM; =20 + es8311->mclk =3D devm_clk_get_optional(dev, "mclk"); + if (IS_ERR(es8311->mclk)) + return dev_err_probe(dev, PTR_ERR(es8311->mclk), "invalid mclk\n"); + es8311->regmap =3D devm_regmap_init_i2c(i2c_client, &es8311_regmap_config); if (IS_ERR(es8311->regmap)) --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010065.outbound.protection.outlook.com [52.101.69.65]) (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 D9CA744102E; Wed, 23 Sep 2026 06:14:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144069; cv=fail; b=D87OWKXatHA8hB2m4CUsnO5QFqD2Ug2sJTXa5p7NZ4jeUYLFWJ2Vl1W1RI8AEH60X4CZL3crhpCbOhd5n5URfdG16Mh+eEJNfMxOMhHBAFxO/kMt9+THl1r9kajKQPoodtIxtPFmAkL4u6cvKKW60KPbZWKQR17rNJNUS90X7do= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144069; c=relaxed/simple; bh=fq8OvCKstjuQCBDVNJyovDL39v2BXdFT6zEDxUbx/5k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Cxn+rK8vaoEyaZCgnEgNLk4V9g6QYsHi1oL4IjLuDxizRKnr1rTrjHa44/m1YZ/TiBsWw5ilAPviHqVIFBuya1p84L9ASt7fEwkeA8VNLmPvSEPCDJFFiguNmgSvp+AH9cEqbOU8rPmWRxc55BI3+o00CUJPOUC4e97Sf4oW0kU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=tpC71/Fx; arc=fail smtp.client-ip=52.101.69.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="tpC71/Fx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QW8OFsx4JHNDxmAjZRyBAGPOZVU3LKt38NYG4cBuePh/9Q4EFbFsA32bVW3MUi9KFooz8SrR6CWIogKHRC3/4suuN7Y5JHDW4d4ox95/9yqLh7+u4mD1/JoIhw7gFNLTSXn9KIZW0LU3sytpvWWDZ4erAvSVKMRY3v3zp1eNOfQojzT2+Gvqzy2554sxiZL6i6Hye5z/7YBA9vp+18TaN53dwloVnvPgZr39IYwTPJmfNWW/0g1EZ74mFA9AVWsH1D4LhgSHp0gZS7U7h24qCk37um+QA8uzPLU2mg9Lh6dkZjZKlPSFrxiJptYADEen9VMYJkaUZQ2X9bGg3IJvxg== 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=Yz4ygMMBlRVEzKS1mK8PoExlQd1HxwMpcvKbzWX7ZhU=; b=xWxpFUbCQJzBrpCgjE1baIOatVp8kKzerYQu3rBkIorWQUPJh+RI0rxALibaG4REZt56tfMj29x1Yp2TnQQB8wHp9KoOpDmEdmRzZVS235pbdIgjM4ViiFRWlhhb7KtFrMwKBV8WHL1Dt3uzLbbia/eCJpZZTzznE2uwpnJ8knjk8WOEIGzC2K4i5w3QxZXSzX40WXP5wx7+e4G2x8iRNz9YBvNyBTO5xt5JRzqhBESYqsy7rgjW6T+wqg/5tX+xICnnnMZhobqHJXB+bjDKhG8fb3Hs8xkXGapk4HmvhuJxXlpgFbPZCBN0Iyemk5N06/Zhtpzqcr+tmS6vdjo0SA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Yz4ygMMBlRVEzKS1mK8PoExlQd1HxwMpcvKbzWX7ZhU=; b=tpC71/FxrlEyMCtJxOH8Q2MarVbOnclRGapdznleGXuR9tsIDNAsw3Kubr0otFN5MJJO83ge1sLgNElk6zH7CmxYGO+5qaTQvYEU2KNZDWNrZkh/3Xnb/aIDuRpTeR9y5CaHH3A0rTNOAl12Xh0Az7ihUCQdUW2iTAcaPisnzY/i1jlIYOTGL/bIpPguSledmut8oPA1Hozzh9sI1MKwRlrkFsrGB3nTLWuPet4rAkfP3aBkhsugkr2Gt7c6VpOiEyhXMYzibaeZnabDr+PlZfCaxfCtMDzMmhB91iUDiLlHUMI+sPBF5uJ/8IiHrtbjAoG/Q0Jh9UJmQDn9wLRJSQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:14:17 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:14:17 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 08/21] ASoC: codecs: es8328: Move clk acquisition to the bus probe Date: Wed, 23 Sep 2026 15:12:52 +0900 Message-ID: <20260923061305.4041197-9-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SL2P216CA0096.KORP216.PROD.OUTLOOK.COM (2603:1096:101:3::11) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 785cee30-6165-4308-44e5-08df1939e63a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: oMeuLx7Ty6M2r4AdwtmHk25pHpVxgXYgCTyBvrI6VD8Q+gzTSm14P5vnw7lyIp0nv/KEhg2HL3jVYOvmC0UevB46WDTpfG1L61X/wZuvi778uGk4e202oHfJpEZTCXYxJd4n58dKDoX5PqadZvIYVfHb1jT+u0RVBSsOF9nWd1/GqwbC2QtxXSPfDfVBN5vSiXcyEmtoI4cH15TUxXJAahBtslczCiwDYi/IIba1JQNYaDpaHzF/BNDeJOt6YYIrMh6SOc2/vDOOy92qm5+wKFsQwwaAQDWHC/OW9F5gakNCtHmivYzCc9xQSWuLnodI4PFkbpj3LETHbI/AJFib5eYYTjdFus+B/51PXgQ/OZynsEFRJcDH1pYsexkCaK6/3REF6K6kDfb7gCYqrmXQqJZpfi2RIc9acbfRoUqFTywXjWGNEGrFuZ4U9YwAwpAbfFFt2/LRLDVZY8iS6/XLlK1Gbt3oXOg35Bi2d/jtJV4vcxeMVn6yKrDfBPSmZ5g9aHo0AZWpkp1HJ/G+j3Svr+8g/paYO+uyGHuB7z0CHdVITyGX7zfC/5c6K3tbZM37FGpdL7tSwk+ISxAsaUyUtBuiO5r36izA7XrGNhyOXirngyTpqkPH8eJlq9vb9lRTdRAGg654psR0vSfJYALLDzHCfKPTEwdU35hAH036g2s= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WN+wwG89McKI4JywlvNQFjWJxXA48liX+6Cci27jHuh7Z7kEMbjKYZw3xT1Q?= =?us-ascii?Q?Dbq4mmR5QhNdmE+f4hQL1b/FQuo9hZoeBAU/yylLAGxm3rMD0PPewBvryEn2?= =?us-ascii?Q?Aggbva6UX6x/ketMoo02e5lc4wxYDEsgsgxQzT2yK65sYozVIYp5EVs1BpUb?= =?us-ascii?Q?ypOqg4afmrvx+LK+62drk7Q+n/nYITrPO1b1M8DmVtk/UcSFq5J1Kyvkqr0D?= =?us-ascii?Q?zkG1wBy2TQxQ/6gWyFoIOA/vyNAogCCQspBhIyfSXkd5giTxWPbxgIZU0hI0?= =?us-ascii?Q?p5B15umHjI5OLkTH9g3BjUOcenw8Lf4+Al+7KR/sLFanFUHLmUgAGz31gZIF?= =?us-ascii?Q?dJIIgH4qW9M9FO4Zf0DmeHvsBeiCLHKvF4vGglGINQbuZc7+fo6f6kyx6SjR?= =?us-ascii?Q?txR883t6vm/YwW94bY7DDZEDRWVG3/y+Rmw/D1LdZllmKB955Bo94dyNBxCG?= =?us-ascii?Q?BjpUz7DQSwIML95+a3Ym6gpl8ZrOl58AlIp+kPqk6krPq/Fu/0uw2L83XElk?= =?us-ascii?Q?SNxTbw3E4KH9uGftu0pB8dlQ/tE1UcSqujwSIt8bsjt8ClnZvd67byE+TuOU?= =?us-ascii?Q?lvLOMlhJmmcpc8ADMZK5tPnYJd+tU7hHt3cRnw2x56LaUEC+W0C4xwBCiQi3?= =?us-ascii?Q?QgYMpy5nbetvn+c/j3J+huQY/BWRSqivU3C7yTXFnvYMrPFwZY+9ypCTSjm5?= =?us-ascii?Q?IyJhOsOGMJSyoHjzHOMwgktabCCKm0/xlpiyNtNunF4EaycoCHcADGANzeYr?= =?us-ascii?Q?F75zw5RGJPXgGVX2ooqGDFEui3nnI7HoUnAYnbOvi/3AdeT7C75l22IWaD9K?= =?us-ascii?Q?5COBcSTc0UPXr/Sfc0wCY1sYcbOc04QcKwH2EdlCP9LkvrrWXT0qYO395YVm?= =?us-ascii?Q?Z08dLSHH/mnfSfSCSeE+4/AHmepQ1X4RxyIvrZBU9XKOeWHttZnVU7W33Nyw?= =?us-ascii?Q?mafuu7kUg0k1pd81haHAISoHRPRTUPWCnSGWhJGk218BmwqzOaZ4VrpYz0GU?= =?us-ascii?Q?MUsIjbWH/9cxUMfTXV/fpLRJMKozYKFGGbK2E8itnJJj1brqXHu4FjiDRaww?= =?us-ascii?Q?9O+lT2SoaKtdYYrKhyfpmUcuWb2SH0ofwvEE8Vf8OSSajVEbIRGSoWMwkmlf?= =?us-ascii?Q?ASZjTMoJ7PsXHZCpEbjdqOZeAKYLEXBlIDPrVnf2RvHOUF0I6iibGi6UqsXi?= =?us-ascii?Q?CAnJeY48L5EkeqwvBQezd4SnB442ac5fC4qzkegeV+MwT3xE50+yVVCRUByz?= =?us-ascii?Q?yED2VfmchfI4/qFNDJhjmRjM3d9Nz7BzqP2n722pjfWtF+xxATKljDiQlwTP?= =?us-ascii?Q?636ndcpZdFkP4713X13KEMCHbZEK8n4EdR32pMhYfexkF6DEzed6SFuOoBNF?= =?us-ascii?Q?i1hlJ8riP/ygh+lYetpKsQUq9Hkkt1wW1DvfT5Ik9aur5E/w1HbUH9tlxRj/?= =?us-ascii?Q?JiSDgaqypMK/f3CfVv4cendwwDa+gjjEYVR44OL0Pwl7HdOzyv7t5CiHhaJE?= =?us-ascii?Q?GNHFrbqBAuTLpoNO95cWE9kZZvipQmixHM/CBk21mwcGPk+BXvw9MVbIW7eI?= =?us-ascii?Q?omkDHolSEyIABbplqQedflkZ2HikmiIW5CGPy01gqCUB2Vbz4Cx50lQlIg3/?= =?us-ascii?Q?1JXtWUMh0IcpTwOmlqGH6d6DLzo4WwBIlAdlqdmkG/zLiB3CElFatMxG/IVV?= =?us-ascii?Q?43rvvQA++F0CvWjFpY8WKuHRHNAAUOEsW1UhnxhzndJRR9gZDLsaPLe0s0t4?= =?us-ascii?Q?IFCk9XePOxft11AEtTIfS1tNh6lvdwAuiYfKKXxzV034raEmDZ1M?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 785cee30-6165-4308-44e5-08df1939e63a X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:14:17.7609 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7R9EKw9VVoXKHsay1UMIKGl49Lov2pBPM7cL1y9uVvEaitx80IJ3/quHrrPYAVY0CZ9/KX3PKDMWBgiK2xul57GDFLlk3HvpmCd0q5LVwxinfiUIr+ViHKBJBlbb9nU9 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c/spi device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the codec clock with devm_clk_get(component->dev, ...) in the component probe therefore leaks a clk reference on every card bind/unbind cycle. Move the devm_clk_get() to es8328_probe() (the shared i2c/spi bus level probe) so the clk reference is tied to the physical device lifetime. Signed-off-by: Chancel Liu --- sound/soc/codecs/es8328.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/sound/soc/codecs/es8328.c b/sound/soc/codecs/es8328.c index 7d52b5d9d061..37fda2f42b0c 100644 --- a/sound/soc/codecs/es8328.c +++ b/sound/soc/codecs/es8328.c @@ -829,14 +829,6 @@ static int es8328_component_probe(struct snd_soc_compo= nent *component) return ret; } =20 - /* Setup clocks */ - es8328->clk =3D devm_clk_get(component->dev, NULL); - if (IS_ERR(es8328->clk)) { - dev_err(component->dev, "codec clock missing or invalid\n"); - ret =3D PTR_ERR(es8328->clk); - goto clk_fail; - } - ret =3D clk_prepare_enable(es8328->clk); if (ret) { dev_err(component->dev, "unable to prepare codec clk\n"); @@ -906,6 +898,11 @@ int es8328_probe(struct device *dev, struct regmap *re= gmap) =20 es8328->regmap =3D regmap; =20 + es8328->clk =3D devm_clk_get(dev, NULL); + if (IS_ERR(es8328->clk)) + return dev_err_probe(dev, PTR_ERR(es8328->clk), + "codec clock missing or invalid\n"); + for (i =3D 0; i < ARRAY_SIZE(es8328->supplies); i++) es8328->supplies[i].supply =3D supply_names[i]; =20 --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010065.outbound.protection.outlook.com [52.101.69.65]) (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 4BA0243E08F; Wed, 23 Sep 2026 06:14:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144074; cv=fail; b=ncXZoAplcaD/u0XXAxs/szhm3qFAV4LdVweMVFg07wVTdsTJJS9zmCbaxYCkwSyX1ZYAWVew1Ndgd+A5ZS2ZX592NWNcvMu2nCHIWZnYy1/nV77Wuc1MNWGbvTCtExf6vjL3LXXJcdaEcya05i9sOMAaFYTcLRI++Vm4pmQdK5Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144074; c=relaxed/simple; bh=sE9IMpwJa5zfJ2mRMW+R3hO/Lx4OH6fN9Nt5ju1rc0o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=IUqFT+DusmLej9Q6nWsAWirgFbzgKxxVsQLFdfromNcrylaEMSJ+ti/o8tBsjglXryuVYo0tQ4WnDTGngai0RLNCI2sAZ+SaTwtFK/j5pQ9dvPfrozPz62ec9ck15e2zryAjR/9ct9YIy6uSY/dlmMilhrPaWVz8vcvw6eNrceA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=MQ05FTv2; arc=fail smtp.client-ip=52.101.69.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="MQ05FTv2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CrQRDBqYizFubJOuUzsQ523MV3d1zZaoe0MDc0BrVVUK5FauwKqt56Xr+8i3vGD/RRpkodyh6OUwu1Om6qtXjgtmzsyQ/Emb90c8wFYFwbY4rGyEJkVuxt4dm98JYi6xc/jwsr9AgmPUUORW8UDHgWzDnupGy+/f0GAxKXxmYbYdY1IjFASQ+vco4WoJprUK7+sOPuHsO+yFBT5TLqSvADvN2yrLhDyFxSx46nvYwdwy5/fL/P8P3D/t5PjXjRNDUuSLqvKlujNi/KZLOdcpHmi9/NP3wVrK0UT+9vn3tSsSJOAImPZb4R8s6DNrmdxwk5vxEQvTFLZY54Wl+caKSw== 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=S3iEdDgfZ2JzcK3JMfRphV0Klhm/H18JpRzD0Ud5DsE=; b=YWYnxJYE2IKqnEfFtZuVN6t1uUzmTbO3NTTRC2IGLk5rZLjtCOrbDjY46cSGZKcpkV6MnDteTP4pUsFMjVjeQG4Y844fPu2uOonWGL8YZJrx6Ny/ouQIR7qZN+hKt8yFuTQIk+OcJsQyDqybH1nzyZGPttkfLBUOmZbtzaMUkln+klOaRUWeg3gnOtkx4J0dFKIedoM6TsOH91kkutvjZ4+nXO/vwl9gYdM/KuUc3rKc3lIyRXCrsEXOE6hvkD9EZeqFwTUhf3wz3Z4uogSfEwLlvchoqYRkCDhggeZ1NwmgE/X3cHExcmpKVso3K19usfhXjeYIV1rHpX8cDRIXPw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S3iEdDgfZ2JzcK3JMfRphV0Klhm/H18JpRzD0Ud5DsE=; b=MQ05FTv2wLMxN0i3Ule++oJ2E7NTnaHd1T/muKzQbv5r/jxKdm6Z7KF1954gWUtICEolEtuXlSdPgZ3uoeiFT0iq8BRUQ6klJbitj7fHDB/6N5TOkdC1jmU+TexXFmgaBR+GWyOQB4Sxj+11fwx7wT8sboGq28YvmHQ3AtxiWEvdY2TtEVOePmljsabs/q51rXpC4DzMdE5/i1ry/4YYGW58LgSscjriasOqsi3WmrhX9Hs5v0LxSPSu8JYHI81tBFKa8LSJrpA5hl8O35pYSLj9+gQscfl7CwAGin8cuDmGIb3FcHH2KFlkXy4w2P1zWpMpxh9Apj+fu77/bJYatA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:14:25 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:14:25 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 09/21] ASoC: codecs: rt5640: Move mclk acquisition to the i2c probe Date: Wed, 23 Sep 2026 15:12:53 +0900 Message-ID: <20260923061305.4041197-10-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SL2P216CA0094.KORP216.PROD.OUTLOOK.COM (2603:1096:101:3::9) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 9faca5d0-8ce3-43ed-5035-08df1939ea7d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: oywwTsib7gKwuGA6UZLyKW7p4fQw23edX3MWlQGes553riF6MuhkJJKxtclGLWYWe1ZnqNWO4QJgi9z0g34w/1b6NBHzK89QfEFaNyr//IEajqVfVroD/X8M/vIJ7z05jcCmdjr9LarIsjkUVEKzVIx27WYJXASjmUP65ZarngSE1HoFQG+hkpo/vTH6x0cTv6hX+Itfq9swt0PKVDVELkizv4Ox00fJ8K0VSpHP4mHSIKBWNREDrUiKjk5OJmL5K7cGwNmGpHxcgebkd8PLhSo1d+1Sv9VTsgH1yZ9K9r44HsQ+1m+Ti5E5d4wtm51vJaZP1oJF8wD47mzqiTBY11ZGag6WEvrEXUyB9cCzUdJy4t5+seNoOdQnfvdWtJpAf3I23pPd1cyMP+WSbFogAnKHqZfNsAZqX9TW3oSLJqsZ+Si1eIT3TtXO0FlFTbfY1OsGRlEQhU9bGoBpIrrL0VankxvkdmwYUyCqTyvB3qOyky7MlJwkkxnGy8xy85nTBJzCI7Cm2onTts572ljXy93t/PNVHdThp6+paBe3LhgICJmWrPpgidWX0vudWUt70yWuBjRbYAZYZEMxbQfDsGjcPhEmEmqE/ZoBUg4uIilgLQ0l2URe2zDl+KD5oRp6PgpfuhQ7gJKgrfzfiVJHlX/ChWS7K24g4PttIwZhMWM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UCaSDlOJkxlOdvOXtcuwmrVJtAZhQHPwJ5PGJniGdUhWuOCVN2R/1083pM+6?= =?us-ascii?Q?POTngr5I3Dr78MBdavzCQyOZfLPmMBKbrBP6gaLTUrhNLqzx0GZwXTAS+SEr?= =?us-ascii?Q?Dy5VsmRR+ZFvz3Bt5x2nMnfLUwVihs47YYv+2X7ci5qA+5fEAQ4ozClka0RW?= =?us-ascii?Q?vbnjwbqHiJ+zd0s8RfWZ5iOuLfTjlC1YUG78wd6Eb7qqWxLt08X0LXSCgiOf?= =?us-ascii?Q?sHjRo8qgGrC68pvFjLg9amNFy0DgMnasl/wTSspXw0ze3bpJS9ASceUZhmqJ?= =?us-ascii?Q?MURjMxou+fGht5q8c7LmmRtqELnCDPMZLi9Wl182h473on4ffwbxYG+XNG+6?= =?us-ascii?Q?EV+iA69VqWQnKjR2ZgC14ulBsxs3IXruOj03OqwEbKrSdwiJNvArxDkVRnfS?= =?us-ascii?Q?TM282gicmN6bNUdgSwuFiiwPWFSHpx656StDjDQ2fk+ev6YzACt7TWR+1BEs?= =?us-ascii?Q?aQHmREZkUc76EAlUV0Lkadje6pjGDhzCnjHfDfG0Gqesp5RAICF/yuHSiBIq?= =?us-ascii?Q?1+DGwTV6EHYi/IIQSXcLgYFIyvW1LEdpiJ1bbEG0a2T7Htb4FsnII7hmEXep?= =?us-ascii?Q?wHiSEmJhXffFT0rclFaxLUO76uOjWDegt1CNt4p6h2uzlWX7Fy6T0P6LDe+L?= =?us-ascii?Q?sWXgBZxXOHMp5f/AEuJh3PLioQpzTGCh6tvliNN0CNds9yTujMt2JTZ9xDmI?= =?us-ascii?Q?QTO2dyKA68UcVzxaB5+HeD85uLRD1BVq2jTSzXf8SLDEUhEY2hEfrImGwKMl?= =?us-ascii?Q?D48U95dMifMpZtXQKxWWkjV01ne1lsW64XIuBdr1yzjbGX1ii7unVjD0lcCr?= =?us-ascii?Q?B9YyGs8ZcCBJHOR2nZi4h7/j+CS3E2x6JepEsODCL4c/DTMdAD0mtQwB0a92?= =?us-ascii?Q?BEkSFGcWEo/pYEqZtygzBgjnHctUl4BVxTTBFBbtROEBwGUQlChtB1esINQP?= =?us-ascii?Q?lq9bArZurNcwkjfVPoAl8iK+yxvli3bqVPKAPnlqEa5LVvM1voO0a6hLYbEh?= =?us-ascii?Q?FnGXYaRACN7lZMINKprdrtvR8OWwUfbYPtfsQsAtYHpKJn2bY7aCzAXr0xdG?= =?us-ascii?Q?+NfmB98XKWH1DJxIIuKwUn2OsSBtWCn3RgSrRlo6k0fN6eJJVNPPbnAiAHdH?= =?us-ascii?Q?FJs51TlOd78TtVjhZQ5uPp9yfEUzYep/p31gRTRFYIBC1GwdZx2zvQyato/e?= =?us-ascii?Q?pn10RJ85LczQqmWgrsby4WUvkNM5Lz3UZwuekmr8xuxiR8HB0cTti2xIybRM?= =?us-ascii?Q?xcR1uHe2zYgb5fmn63sNzfj+iJFKXRjG0qcOyg7WugXRn8CTtlQ3dWXG9QhD?= =?us-ascii?Q?6AhKN+k3Dwzgp37u2ykgkEyZAruk8yoMgQnlwQt/cj1tLV9Bb/2gHfnZxouK?= =?us-ascii?Q?7gflvIHL1A8gKAySL7lkbfp2+719GszBMkCpiSuYIXHHFKSLf116mUNqA9ER?= =?us-ascii?Q?bxepzKVm/6ylxablPvHWWu4woPMgSPQN/AZncIeA/pWMu5c5t4xt/wg33i/t?= =?us-ascii?Q?iHcAw85eGDnlJgKAstkCIX9CiewIC8bzq6LQK9RLydvzVfTIiz55Rc/u7yze?= =?us-ascii?Q?PzDyqcvb3zoYzsliHtDDYNXZA9nfuxZmhgsFSL2VO8o3VrqesYYzYhHLXheH?= =?us-ascii?Q?UfRBcrq87aiRo01sEYQxwKaF3SaPWwklipcbQk7fAID9MqrGEXHivxrVbqlG?= =?us-ascii?Q?o9L4W3uguXqTSSylC1Aqdlb7kFQ788mi4ViHLKuc/NNr9HGQ0CMSAMxgc6s0?= =?us-ascii?Q?5xe2QEDFQCDfrFeso9zqmhcVJ5gH7g7iUmpT9po9q2egiCFgwjUZ?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9faca5d0-8ce3-43ed-5035-08df1939ea7d X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:14:24.9131 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gGQ8JK+5zvsuOljJdpYoimYFG4Hql+Ua1+TJkDMKlsxzAjb1FJR8aLY6eUZsfvmg/WUW+Vqv3v7bbfRmN3nuMkDZ9iB8w5qWR/rP22NEwTk0q/dSwTES1i0GLEjDy4gH X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the codec clock with devm_clk_get_optional(component->dev, ...) in the component probe therefore leaks a clk reference on every card bind/unbind cycle. Move the devm_clk_get_optional() to rt5640_i2c_probe() so the clk reference is tied to the physical device lifetime. Signed-off-by: Chancel Liu Reviewed-by: Cezary Rojewski --- sound/soc/codecs/rt5640.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c index 03d0ac3359f5..d6068bb5cb4c 100644 --- a/sound/soc/codecs/rt5640.c +++ b/sound/soc/codecs/rt5640.c @@ -2667,11 +2667,6 @@ static int rt5640_probe(struct snd_soc_component *co= mponent) bool dmic_en =3D false; u32 val; =20 - /* Check if MCLK provided */ - rt5640->mclk =3D devm_clk_get_optional(component->dev, "mclk"); - if (IS_ERR(rt5640->mclk)) - return PTR_ERR(rt5640->mclk); - rt5640->component =3D component; =20 snd_soc_dapm_force_bias_level(dapm, SND_SOC_BIAS_OFF); @@ -3012,6 +3007,11 @@ static int rt5640_i2c_probe(struct i2c_client *i2c) return -ENOMEM; i2c_set_clientdata(i2c, rt5640); =20 + /* Check if MCLK provided */ + rt5640->mclk =3D devm_clk_get_optional(&i2c->dev, "mclk"); + if (IS_ERR(rt5640->mclk)) + return PTR_ERR(rt5640->mclk); + rt5640->ldo1_en =3D devm_gpiod_get_optional(&i2c->dev, "realtek,ldo1-en", GPIOD_OUT_HIGH); --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010065.outbound.protection.outlook.com [52.101.69.65]) (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 51859442397; Wed, 23 Sep 2026 06:14:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144078; cv=fail; b=sOv7T/m/+wbCivDPuh8H1KpS1xBynyxncwrX1SbeHCEAgyLHLbMov7FfRtRpB+1NHjH9lvacG0evzPw5PT9NE12Ucgl6/YFYHLKecPLoBkjzo4ejqLS0tXxxnp+6GABUowWIKeNPhJC3qCJycMVcCN4KGu6WPijQNZwbbeJHY0w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144078; c=relaxed/simple; bh=ph+xmPDxXn7XAYx36aB4qfYrM7ZqswmfvI2Q3HkRxH0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=sjakrFqVHU56uiGCBHT5z16+aQPpPteoAc9A4B2wsT1E+XUq26pv14TdC2mk3n3i0+O3oluuoMIEBxg1qsXk+EOLR2P6i3hftem/CfEXDxFFZxn9FjmoAN7U4yxMa0v2CegCDkle+/3Cuk69RkYU3hONXwt3+AQ/z1zHPRfDe/w= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=aKZ3tg0M; arc=fail smtp.client-ip=52.101.69.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="aKZ3tg0M" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Jvv5l97M/zeAJT8rNRHvmNDuidoxI4QdgDpJChnIk9XyaCuDAyyjhKCYOCHQ7ynX0OMIUYl+WOyry9zQwq5I+kc7kU2dNwCECbNwQvyUZpqbuJWafqgmuXUFEKn+SbtsuYXhpFccVrxyzyW0IeYk83JL5PriRP01NA/luKRMNh9cdOeR5q72/XsniVgsGQdJ74jKJ56835Rg+V0A2NfiOeH3v3k+tT3mV/arj93kV60gnaGuyzCvHmp548FH6xtCV2SEVml4J9AlrQTUMPC6NCYKMXRYrzoEkVr0FWvAZ+EA1+RsXyZLC2E+LGMC4y2VXZAeiik2Pjmc48+QLCB/Wg== 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=pJYhUgDr42oyUnZnvcU3j8O69ycorETAiANoBIvFIKc=; b=c0PvUBAD0UYz/3+F8f4w7Pp5AmAowQtyS19fCMYNlV5kpi3ZgW/2rmXanvixC/6znOGI2UE5nTtzOwccgJHLS8OrNCKqRZDJ+oYoZ/yCHt/j2XBp53DDQYn6AGrcDNOANlrF6cq7m4d4dRjJaaNFoESuuZ8wB7F2kKay2DrPGq1TbdTPN4AreSqGcWRrR6kxHeGfbbfxnhXI4Y/KGXLxMav1W5iqqljs8ADhnBRU9biIkrOf1xsyJWvPeLGWUoOkpVDgyOHQy+lUFjyuFP8JAiK++pouR8oZlA3dma86ecdgpEQVUBVv9u0/GJwFXVjziEKKgb57qu1ksLGPq3qglw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pJYhUgDr42oyUnZnvcU3j8O69ycorETAiANoBIvFIKc=; b=aKZ3tg0MLQvM3Gvrfl6eNr8YK1mpeL/r6fdpDP8KSiHDKFnUaBCI93o2Z+/5x+NhyFG6dLaawtTaXoJ4lLxJ7fRUJ57bqVxlg8HooyDQJ+7IWx+N11/6x13dhG9Nhtwq3T73i17HVi1qMtHBkQNhlBaXIKZmCD4qeiEz0mL6EnoUsHMKN+51VtWM1lWGS0Zi064gLppMW+LguMpNckk1N6TpO86EcWwm7v/tbaV9QzDB/tXNEIJXWMqfPbucYsNVQVO3ahRiVkl+7ZqxMasYkp4/7Rc5saBuVbJ8z0naMmff8xCXC/89kwPX/el8DBWKz4g8ZDMqEZmKFcf9HRXr3w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:14:31 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:14:31 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 10/21] ASoC: codecs: rt5616: Move mclk acquisition to the i2c probe Date: Wed, 23 Sep 2026 15:12:54 +0900 Message-ID: <20260923061305.4041197-11-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0165.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::14) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 44c60662-b0d7-4521-1fab-08df1939ee60 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: qJd/ib+JS1z2Ar3zrmdicSqyZWHpsTR9PECnLKtPzMtSx3Ec1NPFiRw0wKBOP5/RqvdTSJdX9EL9dY4AkI6UZcddhUfl+EpP+mFuebkS4i4JUeFC13UG0iGCbFy2vHmn5athp/qkxbLf7xZRkvbXRrHV0z22GxsFYbCNRYUiWSl5Zz/HoXM+KWflK4auCO25eziHPKR8k7tB4idH1YLC98rwbCV9K6d/P/6s0qvVK2RpDmeGJiZwCmRDH6vO8JM7BxIeMjqpIdITMfUgOB9ZDktlPUg7T5FoiMCrOIznO9LlprHySzyQShi0edRMMpZ/y9vO7umlO9khxw+Glmuw7iqm/7uQBtJDj+FJE7LlK5JSgUOQARVlRkUvFX7HUWT8aIhJes+yzMWk137OQvXkI4GJukGc39JvTAeTh0RRQtFc6kLM4xqZUGHd4zSXbQKu9b6AP/mSuKJ9+H4Y465Hys+W5A5SonDw/tQcV6+7VoOefOKr2QrWi+XFKgC9GeQDXeSgPHj6rRMGJhkuHQBQjSgMlyzgR1tZ9aTPgnBCT7CnJylmIEJesZxRYaTCnx1njRDVuTJIpjSTh63cj5q8VI6wAem922tENGv475uS0ClqKLhQYlmNBjQHyLD20zld1HxqtVWVi5Hisd4PdDkfCIYoVOooucm7CYVchSW/dRs= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?t8x+P8Ui6a92oed9hJnq1IMkhFkdhrCP35Q4VO6UaR/tdi9WCZbLQe9A0KLu?= =?us-ascii?Q?i8fE5YKiFydEHubUCCm/F+KZ27rkwpRTWh7v9G7z3Vhdq5p6yQBcOe/Hlqdx?= =?us-ascii?Q?XLpZVB1BM2Fxfklup4t2Y2eNFiqpu+8+TJ7Pz11p5ZKi+KskeqAUj85oKNmW?= =?us-ascii?Q?JwpOE0L5vCGkahPHel++XhbXqqsyl2wzsPXlOzAUMU6QgClIlz74LFPQKQo/?= =?us-ascii?Q?dySyupR9PTt1KVtgBU/kxoILLjebGjCYjHWmke0BWI60sVeCbyju7XlXg/Zw?= =?us-ascii?Q?Qp5PpQ8WymEOOb8ob9SqQz1J59rVSfw9ETPIcAC0h/CqoKC89PkqfP6+0HlP?= =?us-ascii?Q?P6FtCOxpi+hjvGcsSjqZQJiMfjlIIuOe1x89Pf+w06pK1G0CbUCvrCxH0AJR?= =?us-ascii?Q?KUqvY8QuK+4WEIVvj9UAN/Jpuu78m5uxHwmyFwZv4+pKzadQY9CQ1X/Z8/o+?= =?us-ascii?Q?19yE/m7jHb9YupGZew00asW++HLSAX9sSt7E6pdZQTQwmk34VrRAO/WYH2qP?= =?us-ascii?Q?aI+j8Vw2caH1h8l73j1u2510vu19SfW4sPsDx12yy1uS/LXua8PRqR3XYopn?= =?us-ascii?Q?0K146pHQyi9EqxpxJhKOE/OaMNmWouxICE+ru3fX25vS0tiK8wqOkjP5FBAW?= =?us-ascii?Q?vIDxPTCb5oyRH2Tvqu3Q7d3nX9DEt/zWL69KlF0obuLBcOZnhw9J7f/PugfK?= =?us-ascii?Q?tGZXrywdjjxHhkWv6kZOQBJUmNGex8FUav8AHPe4h+JGJX0OuHd6UARL6DSh?= =?us-ascii?Q?sM0lVaEhxoUrJhp/I2yZ/Xi7d00F18uohOhDBiX2raqNv0udJr1rCjOav0Ig?= =?us-ascii?Q?4R1BrlvyLY6jOYykg3QYXsLC5Suor94DrLiLOMYFwYHVa4qsb4l8ryGMqUNH?= =?us-ascii?Q?2cDBd5tJnKtVFQ/lQxDBioRQT8grm5EFI6FUvpQ2ba2VBYviJXCJC1dlNp2m?= =?us-ascii?Q?MRlOk0ETfHyLxrz55UYyJWfhZ6T59i3GkiPmTWUC6jsIFZLpIz1W5B7TbZD9?= =?us-ascii?Q?bokgjp4BUEI3m/t2SGkFdP2Z6Ea6lOyr+w2vRhybcOwZGOsj5eTd1cbuJvxm?= =?us-ascii?Q?IDu8tRS5QpMA/0wgg0hA5pF4kSFd5yhjf1OyoDLc4IWP5w9aAB3dKix5UtVh?= =?us-ascii?Q?Q2OBO/MvD/DHNA1FpCa32xl+K/7ZMnWGlmboTPBGXQIvHbkLG56q9bSdcQEm?= =?us-ascii?Q?SclZPkPdQbTQue6Lp7jtaNsmZtCsaKpBGtYGFGQDiXZ7jOfiSvP0RwRCy7bx?= =?us-ascii?Q?jLevGCvIghEKfUvCu9FxqgL0PmIBJPOqXZXxG/77O4bls69WBFKpwIbQ07Sf?= =?us-ascii?Q?3T8ePvl0GC6/Yp3kfdXd2qGC37ifnqykYUB7oMR5+ns2MqIRILg91+cDDnt3?= =?us-ascii?Q?KeIRCanDfzB5ft/bFe8dLDJo0B3Kc+9WksNk+SIuYRQQFY7aY8cb3ptO2Fxk?= =?us-ascii?Q?CQQYwSKfwqg4KBk+O26E60H/P/qA11OP22qQmPLhfpEbxy+yHWMQbLxe7V7S?= =?us-ascii?Q?sIIuGo8AcebwwAH/K4bgjbCrRbW2jBw+GpQ9UUPya9BOED4bJb/iU3vFutzb?= =?us-ascii?Q?WQBRvTxI9WIzhwWBUA8d43y4fBewkXvYVxHOe9IHQVD5wUCywidlVVYjOvGM?= =?us-ascii?Q?JvepdwUkBui+tO29tjVKsvhcoiwR6qNcLt0PSAZ5BVfM1rXbRrQzWT12gIZm?= =?us-ascii?Q?+YvImNI9nl4FXbi6OArJZrsWqtpoQPz0NWFpVwdR0omDLjaCoKOlFAiRyHG4?= =?us-ascii?Q?79fHX12YtyvqsrGoi6P0g90kcYlwBf5P55dP+lxSHeSyinvHUOK7?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 44c60662-b0d7-4521-1fab-08df1939ee60 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:14:31.4291 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CERW7oLTPXKLfaiMUHa8klmFlHDQa2FyX+IzxNJXrX+xawHUHA7LweXpSH8d2JesMLY/en9407ETxjmtltRWfD/UtgiDO26N7DW5TZITicOmNfmD0jyyrQdwOp433eyM X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the codec clock with devm_clk_get_optional(component->dev, ...) in the component probe therefore leaks a clk reference on every card bind/unbind cycle. Move the devm_clk_get_optional() to rt5616_i2c_probe() so the clk reference is tied to the physical device lifetime. Signed-off-by: Chancel Liu --- sound/soc/codecs/rt5616.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/rt5616.c b/sound/soc/codecs/rt5616.c index 3f9d97d04d48..e30e3b563c90 100644 --- a/sound/soc/codecs/rt5616.c +++ b/sound/soc/codecs/rt5616.c @@ -1222,11 +1222,6 @@ static int rt5616_probe(struct snd_soc_component *co= mponent) { struct rt5616_priv *rt5616 =3D snd_soc_component_get_drvdata(component); =20 - /* Check if MCLK provided */ - rt5616->mclk =3D devm_clk_get_optional(component->dev, "mclk"); - if (IS_ERR(rt5616->mclk)) - return PTR_ERR(rt5616->mclk); - rt5616->component =3D component; =20 return 0; @@ -1357,6 +1352,11 @@ static int rt5616_i2c_probe(struct i2c_client *i2c) =20 i2c_set_clientdata(i2c, rt5616); =20 + /* Check if MCLK provided */ + rt5616->mclk =3D devm_clk_get_optional(&i2c->dev, "mclk"); + if (IS_ERR(rt5616->mclk)) + return PTR_ERR(rt5616->mclk); + rt5616->regmap =3D devm_regmap_init_i2c(i2c, &rt5616_regmap); if (IS_ERR(rt5616->regmap)) { ret =3D PTR_ERR(rt5616->regmap); --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011005.outbound.protection.outlook.com [40.107.130.5]) (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 576844446E4; Wed, 23 Sep 2026 06:14:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144087; cv=fail; b=R1ItqH6w18Y7MNc8NAnbPb4Qi+uJwk8a/PNhi9+TMzS2C1YsyA3846tDeW2SIqGX8cOHQhUtiOSwqTCQlO36vh5qq+YVvLpIVnUN8RhwJsrIKa/40MvKlfEk2pOtPaN9/LSrX/0EhalVHTHDZ9cj3wHlEBR9e/ez+EBf5GtLPZw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144087; c=relaxed/simple; bh=r/zTdlq7Jy5Tiwl8gnqpM08S5NLLfvLYcMs0BuBIvqY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=kIR869JBeSMTzGmsuBcyfclK4xWX/6/vVOfFLUgjo+Sadw+Cf2D7F2vDuIYTCbMfpz0VDqg1Lzt28ovzkRs5of8Iu3qBoAAB4tI4q2SXFwW/DAR19KFg6nGoxfJ6RJkoiXkbdtrPR8EmpkDDv+AhTZ6oRj7tXMx4IWnnv3tnX1o= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=iossBspX; arc=fail smtp.client-ip=40.107.130.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="iossBspX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oGtVDn18unZeq7KhLmVGx/MFST1eVOPDrtiOeKWUezTnC1zmRCbXpPf0Q9wJjybJ+tkCQkX30S0zaE7COTjxJptW9eUaQtyclfmwFNYWDvwmnuLPfA7zW56WAT7gw8v1t7zXi86WO9/itH+W0Sf1+5uuEMkcBVG9jPeDxh89a3cS8d/2ZnZw/Cq04gLugS3gZc5omExS5NaWaO/E28tN0cD0lMBb2SM0WFhKUGJNi6XZX/RkAo4Ki2/CtWQxIo+SP3jt7s026JNHFeOSC//bGXi1xEMhifOHdusl2sxa94GMu57cDDwPfjwECGgYGcGyAjQPdk8XhqQ3I+6l+QfXXA== 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=syyI4noX614QyhJXKFAb8Yn43sk5lPtVZT2395KgcIE=; b=HrMW6zmBM6YsugRoAVJBiDnVFJRPQNDeJ9s5TcMylZUOAyCuUQ6Q7NVDgAtdfcizN9ipUOdRIUgZdyMsisQUCPnl+POiSrh+HEBGbluuf9OpEKVAO+FxmzlxjdYfR93GWGlz0R4lCw0fltZ+rUDRJA6Yu3FgPgAsH68jJw7XpWKlQYpDIqGJ756VNQsh0YIqyra1NcLMxy2HZd2PXFL+fcRMAmT1IBcm1LneZ7yvdUNSrcDi9CEkPxB0f8OM8NUXZXcTO8BE8WyIWGN6xCerfbgS16tBUOd7KsRs0JjI/fPrOg19i3RZhlEICq8Cmj46ZN1q/swWxuOzu7VLaWbgtQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=syyI4noX614QyhJXKFAb8Yn43sk5lPtVZT2395KgcIE=; b=iossBspXw9KjKRYgCD1Xf0FN8Ls4pUiXAAmdQ5Q0ldmzycrxUs0DKAnklb3Hwu6AOu5E5xVe26lIM/s2jbjr5hE31la8viP5vJbO4wMn/C+F5EQrYNN1Me/XaKmuyppTjSDatQKDgkWOOwWKGbqc+N1L1kUuCCBODrAlYQ9g9oAl5fi8cJW6z9SEj5TL2M+3WjmtArsoI6uC/PQWnifR/mgaMjojMN7UKtzeZEqZA/Sw16C+kNjydUFIYff2z4dbXEJXR5RhCBJDxMjZDqzTP0BgMmh3lvOTDAgh81IGJi6QVGqZxNwieL49lzigFCCOZv4tLo1azDb0LdRhpdgGcQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:14:39 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:14:39 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 11/21] ASoC: codecs: rt5514: Move clk acquisition to the i2c probe Date: Wed, 23 Sep 2026 15:12:55 +0900 Message-ID: <20260923061305.4041197-12-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0166.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2cb::6) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 37b70c44-50dd-476a-5538-08df1939f2cd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 7O0xFMg+vdMqnS9XdbN6xPsAjipcF8HgEgm3XVUXOv/XY1N7H7hb5mIlXexYjGihEJcvpDa9IfPXM4/fX+1JtuJRCwHe2GrcbiXUdH8aGCcq+PvPDM37Tce1Aw6CVaN6JBNpj2CAMLgCdswRDsRBbMjrn5gQJ+igzNCQLRL+Xou1FSEubtj1fqNCfplVITqvSQNRJKW8XccnHqic6PaavePjrPmJv5tjfnQEzOvH0G/PQAjIFzILRp+fUKFLxj8N+mlf8SuSVZk683BuqIYMauvTrrHcAoERyE21D5feBV3DCi1LxzU2UW+nEuKQOwfIk6muUilT5hOWYfzcgolKh1yUuOIZx1BHQd6i1uKatpkrQzNUQvHwbm+HKUKFmXsw+beS7LY49uolI9iVW6pHYtty3dGM5/sD/6+2GTCndNTMzGJfjtPjp8Bolqf+pBPt6X2fT/bkf3kc2bRMdEZHdtJ2GyfiwPdydnGHfLj3nwSVgJ9eyfbD/IPpGB/McFlMZ3cU4egi+bKOtL8oXfeA84cIYXqEHon3GHIlIaNVCSLvhB9vduhEIx2/2HuQOHbVO8YQVpw+Z9oxg1A9IH2K8nQc81389nSI8xxwha5cGh/Yyu4I6rifvmmMteIJYmH3dBOXyeyonYTPuRFtg/MX4sV74RLoxbxPbWNVjk61qcQ= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VUck5/AobwQ93rVO12OZrUqmScqvZsiIVHdjBPq7FdhN3REwPyVI0aX5bxSy?= =?us-ascii?Q?TWA2zrqGV5sfEkOSFTfCc37d3PoLgDLwT5RmAcM6ICUWfGCiw6OCCut1G6JM?= =?us-ascii?Q?Shnu/Nu6UPf8AwipXEKnSYMxxDe7NyqoZf+SJaanw69H+oVrkcNj9SxC26iG?= =?us-ascii?Q?RY8unSq8ZB0LuRc4g86B2lpOcf2kQx1EMX1+EZODKngpdAm68c/xH+AkmWMP?= =?us-ascii?Q?OTWBtD7C8lkPR383X461VnfYhvDHZwuzDbCNaHbV1IEh67otl7E18/mXY3Wj?= =?us-ascii?Q?Th3iTaCtWNc0fjJ9YjrVJCGf3pTqi99uzG4rQgYUcsp8czKoyyJofhqcqeej?= =?us-ascii?Q?9hlNapGSaEU5YzrSDdcmSYoGQ+66XzQnzNeMX2H2wsNsA2la0gcOxi7/V0bu?= =?us-ascii?Q?lUhlrhtFuLJveNgaGxlE941JneK+/XPpQ9VK7wm7gut32p6XCdybihSFy4u6?= =?us-ascii?Q?f13xlcf76eHnTOgXqSNjnb2s4oGM9+DpOPJBXYzUkrZl5d6uReuHef+UEyN6?= =?us-ascii?Q?QV2JLAqEdCYUPS6qWjTrPn9jdQLL17FOJ3vPOB+wgmqwCutKWs27kOz6vPyZ?= =?us-ascii?Q?QLzYmLE0+vdvCnL/83ZSWFNc5fTBzWrofJF/3/XD/lGN+m2JMecix11s+/Fi?= =?us-ascii?Q?ziGgoQMwLA8qZm2q5rLcywQulukAxVGEERasr2yeDTMCKu3zHhhM717QaGeh?= =?us-ascii?Q?4Adr+LJXKWD8wXG2V0HkGMHYydDat+xSZlbZT77naDt5ikPwvfNNnLfCY57d?= =?us-ascii?Q?stOPEg9R3rCgkrQcLsmFckk/py+hQFeqEQN9Xlb+aZQq6fstIBxTgmcSDUHy?= =?us-ascii?Q?/v7Ajfw3zUVeqfORgo5hhN83/gXL19zhcs322lyEN3zOIgTWwtj+Jt+DJMTS?= =?us-ascii?Q?BPjV59hbG63QaKwh8UjfKF+5elvJznJUEGMWkL7Io8uF/AyUS2FEMuyDLfmT?= =?us-ascii?Q?VPUjKO4zTO5xtw1LdBmnB01bFGlnPENQPkZtUuGc4lsDfwMSZvpS0viuF2ja?= =?us-ascii?Q?+hQFeqQ8lHxgnq9M5XphAxQEWPPh4LHO+e9pl2RpbjL8+G3u1HHnNr9/KeoC?= =?us-ascii?Q?h9rf6Y7lhSQaSg7cCHpTRThbSItVEJ4Nc7NWC3GVvSAn7fDloOb+ytToDy5U?= =?us-ascii?Q?MPkMyGFA46x1QLsYXyQ7dPGV5hsUlUePpRyvdeJsx67JdYyUnVN5IvOim0VS?= =?us-ascii?Q?her9iN/JYY8yV/clclMUbXZR6E2rCUvwWAOlXYIDtSXhzSjG0E+Xd3LAS24d?= =?us-ascii?Q?ecgrGHt0yURC/lBUfqmgodL6474UUJY0IJRD/NKAt4Rv6R+A6saDlaXwNpB/?= =?us-ascii?Q?c8Alrujn1pMLbJ/igGwSpc8qw1DwxS8Q642sWorpRsgSbpwB45J/eHbFZEOt?= =?us-ascii?Q?a20StIq6+eDslyKXgiXgGSEx3N/qSv8C55KUapM3E9TUl1jXO456MJH4T2PV?= =?us-ascii?Q?T3b8UiqU0AZD8XCCYduM0rfaZ2LEwJyS9rhA7UHnHKPXVwDa9n8zQoO5wnXd?= =?us-ascii?Q?VBWIpfujMheFsdKtinWh5LPF/q6pc0b3P34/Id8Mvuk+uD0rolSVjuXyOvaZ?= =?us-ascii?Q?+s319HA7ZvDHWfOSWk84ePpdWfHW8aGkbwmmTU+0Cdkmx7zu4kqMKQIHoi2a?= =?us-ascii?Q?6tVjjtc+uF2ExLJIiPUNbt9PPQnrsF3ZrnvyXT5DGz0E91I8b3MqsaAhopmO?= =?us-ascii?Q?rUovaEzfj2MHhgdyH42aVw7kZKDdHhmae4rU5zHrN+i9rmtotOFT+JmqtzkL?= =?us-ascii?Q?Bt96fH0jBr5aensdR7DOExlRkWNVbIHxH/Xos9Cu4H9HR5sgDLt9?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 37b70c44-50dd-476a-5538-08df1939f2cd X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:14:39.0976 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: blZCAw0XPva7WuFNEQ9GiUfEcWBg6wmSCUZX9076x2AIzcafCXWgNlgYBP4ZlBc/Ckgy3F4cn0Jgmchy0ojtMOB+VpUIKkzCb0S4C+LANcihbItUKka8H5KClUXURR36 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the codec clocks with devm_clk_get*(component->dev, ...) in the component probe therefore leaks clk references on every card bind/unbind cycle. Move the mclk and dsp_calib_clk acquisition to rt5514_i2c_probe() so the clk references are tied to the physical device lifetime. Signed-off-by: Chancel Liu Reviewed-by: Cezary Rojewski --- sound/soc/codecs/rt5514.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/sound/soc/codecs/rt5514.c b/sound/soc/codecs/rt5514.c index 753143e2d11f..a33fbc9fb047 100644 --- a/sound/soc/codecs/rt5514.c +++ b/sound/soc/codecs/rt5514.c @@ -1099,18 +1099,6 @@ static int rt5514_set_bias_level(struct snd_soc_comp= onent *component, static int rt5514_probe(struct snd_soc_component *component) { struct rt5514_priv *rt5514 =3D snd_soc_component_get_drvdata(component); - struct platform_device *pdev =3D to_platform_device(component->dev); - - rt5514->mclk =3D devm_clk_get_optional(component->dev, "mclk"); - if (IS_ERR(rt5514->mclk)) - return PTR_ERR(rt5514->mclk); - - if (rt5514->pdata.dsp_calib_clk_name) { - rt5514->dsp_calib_clk =3D devm_clk_get(&pdev->dev, - rt5514->pdata.dsp_calib_clk_name); - if (PTR_ERR(rt5514->dsp_calib_clk) =3D=3D -EPROBE_DEFER) - return -EPROBE_DEFER; - } =20 rt5514->component =3D component; rt5514->pll3_cal_value =3D 0x0078b000; @@ -1285,6 +1273,17 @@ static int rt5514_i2c_probe(struct i2c_client *i2c) else rt5514_parse_dp(rt5514, &i2c->dev); =20 + rt5514->mclk =3D devm_clk_get_optional(&i2c->dev, "mclk"); + if (IS_ERR(rt5514->mclk)) + return PTR_ERR(rt5514->mclk); + + if (rt5514->pdata.dsp_calib_clk_name) { + rt5514->dsp_calib_clk =3D devm_clk_get(&i2c->dev, + rt5514->pdata.dsp_calib_clk_name); + if (PTR_ERR(rt5514->dsp_calib_clk) =3D=3D -EPROBE_DEFER) + return -EPROBE_DEFER; + } + rt5514->i2c_regmap =3D devm_regmap_init_i2c(i2c, &rt5514_i2c_regmap); if (IS_ERR(rt5514->i2c_regmap)) { ret =3D PTR_ERR(rt5514->i2c_regmap); --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011005.outbound.protection.outlook.com [40.107.130.5]) (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 872BD43DED6; Wed, 23 Sep 2026 06:14:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.130.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144093; cv=fail; b=Xu9pXlP9z8M7kmI4tDXL3aJ7aZFBM5Sqk4+BQq8om4vJYQKimnuNSW0k5K7Dw9RUzMlXJKjvXRIhkVvyXphVkZ9sd5ZOWa9nmsQJGXkyaIVrfYfqbO9pRxEd5zbTahaJyKdMdNLRXdxq9oa5lggxPkaxisQoFJ5qzXH5ml2eK4Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144093; c=relaxed/simple; bh=VpvAo7qXEd2Rqi1WDYCnzhPE4R0Br/moU1IdcV3fDEM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=MwPztPKVnBY0eEHsZZMf0Z7vvFigG7LmxPN1cpn55SY4QdbfgydOQ7EUOHngfOgLx3MxtAU+fjEv67dMQ669sZCUU/3n3CaH5OiaP749TuOnTq1CEJNgXj9l/gysXeyq98bvxMVuy8g1vOdEaS2pu6RQfzLU3nv23FJqrUhcOOI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=F0aSnezm; arc=fail smtp.client-ip=40.107.130.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="F0aSnezm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jgTBO87joFopljmJwf8U0hPpA3HRF98wZt15ttRRxH9vKS6htUhWWiu2kNwwo6pmGeAgIZPFBwY+Fn/OqEoxD2PKQGY+/9zMuZf2CYCgDun/pJnoQTsJ7WtLun6ik5Y+4ctrbzheF9jMLWDoQGX50i6PwkcX3jM3wtWLdmaV0HZUZbAUgdb9RfRIP8TgqnHn9Yy8p75SZXs+gJygDpTE5uTwdcGflEP5bzMAwC2bYDAYAG0db1pUIz+oqNpFXYwQMCPmIr0AhLjYBKl3xbUaPETL0NeE5j1fMpHA8mbeT/IgKvOhKU6WIWmyspbvhCWyEkZXdP7BZZy/zSLhwZDkDQ== 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=9CTVnuhHZqeMHOqAN4F3nA/gxXDKFyCpdxr6CXxGZg0=; b=JfhNYWvHX/F3qiy5U0olxeZMCo9wsUHP9zYMX+fWCGBIeXdY21bONLp4+Gh6u7Vx9qMfKBzH33YSQ4eyOqjgUeIqcRmVLnlFfkqM+Y+dYS/v9SVoRngotYMsS6PFgUmoTRg3WyVLKxS8DZ7yJxYuinNLEV65eSV/Rlj2YP/1FIYEAabT8CAr/vd13n1SHD+wHg6M+FuW0MrV6HkQj5wDVyZbroDPQs5RFS534T96Wx7OlGcbWMi7GvPMGxcLZSdofZsFx0BG/QBBOyd4sb3sDLIygvdTeg7UrMuqGkyo59GSzXDIvqZh5OsheePphVe7+TsrAFxT2M/ZmPLNnvpMfQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9CTVnuhHZqeMHOqAN4F3nA/gxXDKFyCpdxr6CXxGZg0=; b=F0aSnezmZb/mACWb4z3TSPfo02Qih5N50s9VjfI5Ur2TGRJDinPybNU6N4M9UmuSrH/ZglIDtfDQILXhsBFRK6F7dQz2MIqOFobMC36PsL4ZjJtpyy/yvU+Vg6XjEZ8VT9vu+EapcygH5h7TGcEgNd77hc2QVQUNznlwRKq9BjkH0DE28/vhv44TOoX0CcgB7p8cvlMa6r8/JcaiabTLrFckAZ7MMb5OQ/BxktyvxwjZuOMrMf+kO1cphmyKWPlnrYWGtD4orSgm3C+ZuzIQHRJgS7WBIKw94z/gMK9vXa9tdJQ+HM1OFNDNRyDjoiwYZUpr6TDsBxkVmHzLbzH6iQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:14:45 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:14:45 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 12/21] ASoC: codecs: rt5682s: Move mclk acquisition to the i2c probe Date: Wed, 23 Sep 2026 15:12:56 +0900 Message-ID: <20260923061305.4041197-13-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0110.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2bb::7) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 20b026e3-63e4-4424-276c-08df1939f6f3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: DMW7/rz1ksctltpgsdWCnjwGHiBCK0QXuKX43ItrFdP5/TK43/Ex+9LZ7P111rihXgEKs3NPt+rjtpwNdEt4YnVr42HTRlxWijuTV9Y4wYHKdo4NFVzevOGozGEFmV7PjTDRqD85/dOwZk5Z1yuiWpVtqXMWi8OkHt3waRPSASVf1Wo7xCEnlRBoD9ONuIn1Z2AE+56pu13wctXrrz8+ZiMNAapTz/MjAiVVEl2Szgnm9D4htD1uv2JR4CdZZUZtnRGkcXhzex0hXuqjtfal3xeukELjGZDDWBQSfttslvGN6QGjyQ88WePKYnwo9+VVMTCCSVgwOXRhINGVEhCoLK336bSrPe6eBasIgNdUCT3lAsYyHoJyGH/CVyehmjnInVAsgUanQPrhIuBlDcOpdAdT/1LbDlAhifjp/IYSbOSyIeKSqBpe2EzcLQfky83j6/lFOaCg39jSkmPSnPgO00BOMsMRH6PUyY/1aa7OzjgmXG4xjkdKeK5Pv+V6IjkBwBkSxNPCnwpw7CZtcG+BI6Qcusl1sAQ/Z/Sz3OYe1vjPxei4q/p3n5f6FfpcJZTy3W5S+NVCTOK0/Djjj3OleW0eefqTEw5Xk+Q2eHN4CSomqk56APl66Vjx3Lcw942pYTnIofk7e62rXBXp2BbI2PuxLlg5UFq0rsKRTfJjKjY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EJHjOYM40QNcP7NEyf4OKyh0q41crxa0vmUOojpdIYojyFSlVvuSk/f7a8pQ?= =?us-ascii?Q?U1FDIfbEpqQIffC071j9so2BIDEjYmCzqG8AhMlod617yJixvjwTtxLDHm1/?= =?us-ascii?Q?bpkfgzPqzWkix3p0a3vchpFU5uwElAsck7Rpc5x54WR3QDgv72Hl21YQWJ2E?= =?us-ascii?Q?e3vJGdQk2Sa/JFR+6I5gmkqyrLmX1FiwvencQ0ci/GFU05wUy+/2+PVg/ZBO?= =?us-ascii?Q?9BNHwlRQ7TF4CkmwqvZOKVQqwkHqm1fLdrTvf1R89Kh2pWAkdGlic8pbIVxH?= =?us-ascii?Q?7duCCz1PWKPUFB78wMLCwrqhImgxZcNVDThEF4TObZiBze7XjTRvh04/UZ2R?= =?us-ascii?Q?P8vI0c75ywP0jkmVd+su4Mr+5d8i3qSYCzFd2dfw1bILUv9+xFP5qZP/vvZh?= =?us-ascii?Q?OhTwaLxvH+aq32C0V1IdQLCI8NE6uksHn23ccJs53DEnJzLiPvd93bMwJUkF?= =?us-ascii?Q?efsrWjImn8ZRA6NeVRypJ4HYn5rtJiYnJ5F1+pBC3RSihPyQymM3l8Sa7/zV?= =?us-ascii?Q?QRfQZBiS1OuhCCHM8WzUMJx0rWVeFbrjE5V+oLH3GcChNh4+7eeP6nJcwDKe?= =?us-ascii?Q?/X0eV6bA4MkrS/3/iVcf+rQpZT4kbbmv4HE1lbIeZRSlI/+vRZi9hfi7skru?= =?us-ascii?Q?SFuS16fR/ybBv5GMsGsRtcRoHDxx8bBIPOaUv8NgbUCYi8Evh6Zzy7JDroiG?= =?us-ascii?Q?ok4sKDaS35XDOXaCYxOEMgpagnuiPVAVTn80LNh+GUoG1sANCfg1DMjHBM02?= =?us-ascii?Q?e31KlcisBGd3Zbj1Qd+w5E0XN/ifJOMjS2vmFFZCwDirSXREUIeeXgfup8uB?= =?us-ascii?Q?9+lpKS5HOdEVGdPMOkHKilDrG3gncS+gVV5iJj5jkz+Y1PmCON2uRia38QX3?= =?us-ascii?Q?Dv58V8z++vlGWHGe3WDwYckpqOL6vlPWl/gqluDufpw7ElOEIo81ZDVoD5tX?= =?us-ascii?Q?VKMZTsfd23wFPoaFo5uCa3jgMbejRpD03boxZhBe8e3w3KpYoinnd/Rg5z81?= =?us-ascii?Q?NR5cX7OTSzN2vcau9ppO8KXRWZY+LiFwpW8RazlquxjjsbEycya14MDkINlO?= =?us-ascii?Q?QZJsutEzi0xjplrF9zgY0G8GqvE+lmBOsd/KrCswMUx84lCHTJCKXwYy9YBo?= =?us-ascii?Q?6ARhmdalTUL1ltVJ5+rX8U/4itTkDvymFg/EAzosN/I9QnVQ73HbSAUocygB?= =?us-ascii?Q?gUdOTfaqoraJSKbdyFqH4BmMmQZqhncfanZKSs+FmC/crccEBuiv3f9H8Wnq?= =?us-ascii?Q?ZzgfU7gCWXgxcuarjGqve9+jz/PTMCXYOsaBeeKLJN0N2Ea2Y8IjYZT65tkp?= =?us-ascii?Q?uZhf6fZTis/sbEZ6RkVrVKE4uDzPz3q4+yYS+ICxD7c7Ail58HIxMp8wGYam?= =?us-ascii?Q?Jz9N59EQZAQkbuM+nMMyRkOfxY8jjJvFkIFDSn5UEnNir3JRfH1C9uvHSn5d?= =?us-ascii?Q?2QErddfdAq+9P6/8iK7+liphHoJHsM/Lj3TiZGpgF/cO1pRKtr7KMDwNShZ9?= =?us-ascii?Q?otoF+zZS/F5BHKD8y9lVtE7tAGR3CuZ2Vf22+Upr0oXlVyP5A4as+I9qygrv?= =?us-ascii?Q?m3CxmuQvvKqh5dDC7giwdm3PN3jgYBfEw7SeKU6PY6sZt6pS4vNzQ7wT+hWq?= =?us-ascii?Q?/tThzJ1Psn/hxXgfSTOWiwjfmqSf8ycSZVOb4VQCWUaGnefUuSZF5Sq2WB5T?= =?us-ascii?Q?AYHgsWfDbANChNTeVk1J7VCRcJ+EGr0vfEF0sRi64aO1HhIcHIwcSeT0jjNY?= =?us-ascii?Q?xyyRdz2Px1EgGkNpbPDhds1GhQGIn1XqbndDtvWQGrj4YVTxu7vY?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 20b026e3-63e4-4424-276c-08df1939f6f3 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:14:45.8181 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /fg48QhNjrMAbS40BMGzaucWOYTfbhvkFgyxyMoIPaIbQ7M64SnXs1dXTRV1bTVKru5XskXblpabJF75nsIRaU99U1oeS4zeQiSW+Jaa/RAzwtCdvdoe94k7cfQBRdtd X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the codec clock with devm_clk_get_optional(component->dev, ...) in the component probe chain therefore leaks a clk reference on every card bind/unbind cycle. Move the devm_clk_get_optional() to rt5682s_i2c_probe() so the clk reference is tied to the physical device lifetime. Reviewed-by: Cezary Rojewski Signed-off-by: Chancel Liu --- sound/soc/codecs/rt5682s.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/rt5682s.c b/sound/soc/codecs/rt5682s.c index 6dd0d36a7186..0f80e4c32f57 100644 --- a/sound/soc/codecs/rt5682s.c +++ b/sound/soc/codecs/rt5682s.c @@ -2846,11 +2846,6 @@ static int rt5682s_dai_probe_clks(struct snd_soc_com= ponent *component) struct rt5682s_priv *rt5682s =3D snd_soc_component_get_drvdata(component); int ret; =20 - /* Check if MCLK provided */ - rt5682s->mclk =3D devm_clk_get_optional(component->dev, "mclk"); - if (IS_ERR(rt5682s->mclk)) - return PTR_ERR(rt5682s->mclk); - /* Register CCF DAI clock control */ ret =3D rt5682s_register_dai_clks(component); if (ret) @@ -3152,6 +3147,13 @@ static int rt5682s_i2c_probe(struct i2c_client *i2c) return ret; } =20 +#ifdef CONFIG_COMMON_CLK + /* Check if MCLK provided */ + rt5682s->mclk =3D devm_clk_get_optional(&i2c->dev, "mclk"); + if (IS_ERR(rt5682s->mclk)) + return PTR_ERR(rt5682s->mclk); +#endif + for (i =3D 0; i < ARRAY_SIZE(rt5682s->supplies); i++) rt5682s->supplies[i].supply =3D rt5682s_supply_names[i]; =20 --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011006.outbound.protection.outlook.com [52.101.70.6]) (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 2ABCC442384; Wed, 23 Sep 2026 06:14:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144105; cv=fail; b=ZeyoLZjUPDQSSQEEyIdNs4i6fh2lsYo4Fp4IcUS16l4guLewCDEyQeyux/bgghBJk4wEG/H890pY4XwOaCjptqnWL0k828JfzlDxkAyGlyER/gyK1JlJUPdYxW0EKDu9fB9WS/7tPfDf8XyzU+JNAUSLjfIJq6wf3svS3zw5qiQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144105; c=relaxed/simple; bh=OJ51+xaqdJ9LqSarlEliD9zBHik7ItrkR4skyjxJbFs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Z700zPwFq20qLKb0NHAuFE8pc/HVcZBh1CcGm34WHfoj0VnCDCwm+gxFrrZGT9JwD0HftTJPUMryJsXxWNVmsDxucP0sjWkVOhAnITqwmO7oEcd9cqm11m++Sc5q2e2ONpo+GIWK+NN/Px31oM8vRBZOZBQS/QdjhaPCtMtbIPc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=C6kSMPKj; arc=fail smtp.client-ip=52.101.70.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="C6kSMPKj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=w3GaNhc68V+w58sgXOYM3RKJ00snyT8kfND2kxvoibF9J0jSoZNn13aef9lVqqJjq103hakldXdPC8Qi8H1ZbfF5EYmZwWQQc13IOwAqgwopPHOhHOraAwzM6eUGqqT1UGAVIBMODP4Vk0ipVNZDtskAFxWt3cNE9MimdyD0+yetC4J6br5VXfV92IqI9si7+lX37u+Tep4LPhUYYBiy41b5o+fkXDsDEnXPQDT1IXWpUtKm5CKf9fZX4wQAEtShvFRqIqWrC2EFX5ghhioGTc9o9H0BCggkrdPbPrHmkJE1i1/mYfDvI5vHKbzO+G9A05FJ3+wT8fML0TYimEDDlw== 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=jprutNdFgkcAYybSFgGpZoFZCil8zgrm1y90FJDPXG8=; b=G8vTmgCkQjs2v9cGdDUQQW8umnITGG+6CVxUNSWvtbzcuQeRWTMDLizwHkQB1l32XYevJw8hMaBvu+3DbqBJFljPPYVZeEfAYph1Id7KWdXCy7vYDPQd3Zze0XsfFSiBSEJGn3rbP/1lAHG8GeQ2secWKglBQyGZmmpCG/RSTqGFVzJbtIRz4DSQvNoeB0IxskHujG5KcQPNVHGgd2v9wQddWox8MR0/MRMv6ApO+cBKG31nwXzC0QmcnT2G4ugiTqmR5vf6cGTYjwrQBFwk6olJO+bllaPxW0wnTvmxmMs9o4yE2Peb94pf8Vdx+rUrD3qjPMEaAksl3FuYubtOOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jprutNdFgkcAYybSFgGpZoFZCil8zgrm1y90FJDPXG8=; b=C6kSMPKjKsFsL6KKJzu/oE1WY6ljNSTWRbvKwmncC/RBbrdSf6Vk0FiA73c+tf/W3vtj6jOJaK3fapvIPkH15oaK2A+Iqy0N+fPTi9YywO74ozbC+KWzlVFKSOwqiTgPw5mP6XL6wgRj071pyL8WwtiV8kyFrJZRmFqo6JMeTRhci9pZiNGU2kClTCid8nWc+ue+MiSAy71g9MK0ZCDr2Rw1bMXVHqB9F4BsF3ll8LcO/L8/rCKrmDMTJX1MopS+VOEyL6ARWwhFxGnH/ZlIzBmpTmqA2Kr+vEXhmH9ym/5El8x3Y72LloNRcdvK3gKqhte2SwbBHXUQI2h5zVVGtw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:14:53 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:14:53 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 13/21] ASoC: codecs: max98090: Move mclk acquisition to the i2c probe Date: Wed, 23 Sep 2026 15:12:57 +0900 Message-ID: <20260923061305.4041197-14-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0108.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2bb::13) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 91af088f-eb45-4fb9-353f-08df1939fb58 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|6133799003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: Wl8w0GnDu0mZQbQu7tJzN16k/4nJipSgDrhTptONZGC+fXnfpEa/G5El0+XXO2kPTSxt5jSokBF7Kv9jgHQPquPIOKQKy0qF4aM1hn1VwiRPOX7yVv3ugA9t69pdYk9hgPt1QBNbeyP3WxK52IKVnYzC81GZBHns9FL0dHhqQfaNg7juCUoIjNLbAddUW0FfXMtFrx0CLNib3GPdMM68a56QquuDhbNyeVwT5yoG1/IeuoOH0WuDm6PCmbe3yTHc4a6B2qAJEDNX8NOTvz077nrZyPATqv0a5QNjTKw7JeM5QK+FIkuAqq8psAsF0GAaZtoTJgpQJxJP8URd5xl7zxuOCY3aCuHd9TaU69TIEOzijXNkN8Gzhbh3UIEMAVKMZ5oAKvHvhfFlyf/dDYoy6ywp7aPu3TBsP3pidww0/fxlVJh0GLqIMr63Z5kzjTKS0PDpo/YzS+YiDPvOubkyoGzhLs9/U7I5uKY33ZEd5vh1Vfb8RpRinEpty6vWy5gnNsX/Jqe6Hpdsu8eSgUJh0gvcrwqlIJ7kGKyG/0codHsSsSRNM9LSgeM4nxegxcrL21/Rv8Rxgb7Eqq65foqMZ393C3jItTVHUpdJ+EtMEvVYb5HlldIcT3tdnRdqZ5WeXUaKANkmlfEfRgud5vzO+Ypbqjob2Q1pBTqt8FpBpAI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(6133799003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vv4bQHFZwhF0+IWrx9siXgJ5HyinYDlj+qhsjDde1LuzSN+2yEvFpTtuIYk9?= =?us-ascii?Q?uPZkkjLTZgFxf9mK0Y0KnXzJqsKc2P6mz8Z1USruvAB9SkVCRLpBsTZDiWPO?= =?us-ascii?Q?PxFU1HdNR1NAYUGPa4oLF0UuB87VceD9tYmi6yLWe3irqRmwOxfox+hYc3sb?= =?us-ascii?Q?dFqkXyXhROmdpOiHkL0F6tnpYrErmRjiZc62kfQ1i/a+5kzactRGGkJODsfo?= =?us-ascii?Q?1wfBMTvdKV9efINfYhrnPtJf0VwhTK+oDmre9F96heFryOtpcwWhKcDfQhV1?= =?us-ascii?Q?k/ZbLkSDYxoVx5u278tNnPK/zFpreqK40k8Pl5goa4totyUXXJSxU/WeHkOB?= =?us-ascii?Q?qVlQNWMjEyv5gJXY8Vl0zZolLAzEfajTVrShSIW78IC5zMEmDIHXwnq+5jmI?= =?us-ascii?Q?o7d9abxFgdSgdK3+W3AfLGzdEUay8G8xPNTfI17/6GKBdRZInU31WWEf95ZX?= =?us-ascii?Q?dLNeRyDvM2GsaL2fPM0GOYHRf7nvrf6imQ6z7/LjWBwBlBg3qwedOIzkkSg5?= =?us-ascii?Q?9IyOQNkHt5qPfuzINEQ7K2TS2gR+TKWCRBAd0AC7zJPy27TVqomiMPHxr5VE?= =?us-ascii?Q?dipTNDdfK2BlwXrew0q06x7bxP4vPsRX46v93Fg/r1PV00LUAF2ftOek9v9P?= =?us-ascii?Q?F4mCU1iVh307mBsaOPHohHQgXqExbEBygfz+Ut5xJtxRvNqQgKgt3c9iBDq8?= =?us-ascii?Q?lYFQZ0lqctckYk6psqkkmi8+VSQYqx0IbZIQqefpdqkXYjSTcvf7lXYSmfs5?= =?us-ascii?Q?byoJbsaLd99LI/3QUU9IRLHJf3wPgwPhmQaUI76XawTfs875QA5/xZ7ojNB9?= =?us-ascii?Q?L+h7Xm1oza0msji4JFEBh2kbBqkdLq6TSBZmvqYOU9eqWKXd8BpNOcegQ19Z?= =?us-ascii?Q?E/J5IhEbd7atnntmBFf+OLuqPRUV/ySumvKrBMOhZatArwl9AwBmpqSrr5V2?= =?us-ascii?Q?hyL1869Hxf/e86BJAUGrzgomWEMvWjoB7heeuWxP/zynGJB10AgSUSl8dkCa?= =?us-ascii?Q?e+9GJ42rG3az7Vpo4oDaFWe7lu8vhIVBddP5brWS0x1BFl+rJDdpvTvSmkUL?= =?us-ascii?Q?Z+N9JrYrmwUjUGvvOKmOHTkeUxE+aY/n1DzmHx40QHXcJkVZ+09U5lmGhdGU?= =?us-ascii?Q?GNvG8OMNc705J29zB3ougNIy07J5g2sjv7RKegXQWRoALyfULwTA/myxyQDf?= =?us-ascii?Q?C8UpHd2zcvBtXGWkh7utl5z6JYLr3fI/pJXANSg1dk8iVi3WvK+yiuspxv0k?= =?us-ascii?Q?4a0kKUR4Nk9GXbFRQtksfy371T7JnR/AYJOGSdbRhusSOxWFS5uhzkPaqNS5?= =?us-ascii?Q?d+Y69RF1YY6czp4w7vxADQwgk+J9zZr6HXHg+8CLH8TMgVrjTXpA55+rWx4E?= =?us-ascii?Q?Dp2MSpfioUsPLHxXDIMMmUnPhSdwfyL7Hgs5TAJsxHciyhjeQgyyMtdLCX2k?= =?us-ascii?Q?/3hn10+L5azn7WeFAqYTKwQ23UHDLERxuNLhGMhHAhc89peVgwyXVg+42+ij?= =?us-ascii?Q?fcJhO6CJOSE3GG4E5+3hqT05SD0BXNhsf6lJK20NEK/ymtfMjkBYmerpFzsv?= =?us-ascii?Q?IagXcd/zQ3jfIhbmDrupmGWITbjGulMYL7EsB88LCJJkoz7ZEhMrsXm10Zgm?= =?us-ascii?Q?eo8ndplqLQ6ZxF/NcKwoQk1SSlVKkbCJJ8XZd1NLdnTIGICp5mv+mC0BDhdC?= =?us-ascii?Q?uDth8BgftHv7nJWs4PLF9lrPwmItiIyaZsTtNmKE+uZYueIUdnU7+030dhXt?= =?us-ascii?Q?sWmh6YlXLO7BQKxBpFRLJuHM1/tDCA7ctfSSPnmDgQqvZ413CIbg?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 91af088f-eb45-4fb9-353f-08df1939fb58 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:14:53.2117 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Dd+7klN15AWvesxn/azMouEraguja3XL7afFErIJY1801T0zduP/U0jcVwKfpOcmqZCq5xx03HivgbjSFU6zH4hDXVNlsZHJFVN5ZKwmUHzdHZKXOCvYof+2V+qziuhr X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the codec clock with devm_clk_get(component->dev, ...) in the component probe therefore leaks a clk reference on every card bind/unbind cycle. Move the devm_clk_get() to max98090_i2c_probe() so the clk reference is tied to the physical device lifetime. Signed-off-by: Chancel Liu --- sound/soc/codecs/max98090.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c index c31f3d32fa43..4bb5478f4642 100644 --- a/sound/soc/codecs/max98090.c +++ b/sound/soc/codecs/max98090.c @@ -2448,11 +2448,6 @@ static int max98090_probe(struct snd_soc_component *= component) =20 dev_dbg(component->dev, "max98090_probe\n"); =20 - max98090->mclk =3D devm_clk_get(component->dev, "mclk"); - if (IS_ERR(max98090->mclk)) - if (PTR_ERR(max98090->mclk) =3D=3D -EPROBE_DEFER) - return -EPROBE_DEFER; - max98090->component =3D component; =20 /* Reset the codec, the DSP core, and disable all interrupts */ @@ -2633,6 +2628,11 @@ static int max98090_i2c_probe(struct i2c_client *i2c) goto err_enable; } =20 + max98090->mclk =3D devm_clk_get(&i2c->dev, "mclk"); + if (IS_ERR(max98090->mclk)) + if (PTR_ERR(max98090->mclk) =3D=3D -EPROBE_DEFER) + return -EPROBE_DEFER; + ret =3D devm_request_threaded_irq(&i2c->dev, i2c->irq, NULL, max98090_interrupt, IRQF_TRIGGER_FALLING | IRQF_ONESHOT, "max98090_interrupt", max98090); --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011006.outbound.protection.outlook.com [52.101.70.6]) (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 D40AF4477E3; Wed, 23 Sep 2026 06:15:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144114; cv=fail; b=Ufe7DMiu2QPnzGa0xkOdQtZ7rVrX2r/UOBRTBS95FtdbIXQePfbgxXRz2X6GOIvqQPZ6s+tLnIgT2g8GrFVx4rFVxyeTNJValahhBWLvxbHHeNtS8uQsskp49nvWY4AqVaV8LUL62KO0Gc8kUS09qTTiYMMeKZ5Z026Ykd1dh8Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144114; c=relaxed/simple; bh=ACLIwfI6+MP/LziWe8+WT0hfuSfpBA+02D0LnAe94Jo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cO5Amu8gRwazJd+P3XGRHiczRzgPhWnxOyT4UFx4MxSf9Sez/sVPqG2LzXUend/ctzKTubzt1eIz2XrR2UUrzl+sEFNbJEVz5+eIRlFq2RkshxUSzvjVl5W4rm2RpUR6y5cY96M6ynqSQP8o1h8m1mIpsbTf6vvxbDIs27Ns++Y= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=EyAke+LO; arc=fail smtp.client-ip=52.101.70.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="EyAke+LO" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AsMz2Fvmv4x0aoKhhO0wqUJlGOZlOXdhvAkkYo9fjzTbv1A+w1JUfPjwC7M+aTArj1IviKFwk2IKQmTkwH1b9CIcFJ4mXHM/gDHx3a0LVF1IVzgRzTEfdAc+q9WFB/oSNz3nrNLSNj706M4KVzSr3pkx09H0egGlcBFIO9AZcgfO10eupJGVT2pb1XDympTc9yYQlhIjF49aogb4RoKGndRd+JL76vV3jUYPKTOQqOKZOqtBDY7czjR+Goy39H5FU+p0jLqtr74vAPHHqk7VHBo5cqGmkF7fpNL+LSztIx/q4nLemp1S4nxvADl4WeGCzuuZQDjODBHFRf4e6LMfvg== 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=YqlcUEgwgpt1Z2duAXgZuNaoc3t0vkQSgRKbhRZdnwA=; b=ADQAYpys1cLVUeXRxd3Ja6l1DvEWYm+fZQwl2uYx7NbHyi6e4SIF3O5teaMzeV9fjsU3b2VdJxtt9XT7+CJAzal4VCzSPf/neGG3yc4UV8dkOweP3vOUBRwyjcTCpGvia01nMU1qYVlv8vKgqQPqjjjwr65WevYiSapS0dGeapw1zEe6yhkcRpTwKhrjW2fwNGP+dvVkyVKFIru82pMOaTCC7vmRUpS/Qz76q9H+lMslaFafpl3fNReM0J7jY/hQs2Kzz5CGcR4RUHbnlDP2HFj/rQbcUqcDeS0Q3zNjknwLip/xYzWJa1sNQFS5c/M1naB44HOmsvjvc2Dxdwn/TQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YqlcUEgwgpt1Z2duAXgZuNaoc3t0vkQSgRKbhRZdnwA=; b=EyAke+LOVVnJg0/S8ZZwzAT9avPgiZzveFiC3L5q6jbLdSqDvKJ2bYXm2Qgttlr4hSAkv9auvyRwxeupJNOLa2NtqBaPAnBD0eAFOlWUZ1xN9+pKf2bChT6YOuJ/dbT5wTFHKp6M0tlGWxd8QAi9C5T1z9fRRo2+vAUKHnTyiSKMPcQQwoWqe/IQj/1bkf16MhKyzUO31IFl8/CX9Gg5EeJsYNGXZm3p6HuhGMv4L+2bjVPJ96z0+LbBniFjM7g8PhGSR/C53H5KPC3Hz44p2XRhrIgtsSK8bkrZkjLL6REzxH7wMEncsxDDkfxsPfIu1GpqnshriCBZ7jxBN+L4BA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:14:58 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:14:58 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 14/21] ASoC: codecs: max98095: Move mclk acquisition to the i2c probe Date: Wed, 23 Sep 2026 15:12:58 +0900 Message-ID: <20260923061305.4041197-15-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0110.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2bb::7) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: c71cf05e-3246-4634-63a0-08df1939fe85 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: BIy1BTT9188EqQS7oQ/URCbcQPoGy8pxKqT4bcJvJtT8Vbi7mEbsdlgbZBEEZd+rHwS70MY9/MeoAwkLYVVBml9tZEiACSO4pmy9xHIMHOoxKUvn4J6Iqs9ADDLXoBFf9B4wmduMqsyspVhLOvdtQezU9jTtYXnt8fnezcoEp6sniN5c0n3wzlRl3Olgq424lpu7DMJ+1dv+PDm9zUro2/XxsktIu4P6g5ovXub6sC6m5AbE1MyEmAA+ePpK8gwrxsijIHZ3Sm2/7pAH10GJUkjAygXjcHJtEBVk7QT502hEVeI+z3tu83qc+284HEHWn5AqRfGaOBSPfzK84vB+zOy1RoILHWMBR8aDi71z2033i2eX+6Me7r5W4UF9bl9MUncYJuADkbMFtSY4hjUADFSaKWvhdwl76Er3CgldCIrUEC8WHRt5FyM4TU/QYUkA+XCczOuCjgJ/ww0qyKBm19tqstiTDZwPmVmGEhqv0qdQaZ/WXn7p3t26SakNMQcvf17RvFFz9Mg7x1agwS38727IOgbOdHqz9N09ZHgvd3cgo0ytO/qdz0GsFVMO5YGDrdgPurg9ffEeLBBh1o2+CEo4f2BsSUJQREKz/sbTOogjCeaIwTXTmnqqDJIA4HARSKlPQNWH19zlMAlu4ox0ngPDi7i9LOpvosTEIhL/FoE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VzDaj1gXep4l7cC+3Y/0ZQtYh4qfaNhDUwlCM2Wl13TZ81I0EYaHPLg+lDbx?= =?us-ascii?Q?YArqYu+taMFrNNqx115FvkkO3fSWT7C4W2CUDg7Nf+OlzW+KYj/meBBIjCZb?= =?us-ascii?Q?XL/8425rd2Tmq6WCDjOleCtgjmFM7prXZFHXQ8ESIpnwZYAtDRi6CDzMdPSx?= =?us-ascii?Q?8cIKSRhDP+ZcHcwDMj4fzpUQXQW/WjagCLIyMvbEicjes2m6+E9jSVQzJDUG?= =?us-ascii?Q?0W48VkT8QGQ5jjZFFBlXBqfTFMnva1FsGljIKohl/SynyxMNBz5NKrS5yd3E?= =?us-ascii?Q?VveE2DtU/CxP68CmyRFwshtFl9n2pR0F9iLLUxF4wW0v1vGuV5kEjM00a5un?= =?us-ascii?Q?IZV1G+I2x/qHjQ2SJKZPW84TVyZY6ytSa/+cn+UFJChzsJoIyLKROAbSVz9f?= =?us-ascii?Q?m5V1D/oXOeyQvDeARmEhws93cZLc93UYrWZ7dw+pnAERQoW1A1UPbJo0OG2j?= =?us-ascii?Q?tfTH70jCBhhz+iK85QWuBPVMrdl7hJPn3oxMWrJRUlD9oI+R8l7hpFKMmFbq?= =?us-ascii?Q?5bVb2jitMuNZLDTGU1TNfrcGUHHQE9bHA0nUZTH73FGJ7VBKSKJBapOOem8N?= =?us-ascii?Q?HrId75HLyrrtJMvB+nux9J3OOjXtA+M7PnvNZzQ4Q6Grg9dAX6wx7mabntSb?= =?us-ascii?Q?TT/1LNRC6eOhJ1i85687+Q1nF83gatmE+gsaLaARR9AfQpLyDTw49GR7W2rP?= =?us-ascii?Q?qdSTv8TOtgWQp5nnzJEEpCd39GnjH3CfezFXhYt6ziqq0ASo4ZYOB+b/x9nv?= =?us-ascii?Q?lTod0MMtHlb8UiALzRvgDW2txY3nXSGE4Jddp5kJlEjKlVwW4ZF4pDYTt/3L?= =?us-ascii?Q?BbmNnwWZpm2I1LG959YjhXDt68akyE71utkgIpPHvzyrDouCGd27VIIP+Yot?= =?us-ascii?Q?AJp48tzcsKKLAUaBygzOpXSoMAxT2IR3NdVzs6WdwqS/+IaGybWxkQn3T64E?= =?us-ascii?Q?td1o06KlBijm2og7xA+Poan8Mulc8H0s2ktzceCBxpa99mAS7o0ywsOT9h7y?= =?us-ascii?Q?Ex3/1AAAOb+jXBIXQugBM8kR/n2xA9xE3bxlDQmVzL/M06XneISMnLhuYoBY?= =?us-ascii?Q?juMvG709V8ufqrNra9HAH8nED4mwFbFjgmHp0AvkOiGlZ1qvchFmFdOfBgKm?= =?us-ascii?Q?beZiBx/iTfuz3JxzbCAhT91jyh6gVqkhry53pSJFdDw+CAAGYMeGmCLPaMM/?= =?us-ascii?Q?MWJBxazqLuWwLKtc7k/nZSpAVxqSK/pj7x9LponMgC4ZCE7CXg6ENdp58LzK?= =?us-ascii?Q?QAACjEY8WWed9RbMhtOLVbbYFLU3imrqxgeJ6Xcg7kGn1ouUMXwSflalonOW?= =?us-ascii?Q?PCAwAC56bazHeea6R6P6dX9wmWoPeTPwgG0pxaf7O+lpqAoEUaxr47dPZoDM?= =?us-ascii?Q?U99Rx+J853yPmQdG88fDakEpLImQQdLQ/Gwkt3sZobtLX6nPNwmBTVRtx+aB?= =?us-ascii?Q?l+rVE2sbmz955ZHB/GrU6j8ecRZWyqms/x0gUih8s4Ne5eDpiL3Y1JhvaJzS?= =?us-ascii?Q?tn/nhAWSGgRuOQUiH+krvJryrzLbkmkrG47BGnD9CCqdgVVaIQC2Wm1tpuaj?= =?us-ascii?Q?Ld9NwKVAhA5ImHl8fvfpqdn2dmX/4dOpxwT/6hXLLYUwGghbXtQWYaIXvca9?= =?us-ascii?Q?MGhAg+EdjJZfcEu4QYQSXhQYR38KA1uDAUdo1t0YviGN2rau6tsA1jYB/X1x?= =?us-ascii?Q?J9Z/FbYrgxYiRlhXToDvy83i16QRwJ9xYeU1jJBUpJnN9HvdYCcF5e7hzd6S?= =?us-ascii?Q?GL2D7IeorzXg/6EohOKqigBfKhQRrQrm8IrprPT58ylfG7PnySJA?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c71cf05e-3246-4634-63a0-08df1939fe85 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:14:58.5405 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: c0GoiLt6yFhYwhGO76DjzFKWOyDLza2+5xr65ciBmmcRmJy1a0ucG4sdqpJH/o/dskI+e2XUK7vs+v2pgnET26ewJCerhBPve2lzjRO7UMEBS1ZjHFOhcBbEznMhI8RP X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the codec clock with devm_clk_get(component->dev, ...) in the component probe therefore leaks a clk reference on every card bind/unbind cycle. Move the devm_clk_get() to max98095_i2c_probe() so the clk reference is tied to the physical device lifetime. Signed-off-by: Chancel Liu --- sound/soc/codecs/max98095.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/max98095.c b/sound/soc/codecs/max98095.c index a64a5ba00379..c827fd47a5b0 100644 --- a/sound/soc/codecs/max98095.c +++ b/sound/soc/codecs/max98095.c @@ -2005,11 +2005,6 @@ static int max98095_probe(struct snd_soc_component *= component) struct i2c_client *client; int ret =3D 0; =20 - max98095->mclk =3D devm_clk_get(component->dev, "mclk"); - if (IS_ERR(max98095->mclk)) - if (PTR_ERR(max98095->mclk) =3D=3D -EPROBE_DEFER) - return -EPROBE_DEFER; - /* reset the codec, the DSP core, and disable all interrupts */ max98095_reset(component); =20 @@ -2153,6 +2148,11 @@ static int max98095_i2c_probe(struct i2c_client *i2c) return ret; } =20 + max98095->mclk =3D devm_clk_get(&i2c->dev, "mclk"); + if (IS_ERR(max98095->mclk)) + if (PTR_ERR(max98095->mclk) =3D=3D -EPROBE_DEFER) + return -EPROBE_DEFER; + max98095->devtype =3D (uintptr_t)i2c_get_match_data(i2c); i2c_set_clientdata(i2c, max98095); max98095->pdata =3D i2c->dev.platform_data; --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011006.outbound.protection.outlook.com [52.101.70.6]) (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 2FC0F448BB6; Wed, 23 Sep 2026 06:15:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144122; cv=fail; b=KGtHhaVgETFM+dsaFcKw4WMPwDR1KkEl+fTCYxvfMHCHsHucN7rj/A0m3FhNkApvPoYkakZF24zqUJ7O0b1FOeNGgbD9kifjzNLV7yEFY9vY91sOhmugs5gqlEt4afaH2tsx5/ccvS+oUm00tP1lf0p5YV8T+8rLeEmvR5fy6kc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144122; c=relaxed/simple; bh=9NhWP74d3mPaPE1tLFZ6wCMUVzC0I0ArZSXaLWFe5vs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=pbgni74fM5M/cFDC5mT0zpacP9jF4fGKi7eec6Gn8QxWC2H3vq8BVXlIiEVf9yU8Skx9xuNQlzF1r63ze6jbC0Nbkdljj83M+Nl0IY7YHZzv5WnFLZ+heSkj7Xy0/nMMPEBo0v0uT08AVESl2j4P1AcGGoV1xL/kzj0JM1FA9Rg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=s3x5A6my; arc=fail smtp.client-ip=52.101.70.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="s3x5A6my" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AqO8jEOQf9UaW7eRSxwD3wvgqr5XZqrmt1HBMv6HtDQffrbmRPD5U9gy6n5fASQrfkQEWolPZmBx8o55xLmFIBtrF98JWLOhaR2Z0rWlCZ+fkB+7KYlQhdWMI9oEIJs+ONrOqWn4YCydhUY2fOUlKjkqL5lZ0w11zcUfjD+dJluS+SQH6lyVPDLGqgW8INkeSUcEGi+QT2sgZIeq07xLc940Yk8qJEzCNSreh1oHJVTENGTV0lqbYZh+RWEUD79plOqjdI9NpY9dvrzv8QSHBaU2/csod0viDP/CpoUAe9Oei+DAsVHi4yzkezdM977DhB19cfvt122IdZ7ykwslUw== 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=bYoyb8dfU6L91BqURFZX5DX6jAaL5bAOZs82ZkFr8Iw=; b=hoiEiwNPqwZ9jBAkK4/J02jhlC/pc3PKfUnBoPAss65zfpVbgY3KOnB5p1b6/1ZP+qt1bMh2hBhYwz9PM++Fo+xJfbaQ25gq4mMHr7bQO64w2w2ejEzWxO6Pw4NzAng5SUubYookhmMRPn9Dy5tGaZ5ON5DHWH1rujT4u/dDh6w4AVMh6NZ20zSaY2Lo7iPDUXU9Tx7CcuLYasHrTFfvhg2qFQRszHuakwX9n3/kwOsPDQ0bQt+FcR73mR1caLtIeBejbQLhEEuyrVYJ78dM6k22Se/1+KNfaryoqTguKrevqMGMenmjJ3G5s949+hN1AvDdP9ndCRp9RAVk8gs9CQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bYoyb8dfU6L91BqURFZX5DX6jAaL5bAOZs82ZkFr8Iw=; b=s3x5A6myaWh+FBQE9A2khVx11q5CB+U4zLw08tG/KFGLGG+FaAs00Rhma8jteDB1A6+n3buK0LF5Mk8vFRfzxcE7t3uh9E/5BPEv4+9nWxbZ/HODfYjI3GlGLo7MIYwYJcUlrQNhHIU6QZH1+BnpFH8CLcI5Jq9rTRTJk8GcJXmpDKWm2wMBhBb8+o7HpSnUK+JeaqE8EHuuD9Kbn3x4BBgF3xe0jxCaqQ4EIhPXUPfPr3CaHhm53CvtG8eMyKrT4R0kewC0tSxm9OJKfoHvbGkeZzeyyWT8JcJ2muJa6ZxPYwkWaFsMst4xSwmfYf2tj9HpIdhpSPpxUlRiVF2wYA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:15:06 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:15:06 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 15/21] ASoC: codecs: wm8985: Move regulator acquisition to the bus probe Date: Wed, 23 Sep 2026 15:12:59 +0900 Message-ID: <20260923061305.4041197-16-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0029.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2b5::15) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 22af2523-7d10-4ef7-f670-08df193a034a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: /SQGGXbjB/+gPlpESCocfUs9Cc1LDm1moPHlK2hJ/OsMpApwL6TwGyoRIoxJR6I/tDvN357+10GhSMI1msENsNGGt337gzVMyYfB/hrnQKaigncO3HmirGgiT52FsynKlAkL1DBJFiO8P2dkS85SN3YTsinBTYFg15mCxKzVi4bhIDEvKI152dOXXQn2p/AN9d1RHEhf0QrvoZMxY0eU000J6FIL13uUt2LPFJIsi59ylvugu1R1JL56FjXJ4nDMaW8IbgQnuhcfPHzMeo4rgo3MGwDL3jT7OT2pKy//kR1akHcJhxqZk6TqxFuBgaJA+qPgmiKOWubePo44wb2nD+KxAlLkJrbhnxGr9dTeQ8Bz3csxoPksiEw2Ni36z/FaxY+BJmKZd3EtNUrtpWupv4KMMiEQGV/ooMaXQ3XkUO7m5lMWUi8vs7cnMcM5enlnZzeSn/e6P37Og5ftZzl/hPDuJr7/tAdNGtvyfaXKn9Wwz0D+ZDusNZcWJ5ea5gthte6u9b4emUAkEQveGHmb3kzDrrrfxrQZ1Y97ZjCz/ZwYlWeHAeb235O0NAAX3h/By9n6zoMrLMx/tAcMlpMgfQRjhKDydTbN4lFUUUd4NGiz4WtQyfn2fBb52ej5kjh795w4CaIbcKrHIrLvP2fqaehIBEpQDQHmpLY9Wat0tUk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3jnMF582jNtMyN6ClrE8tNNyFY+g2lb8/Esz9tPTNAPZbr834qY/p0o+Q8RJ?= =?us-ascii?Q?EndBpMmkzgT7ErNg+hrzBosS9RlnKwK5lOs35aOV6LxwxCfzcaXUS+V9eM7b?= =?us-ascii?Q?NPG0n1tyeCxjUkXvb7KQBQVMWiWGxPDnZ16tziNYcQP5Zxg1+g7MOtAftB6z?= =?us-ascii?Q?Kjtz2g1rgfAK1QBMU8hD9DFoU3q/M9Vgr00yq1Ikd5pYzdhJOAw/uPUvEetL?= =?us-ascii?Q?pvtSjhV6C653QuJnhkrJ7GGn4EA/dddLxGkKBaE8CXuDBiZLurBai0dBUKNQ?= =?us-ascii?Q?SdGUWJol59LWSVgdAic6IPhlu33Lj8GSrX/YrtRWfraxwMVSkl79G5pW9uJ1?= =?us-ascii?Q?wUl9sKTCX98JrGkFL8DYGrojcvhEdpqjEVaiReZs9kYZaTnK7Oo+xVQIy+Xs?= =?us-ascii?Q?UmnqwnZYj1W1TLqfyyu/fMtwa3Vk2CmHvzYhimbm0pNcD35Crlx6JOhJj+bd?= =?us-ascii?Q?dKbLHwvNc3JrHkby8PR/JxRtGDHCHpd1JOZ3kB8gO/pERGm2inrFoSZXmdFa?= =?us-ascii?Q?xwUgvuaZZmrP1Z+nD41EBg/3E3rk7TOqqqO9mYZQyiHHnvYWKzudfXAjf6we?= =?us-ascii?Q?zIRFy/5JS5+OfyVotW9mODXkQRBJX+yzMLk6E357mvpq+xluMM52bx+ltY+I?= =?us-ascii?Q?iJLKippGOtNMofi1YLruaeulZ8IPGyDoSvelSpomK7FvDf0H2ABP6TexZMMB?= =?us-ascii?Q?Zj5hE3ic1mPyLwvQMuN/DK0DES767rjWnkRj9kmjyeK2jg2ZbNdPf+TGe5G5?= =?us-ascii?Q?3UYcy/NVKtAiIX8q733YFPV8cf+0sUFGSY7fUEHpCjAx6hIdbhwiVIoY4cQb?= =?us-ascii?Q?C8iq/jXjnHigX3dDXOUUx2GF+nrCuG23NOz//kBoFhW5oU8Nyj0ZOunEbbXO?= =?us-ascii?Q?rqliqGR1T6kZ+mBWsmGfLpG1dXmKQaRERVCRqxJmzZyWiwCev/NVVZYEtdkB?= =?us-ascii?Q?cy6hTenpS/J0frQPX4cp5ioimbTaeEJ7mxSC8T3kEB6UQA79ZWp0LdXokStW?= =?us-ascii?Q?T6lnIdH65ktlH6oi+WB2gKzGRYdtWqUPB19aNIjcQSzeUqCYZdaKLn90KRMh?= =?us-ascii?Q?SJszAQLq0Ows03eo7YOSQJpoPvqdUItXfMQ2InGjjAlP9OvhzYUrK/4rQry+?= =?us-ascii?Q?lOnlK6/l9teoRwp1YNj3kbgAQuAeTdvY0hvC4g3nLqgvcBWYWvLKMY2Rv5CV?= =?us-ascii?Q?O4e9YcvQ1DYYuHIq34sgAuKIpPV69VeowIDzAp8InzNsm0Ei9vYLx7ZXnZpd?= =?us-ascii?Q?xEQUHt+IL8N9P8TIXRCUINYd2powmAMBeYNCXU9RanOBqKQ/gsy1bsOh7NP8?= =?us-ascii?Q?WmM1DNb2VHaXyv3kdJjkXyixbFqhGySac0xUP+cAH1IZTFjl+pQgJkng2gZT?= =?us-ascii?Q?4lgoBl7e54hDC91TEFu80NIlN7mrqnLR6QRJEmoeHgO99l++cFOgoV3stlu5?= =?us-ascii?Q?3l+0ZQ/lJjh/g2vlY/Zy3/LYnEdVduej7EKS86hV76c/M1hYQk80u2FQF3xn?= =?us-ascii?Q?Y9JPU5r4Giqar6YP1G3GHvkmCNMHCTNTCf5p2sQSuE/ZteOrmt+UYcckeRwb?= =?us-ascii?Q?Npasu909xkFU16V+rM15+eJiWyeetwSGRERt44Q97aPiaUvmBGH1D/64Z1/s?= =?us-ascii?Q?VYz2jLhnaSAgszROJ5rWzaHRBmSHR82ZIxP3cy71MYgOKEWtvrK7dj84I3VR?= =?us-ascii?Q?8W3Urfo0eENKefsehYzGh0FJW/ih2/TLb9/9bFlpDcEQQpfRbQSi1/dC5/RY?= =?us-ascii?Q?kfwYVj2Fa1Y6R2hG3y4qDAybIO/K1cMLoIyo0rpEAJtu9x06/yaS?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 22af2523-7d10-4ef7-f670-08df193a034a X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:15:06.5308 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: x8wEJmWPcCsy9ODi15a323wfeZpXu/qIai66Mj+EKjcQ920VPOwJqaOXtE7BpDM+4zrb99U/2RH6hslNPdOp4tLuz3Dgi5Uzs5sp7xosMFFtAE9xpj1xUqHiXZ3xqMhh X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c/spi device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the regulator supplies with devm_regulator_bulk_get(component->dev, ...) in the component probe therefore leaks the regulator references on every card bind/unbind cycle. Move the devm_regulator_bulk_get() into a helper called from the i2c and spi probes so the supplies are tied to the physical device lifetime. Signed-off-by: Chancel Liu Reviewed-by: Charles Keepax --- sound/soc/codecs/wm8985.c | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/sound/soc/codecs/wm8985.c b/sound/soc/codecs/wm8985.c index 877a691c188b..1e862609f5b3 100644 --- a/sound/soc/codecs/wm8985.c +++ b/sound/soc/codecs/wm8985.c @@ -1029,23 +1029,30 @@ static int wm8985_set_bias_level(struct snd_soc_com= ponent *component, return 0; } =20 -static int wm8985_probe(struct snd_soc_component *component) +static int wm8985_get_regulators(struct device *dev, + struct wm8985_priv *wm8985) { size_t i; - struct wm8985_priv *wm8985; int ret; =20 - wm8985 =3D snd_soc_component_get_drvdata(component); - for (i =3D 0; i < ARRAY_SIZE(wm8985->supplies); i++) wm8985->supplies[i].supply =3D wm8985_supply_names[i]; =20 - ret =3D devm_regulator_bulk_get(component->dev, ARRAY_SIZE(wm8985->suppli= es), - wm8985->supplies); - if (ret) { - dev_err(component->dev, "Failed to request supplies: %d\n", ret); - return ret; - } + ret =3D devm_regulator_bulk_get(dev, ARRAY_SIZE(wm8985->supplies), + wm8985->supplies); + if (ret) + dev_err(dev, "Failed to request supplies: %d\n", ret); + + return ret; +} + +static int wm8985_probe(struct snd_soc_component *component) +{ + size_t i; + struct wm8985_priv *wm8985; + int ret; + + wm8985 =3D snd_soc_component_get_drvdata(component); =20 ret =3D regulator_bulk_enable(ARRAY_SIZE(wm8985->supplies), wm8985->supplies); @@ -1176,6 +1183,10 @@ static int wm8985_spi_probe(struct spi_device *spi) return ret; } =20 + ret =3D wm8985_get_regulators(&spi->dev, wm8985); + if (ret) + return ret; + ret =3D devm_snd_soc_register_component(&spi->dev, &soc_component_dev_wm8985, &wm8985_dai, 1); return ret; @@ -1212,6 +1223,10 @@ static int wm8985_i2c_probe(struct i2c_client *i2c) return ret; } =20 + ret =3D wm8985_get_regulators(&i2c->dev, wm8985); + if (ret) + return ret; + ret =3D devm_snd_soc_register_component(&i2c->dev, &soc_component_dev_wm8985, &wm8985_dai, 1); return ret; --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011006.outbound.protection.outlook.com [52.101.70.6]) (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 5CBC343FD3B; Wed, 23 Sep 2026 06:15:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144126; cv=fail; b=g5UkRQy2crBx3AlWcaJKz6OfQOwpnwOFK9uZzAY8oWooLwa2/o0k8ypxYMa3D0EONy2nqRquVBVcLn9e2if/ID87+dyRYwoKxciIbyxMJcTNo18Y+IlinB4qUjJh4Ck/Br4c+opYCSOgKzGcMh6YON7VKNgrSCpLtAQvQhenrEg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144126; c=relaxed/simple; bh=/acDThl5gAoup1rWkXiDFbHLlg5wiW4UdXtuAEkvqtQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=NH2oBgJdSJLiv3B8ijaHjVvwUm86Z3EkICBYYTLJ3cp4AkEvIlcSYs1+pot8ni35nPn6cePRpQZoal3jQJ5+6WMsyWVWJFZV5d7u5b5m3zGkguaOkytb4mVfnyMOjdl5Bc3KwBWHCIRgi2O7TbUkupX8UQQG+HbZfvwe2RjCoZI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=itMCOrhh; arc=fail smtp.client-ip=52.101.70.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="itMCOrhh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NUsHUKIrnTmP++yZN//220V/cpWBSbR6Wqquf48ksZupmCHRlc07dPFYLMcdtMm+FGx/q/kf+sdTtQZbOAjbZu/Rj+pCNENuPNCu+IILXeZXLdadqJ3JFH38NJw9FdbMQPASlXs+K50BJn37632AJW2TU+0oD60NmYVkEncF7O9yo6nPSrGTVKlJGSt8k709B0NCrRc2RdWqXl/JwdL2n6F9b/XvKjM+uCsASiGbIojyuV8C70eBU9RhN/cR6MfK62eREhWlojQ0W/EEhpugnIrr2i0727eef10TUth/EMviKB3tdz5DWbOmu7fZBjNjGI/F8m9fRU1VpDo5xEjNTw== 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=VelTJgkHqeFFBwjK3peHcKzGJzlUV1XbpZpE0nwdgto=; b=DW6fJ3NK5tzLq19ezt+mWu0mp9Apx8v8nPn0dkXy80NynZYVb9uWau1TGcSdyFLK5z7uAn6KFSp/6LDjBiRDS2WgENeZ5G900O2/+fMCJztUjhTv0gzrnclErIkpToqUPnZx3DyX6ptoCVxsGjc+Pc4CM+ilDaigxPLxY/7E6CU94Fkb44Ez1cOWuhq5BwWbGnbY1q3t89/XelCqW08vS5WAiLlGTikCD4hFup+RrkdVrzyCykF64m2QwYlMS9yWYH/79mFl7Kb2KxQf6xjGr40ol9jqKGFyKKuNpejqp0ZRYKzeXpR9rc0U7APPFvJZF8LMvNUH8kF3rSlZzMmViw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VelTJgkHqeFFBwjK3peHcKzGJzlUV1XbpZpE0nwdgto=; b=itMCOrhhPd93S8QECvmdeLgv5yF6fBgB3FQMqV42WMSw82EmikkjWACX+SZhnulyhWcPnd7K8gXB7mbMnY/MOEwLB6V2qwhNN7EiG8ltB0JRDUBPvmTqIL7sl1LUeRgw74OU3KChWd+6lsohgsBhdQ2lri/cMYlU6n6c2EWvd80RlH7nDY2CBo9CjyRHpPais7m0SXyXRWBhQ0ul1PdOdzW/RsgkVFhqLT42HTXX/bCrLvCLQzczuVFxj9z6TS2tKYPl7M+7hR6YRjtLC+hl2W2hXaRxkW+XnWKEIANufpccFNPLt8QjrzoY+EjozfXs/73XGVTVmcDbyPtgKyokLQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:15:13 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:15:13 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 16/21] ASoC: codecs: wm8955: Move regulator acquisition to the i2c probe Date: Wed, 23 Sep 2026 15:13:00 +0900 Message-ID: <20260923061305.4041197-17-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SEWP216CA0035.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2b5::10) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: de46c924-b900-450a-5a07-08df193a0771 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: WMStsdb1wO5cPYbP3J0LbSXmMEXgJPyUQXLC1dLpxExl2TfzO4cMAKDWGFmrVjKr2JEs8fDLXYO9hWtLLLLzZyPTAvBD7uR/7SoIyrJJz0QKYn9ImZPSfrJ+Yb53qihCoutHHVFfmUrmh/F94M1qBmUbXgqe2ukR7SEV6DvqbNh4Zj43uYAriMJeQW/dQPbL1OAwE/YOIdq2Aq4+QxVTqZhK+7dO/157ZxV7n0gX/A6Zo9OW1qNAyQAP24J7PNXWlREnz8W2514kEh32sO9rh9i+iXrfsUrvM6UpPFjJeJXvtJdKpfSy/9w3WC9qCyX5h6eposuC3zbJTc8ruHZ7r/ZYi9YjHdAvWZaCop/l3YDv6v8N1ZHMSJIyTOFewiusisebFp/DAwb2yQ93Ot6u5nGig0br3/MTWrs+NJusl72y7lrasWphhOKK1pixjWq8Cwmuvs092ab8VUYxjoHPGGpTyJTXSBM3n6NwufD7WHg4M1OnRKt40psLDbTlIqjbQq0NhPIaA8Jv3+6PubjZaD3Y0nZWkl01pICwHyn1dkwxq/Jq37FTb80tFIdPPb2IkPAYdXMvk2IMO3khtZlhRLlminCHGb4mbl5FZu+6tIOL2Zyy7pdZLpKYEA49bltAf7rKnS4nhrRqbapCjtR9IQ6el1AlRb2WsZRpvf7hH9o= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SlebPJ9QCJkwl8ryVZ9qVOhuRhyeZDDB8sNNrUevOXski/HTNg/1BQjkTUgm?= =?us-ascii?Q?RppWgjhvkLIzQw7xF6ZpE2Wj9Ik8AWB+tkfwXI21SDdIAbq5egkGRmIuRMag?= =?us-ascii?Q?80fKkYzAWmthn8tZWSYUYyiHpnA1ASEn/1aUByo+tQSH3zyS4teCj3YuVD9N?= =?us-ascii?Q?Dnr+bNb4D+FqNEvR3qpUoAAKvjMRmROUlKgphFnJq8GTnbk5yzrNdzI9MTrq?= =?us-ascii?Q?mE5FTJ0bPAeJvFa892B7s1yDtUBiLpIa1hM09cnNP3gcFFfg2wRslAgS7HhC?= =?us-ascii?Q?d2IQvy6daGrVywmLvgRfhjk1n7XH6a8FC4KBAR4PFyvHlotYDFSA1IUJc0De?= =?us-ascii?Q?ZuKgK+1o64IKCFDcBiKZAOhPTsJQWhP6T5Gt4rM9pNNzcmP2IWcwyBadob98?= =?us-ascii?Q?LrtURtmhzyZmv9jr453iwq+5nE6wQEH1SrTRdf2gZoAYAo1aihd091vh81qW?= =?us-ascii?Q?bWxXHP0c4c0JugQbdEqCV7aW2sVcIx8CUBSwJcUMDwVcd0wo3iwq2r43bsTh?= =?us-ascii?Q?9qWQIdYfCoYqDajdymnkev9rcy2u9xkw2PcKp+0unEQc3FPxfwTgp/3ky06o?= =?us-ascii?Q?9K6RRLwgxaTJY+pUCkJsE3egN3ZWnYvH1jfby5tT4+HnfpGs01hDpe4l9Aey?= =?us-ascii?Q?1aeQ1tpGKkWVt/cIvTjXHrLC+8n+b+10uCZyyU+bzFKYCoAvFLJwPuc+Pacu?= =?us-ascii?Q?r+v7ufZX5iD31DD6jxT+8spMiF/mb7BFFz4WCVPENbqkozYRmcK/+vXcTEHH?= =?us-ascii?Q?LoLhxO9esESoOP6Tc1OsCpflS1Xop+ok4htW6/z9SYlsobMnRxL0zqAj6q2V?= =?us-ascii?Q?Uo8bI1hIymQjh7/UwHI5ytsuGu8MigajgtTO80xPkoO0mC8z1Jt0ZMJbGLTn?= =?us-ascii?Q?FW2AdbNp/0pMYF8KU8+IZG39qAYvYhu/g/0mDRdnczMTLBWKtU/wM1OtsnmD?= =?us-ascii?Q?7u9yIspC1iIMcQ8M43eoIuH/zBdqXkN82aMSn6rnlpEAbT82rqVp24tAZ8Y5?= =?us-ascii?Q?KmO7Hhi4oMn0Sos0VDZd8huhNf2N3h1V748BNgXM8Eui8Qm55b8qhUeYTvFg?= =?us-ascii?Q?TwzuZ/q5R/bdrdyrxrj4o+2NTsMKExKwWk/ppuKeZglETLSAA/dT93LgA2ki?= =?us-ascii?Q?h8LKZQy9raXRI28lybStlD6Ic7xi30YP/6GM90Xe1Z6yzrLZR346NKoylbyb?= =?us-ascii?Q?pI1DpPs0B0X7tSA2ZQmgKORDJ0kYF1Yme9JWOSboKlZ/XxcpPFYDo+r/0EKG?= =?us-ascii?Q?I1E3lnuqYdOLqZC5wLw4EZOqx59p33aY7fgm3ov8N7DRtExT63oVMRyyBh1G?= =?us-ascii?Q?alSjN6+eeiV5WhvMa9yDD4CqUj/6GSN1Pcqeit8ckU4xGUjtfjEc8eMsGRbR?= =?us-ascii?Q?sHLp/L1AqdqzgR0vZ6ZtAFJflbs1gfWqb6wePKMdz9xbppPBXH9clj7AEJdd?= =?us-ascii?Q?DbkZZgbXDaI343Zfq4KEKmk3XBFYM8ooAU9qP5Op2wlRB9nrl219oc5f+huJ?= =?us-ascii?Q?caiESTTu2DOeO4AkwPxVQhlWo/cudA0oTik1r3Ym/c72LB/KNiwpJmdUHB0J?= =?us-ascii?Q?acagWX8rbLTR9h/Ezn+X8vIP7lI3pWDq4o4WLht2dJLDQ9+ZVVfkoCOWN+hO?= =?us-ascii?Q?paYjIlHhSBTN2i6AVQbNEX4+w4lhq4x3c8mTOhivEGmhndOfYbYMNT5ZgDCV?= =?us-ascii?Q?nc7lYO3Q/ubP+QCMvh9s94in0Usm+Zvlq+oWa6FNE87qo0fvluN9lKmMdwrN?= =?us-ascii?Q?1vozdq6Ub1/YyZCQUZCrju+qm+lIFvgxa+CuOtgcb3p9mrrLnFmG?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: de46c924-b900-450a-5a07-08df193a0771 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:15:13.4931 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: sVuKdskmxTme2mnPYC6PYDMzNuYfC0+f3oWxUBXi1lt01aHt9pfAXJnjH6uD3fgPwnhv0bQRYcLWC/6UwmrEpt+PBCcoklmVgBPH6jvlz02mjS+0nVuXoYcvPPv9LUVF X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the regulator supplies with devm_regulator_bulk_get(component->dev, ...) in the component probe therefore leaks the regulator references on every card bind/unbind cycle. Move the devm_regulator_bulk_get() to the i2c probe so the supplies are tied to the physical device lifetime. Reviewed-by: Charles Keepax Signed-off-by: Chancel Liu --- sound/soc/codecs/wm8955.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/sound/soc/codecs/wm8955.c b/sound/soc/codecs/wm8955.c index 1d367a957f3e..017ec2e37d1e 100644 --- a/sound/soc/codecs/wm8955.c +++ b/sound/soc/codecs/wm8955.c @@ -888,17 +888,7 @@ static int wm8955_probe(struct snd_soc_component *comp= onent) struct snd_soc_dapm_context *dapm =3D snd_soc_component_to_dapm(component= ); struct wm8955_priv *wm8955 =3D snd_soc_component_get_drvdata(component); struct wm8955_pdata *pdata =3D dev_get_platdata(component->dev); - int ret, i; - - for (i =3D 0; i < ARRAY_SIZE(wm8955->supplies); i++) - wm8955->supplies[i].supply =3D wm8955_supply_names[i]; - - ret =3D devm_regulator_bulk_get(component->dev, ARRAY_SIZE(wm8955->suppli= es), - wm8955->supplies); - if (ret !=3D 0) { - dev_err(component->dev, "Failed to request supplies: %d\n", ret); - return ret; - } + int ret; =20 ret =3D regulator_bulk_enable(ARRAY_SIZE(wm8955->supplies), wm8955->supplies); @@ -990,7 +980,7 @@ static const struct regmap_config wm8955_regmap =3D { static int wm8955_i2c_probe(struct i2c_client *i2c) { struct wm8955_priv *wm8955; - int ret; + int i, ret; =20 wm8955 =3D devm_kzalloc(&i2c->dev, sizeof(struct wm8955_priv), GFP_KERNEL); @@ -1007,6 +997,16 @@ static int wm8955_i2c_probe(struct i2c_client *i2c) =20 i2c_set_clientdata(i2c, wm8955); =20 + for (i =3D 0; i < ARRAY_SIZE(wm8955->supplies); i++) + wm8955->supplies[i].supply =3D wm8955_supply_names[i]; + + ret =3D devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(wm8955->supplies), + wm8955->supplies); + if (ret !=3D 0) { + dev_err(&i2c->dev, "Failed to request supplies: %d\n", ret); + return ret; + } + ret =3D devm_snd_soc_register_component(&i2c->dev, &soc_component_dev_wm8955, &wm8955_dai, 1); =20 --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011006.outbound.protection.outlook.com [52.101.70.6]) (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 D758543CEFE; Wed, 23 Sep 2026 06:15:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144131; cv=fail; b=QrjEqlqGdnUvoOOxRvT05FCBqnkdI+tiHw0FvObhky649L8hAqV8MUu7bIubr9lHBjgwovUz+qYNQTEPYJ/Prbe0Xhj5hT+56guZ+GI5g3jTxs4r7uaK2O1/RPTDh5BD14SgUdLgo+08MUvoAUq3sBLattLuYeYkstHcc38HnhA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144131; c=relaxed/simple; bh=yhvPMB/J7tM8F6InA5bT28wjIBCLYF91qDpYwwfZQs4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=BM+boU6XppZ0KQM7zCwSKqp5nqLSArpSzz6/6BSoPLdXV7XQUVFsM8OMSwfJuRZivhZKmYT0PQsovrTCe52zGFqmT9LfFifVr4rsrtZ/86d20MucJ1v29hKfiYp3vIbJoujZWM99A4lc16mpdshBOueCWsDRv9biC3/+KFMMS0I= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=Q8JSHfFG; arc=fail smtp.client-ip=52.101.70.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="Q8JSHfFG" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YfBWCroc9KfKUwPMYxgX6cRPJSex6Z24jf8D8rcOLE+kRw+8yMpZT80Xmz1WxqpmXgIsAxxEqAtcrLhOu6IhbQNRVtoGW3v9ZS5/k2PONIYfZL9MAmRsb2xxJ4knXVAu9CPKWS2XU1QkYRvmMRygapLAm8nLiGiedwGZ4dOqZo4oOzzmheFATxHPHpEvqoSIhDATqkBl2yDfEUiQzJjNaIrYUIRH+dSxRmZ4qi1d97ZXCxwFIddiaIfzeD4dzou4jrQeJ+copc29yCLCBuUHPtjPWnVsIcSMqc75xBs0553MDP8cg2GmTt8XPXcy2KwVFDepUJr56aeVfYb4TVh4lA== 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=1cwX510dAL63V1mIPAQeLGcDOULhO/ui22vGXFgwiHE=; b=juQTNm3oWeExdQXgPZtRXss7+/iiTZOlCr8uaiWVUch5t+BLI0ZZ0tV7FPAgDVSv3ALbNqzd76fsJf8XjOmQkOL/eeQd4H2ARmSDASROxzNxQ2soEE68MwlzW44YK1ELrNXJkI5hAJirM3OqIyaIT5WD4iX/lshwaBVRrlFj31LDqa1t/BmtHfmQpDo/3iXEw89T96XAS0jJwTj2FK2SnOgNYbVt4VJJbHGXBMeoc8gCoiZDyg0Caa7U2TYVvJPNSLpomXVQFX2XZhVsx3WdvjMAHQ6ulM5Peb6xHymApaRhLk7M957wC0/DBc3ZVe2K5Jhli/C5ssOyYBAiPpWkrg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1cwX510dAL63V1mIPAQeLGcDOULhO/ui22vGXFgwiHE=; b=Q8JSHfFGq6hwliqT3mvyT6SMODPJLjSOlePPxD5IVhVO6UVn8FhbvMg33wexocX9Yh/b35O00/UnQjP1J+iHhoipInt47gqSY7vb4FTw/whwZ3dpdkjZHQJ+AjI9Lbf3UKBS75V7zww1tmNz+JpNycQnnq20EokuqIdrF6K1wFTUhpNa+ub6l4fJpvkTo3mzjC4iBhj+7ImFadyS+zpl1K2ejrozAHYHi7Pjmd8FvnJMFpTM8Rg6bZH35gTJeH9qvtztGuJV7JalfeEtsixRgdUGTqhFJXHkZGYvRE2f4zqBTPWKOK6P0A91tZDXbpnvi3FokhITBSxoXC0SyhWEng== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:15:20 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:15:20 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 17/21] ASoC: codecs: es8389: Move regulator and mclk acquisition to the i2c probe Date: Wed, 23 Sep 2026 15:13:01 +0900 Message-ID: <20260923061305.4041197-18-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SL2P216CA0103.KORP216.PROD.OUTLOOK.COM (2603:1096:101:3::18) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 233c3789-7b10-430e-d8dd-08df193a0bd0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: aMrQUwzxSGLq/MTD+Do88rS6kje/xr66FM2ncVTlfLrx24YAg/UX0ACN1ZaWQ000phQzHUAP6cXMMCpPMB6pZJ96SGFxPd347eQl5VpEQOOlGtZFkz3HzFadbZbkLY5ZyqjOiv0ot5LA6O6JiLBuzGbb0jOzcdE3Dovb5F5G65YxHJnh01t7ZHLcuQoLecWau0VRILzegpfh1MmowrzqTB3D9obnPy5ZEcjblmunNhg6KxT7Im7l9u53eaEifdZtJp4ca7U1bwum3dhVG0Yoa/4+Kbe7c11Zc8jvr9heSPSyOdfh43ZsILZl55+gXf9niww/qQPDAGrarHE0ZFqB1nJqICvMi/7Kkux3kbibqz8NgOb8M6ilLPwBLIQlJV+HVtxYOZh4YBhaxi1ZsdYAQnkJiai13Zsr5jYrVWWm1c0+HTHcG8p8rhygptrg+Uxj0kJhpW7Mz/jexOlhNYZkiliSSWb99FI7LpdyjPJWoE/tDkXdjAmNO0mwimCfVN71S33F09CiJsGzib0kj/20I8iixTQvIWt0VS/dBzFfNhhjXpUFjHzf89j9/WgTRQHjtJ1uLTMwHwfE/oPVE4/+bPlfiESRnv64epnJFkdPZ35SLhjG76WNWGjMYFLXP497H4mzFiyn5ZS/0olPO2nT0FfITM0Di6ziLemeIVMA9Zg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?gFX1SHNoJEBA9b+VTOZ4XTBhli4+mntazjb2Z2No+zy+cOoPOTdQQmMJ7v1v?= =?us-ascii?Q?sr5HKr9sVWJ8c7SAKuDNOCessjUFxTC7S4UqoXMDZ+f7r2PCFcCH9gOhCtaH?= =?us-ascii?Q?6o+W8NRzxMFY18p5K65jTpXwbLKmGjiRcuA3MYxc7jyZ9M0PUV0JUXbmIym1?= =?us-ascii?Q?4jERjtS4akaRhBARusykNTUDYaGpII0sXQrN3yf9n4O8odKH9X4RQEEL9Enb?= =?us-ascii?Q?D6x4y2tDkpDqu4xcDHEpOsQq4171JTZGO1imd00pnI9nP0jYRUwqTFVFDmgw?= =?us-ascii?Q?mpNwIWboVdnzge+UTaR6WZKQTkshhcSetkyQZSjyhWXaf1bWiZvjPpQHatZ2?= =?us-ascii?Q?XyGfyYdNw/CcLmqXhNMr62iQoHvD7Z6vTW8MRDzi/2sVH2YXjqJ6eDC2h0jM?= =?us-ascii?Q?PxFYG3/GR3bXypUbGOQOEznN2qrx3cJzhROBeCsYfA6xp+5qHXAiLAoxReOA?= =?us-ascii?Q?73SI5ZmxpXgHj5uCx7grrLUaYyGw87Uqv6LH92eqGf1Gy0cdurv9KRajkBCo?= =?us-ascii?Q?vMhhEAkDAWnC+DoksHTTQiQA0W7Ba9w4UB691Bpw4YdxR7wlxu6QnD+0N+xc?= =?us-ascii?Q?I3kqeszdHLrXPRQCf7UU6Aof/35mlACDURLmshAcAvnuMxgg/yZfHELeV9Od?= =?us-ascii?Q?6GH4uPLW6pSPgA5WmZs54AYijTRZOXsENGgiINwLtVAcCkAJMhQZAg/X+Ry/?= =?us-ascii?Q?i7QrPv7ES6dB6oMrbupmRB+saUmUh0oWXOzg3iW3wkx+tgcDACvIKyl22hut?= =?us-ascii?Q?6iTBrqSZ9GvY9dNnXfyj5lD7H1MQ/LOS6XSUqwx+wgZ6nq5A5c03SU9LhykQ?= =?us-ascii?Q?Gy2tzepK+pRy6+h7Ze2bDkWSpP7KbisaSUPJyWVeUvyhuWQusLCjgjIO0exG?= =?us-ascii?Q?EdytcZE19UBPYHAKTWVwbCIQrRzS8phZg81OxpnsBSkbZw4YoB64dJ2vipIc?= =?us-ascii?Q?gV0eUT06AblJCPZQaX60hL8bPWEIr3MUbbAizx3a4JZT+O4b1J2ANLdCCk9g?= =?us-ascii?Q?bnk2st7vMsWsN1a+6YQNx4QIkCtgymUhatNiRUQXfcRlrwQp9oWGXS7+z6DE?= =?us-ascii?Q?IUXeyDQv9grP7ug+FQBUGFO5c7J449hR6ioZNB4JkiwB6iVzQSZEQrFPhs4j?= =?us-ascii?Q?sUrxo/KSUYREH2Eg8+vUccOyZ9EyGmwPwrMTbdzn5TL9quzbc9mP0jAoOgd5?= =?us-ascii?Q?XZwBh3FKv78xEyg2fkY6rRaDtFicOGXlG1OGagHmrSe0kvsl6BHweKJEbPsj?= =?us-ascii?Q?cYURXd6tfwQoI1wUi0LSAvIdwdWB72x2MXom3IV5ar361JoAa5ThEVZGEjUX?= =?us-ascii?Q?Hc6KCykKx8MMsEKyLhs1RJga5fZTST7mxRcxpK/ihLaTlrvFQYMZBrC3LzXL?= =?us-ascii?Q?qF5Y/H9Ve31RuNlxOQKEZbxXdaePtMKp3vL9SP4PLkL/OB/GfO5oJv5/nnPT?= =?us-ascii?Q?/o3lYVM18sk6WSIPaY+Hm5uSzUHKy4vxA2qMNDkLWxCDb3SpeoIN2vkXAUcV?= =?us-ascii?Q?aJNc+oNwRMUB/q3GG+g01OWEDZoxECQpt+Ueo12V1BO8NnzGhh5ajXt54BXZ?= =?us-ascii?Q?uWSoJGIomBq0rCEwaojt+AvofAOvzmcDlo8ov1Bf1q84p0IM18WZpVZwHWnj?= =?us-ascii?Q?lTGIftLOq+yw6/cCHyXLda2bgi55nKpHz7T7Q9fUNpMUEveVRG33JmC9Ob3+?= =?us-ascii?Q?bOHNg/fEqL8stZ5tYbvXRYno8Kc59VNp3qZ7DCL9UOHq65rchZMqHyD6XPqh?= =?us-ascii?Q?XMshi62ga4B78efdAhvT1VyTqr6hiMBgbAhkf7NwaiW/sufJe9wm?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 233c3789-7b10-430e-d8dd-08df193a0bd0 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:15:20.8222 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HHbSG19ebCJOgkqX0o4VmbmjHGah1lGyiMVzEJ2oKg5Atx+5fW1Sdt09kojQXm7khoprw8zJPzD4Lb2d7Sj45XXhIBJIutiZnuCikSUpZBd8AW52rBD/nALYIAqyluPB X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. Getting the core regulator supplies and the mclk with devm_*(component->dev, ...) in the component probe therefore leaks those references on every card bind/unbind cycle. Move the devm_regulator_bulk_get() and devm_clk_get_optional() into the i2c probe so the resources are tied to the physical device lifetime. Signed-off-by: Chancel Liu --- sound/soc/codecs/es8389.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/sound/soc/codecs/es8389.c b/sound/soc/codecs/es8389.c index fe341fe56760..267806b72f87 100644 --- a/sound/soc/codecs/es8389.c +++ b/sound/soc/codecs/es8389.c @@ -1067,7 +1067,7 @@ static int es8389_resume(struct snd_soc_component *co= mponent) =20 static int es8389_probe(struct snd_soc_component *component) { - int ret, i; + int ret; struct es8389_private *es8389 =3D snd_soc_component_get_drvdata(component= ); =20 ret =3D device_property_read_u8(component->dev, "everest,mclk-src", &es83= 89->mclk_src); @@ -1076,22 +1076,6 @@ static int es8389_probe(struct snd_soc_component *co= mponent) es8389->mclk_src =3D ES8389_MCLK_SOURCE; } =20 - for (i =3D 0; i < ARRAY_SIZE(es8389_core_supplies); i++) - es8389->core_supply[i].supply =3D es8389_core_supplies[i]; - ret =3D devm_regulator_bulk_get(component->dev, ARRAY_SIZE(es8389_core_su= pplies), es8389->core_supply); - if (ret) { - dev_err(component->dev, "Failed to request core supplies %d\n", ret); - return ret; - } - - es8389->mclk =3D devm_clk_get_optional(component->dev, "mclk"); - if (IS_ERR(es8389->mclk)) - return dev_err_probe(component->dev, PTR_ERR(es8389->mclk), - "ES8389 is unable to get mclk\n"); - - if (!es8389->mclk) - dev_err(component->dev, "%s, assuming static mclk\n", __func__); - ret =3D clk_prepare_enable(es8389->mclk); if (ret) { dev_err(component->dev, "%s, unable to enable mclk\n", __func__); @@ -1179,7 +1163,7 @@ static void es8389_i2c_shutdown(struct i2c_client *i2= c) static int es8389_i2c_probe(struct i2c_client *i2c_client) { struct es8389_private *es8389; - int ret; + int ret, i; =20 es8389 =3D devm_kzalloc(&i2c_client->dev, sizeof(*es8389), GFP_KERNEL); if (es8389 =3D=3D NULL) @@ -1191,6 +1175,22 @@ static int es8389_i2c_probe(struct i2c_client *i2c_c= lient) return dev_err_probe(&i2c_client->dev, PTR_ERR(es8389->regmap), "regmap_init() failed\n"); =20 + for (i =3D 0; i < ARRAY_SIZE(es8389_core_supplies); i++) + es8389->core_supply[i].supply =3D es8389_core_supplies[i]; + ret =3D devm_regulator_bulk_get(&i2c_client->dev, ARRAY_SIZE(es8389_core_= supplies), + es8389->core_supply); + if (ret) + return dev_err_probe(&i2c_client->dev, ret, + "Failed to request core supplies\n"); + + es8389->mclk =3D devm_clk_get_optional(&i2c_client->dev, "mclk"); + if (IS_ERR(es8389->mclk)) + return dev_err_probe(&i2c_client->dev, PTR_ERR(es8389->mclk), + "ES8389 is unable to get mclk\n"); + + if (!es8389->mclk) + dev_err(&i2c_client->dev, "%s, assuming static mclk\n", __func__); + ret =3D devm_snd_soc_register_component(&i2c_client->dev, &soc_codec_dev_es8389, &es8389_dai, --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011006.outbound.protection.outlook.com [52.101.70.6]) (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 8626944A40E; Wed, 23 Sep 2026 06:15:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144136; cv=fail; b=UrdkBybMEgL3sl22DfHZ0dF2/S7Vj9zvXF9MK0WxQHD5YcvfSfJSf30NP3nm8Y2ftbRTy/bdTQjy1zxp43zQhyufiLXMI4INZt0lr7bJUtk/3wqBF0dL7ycztdWLcioZ2Jz2LjdMPp3klts2iFgJgfE1EcKSxyCKJkl0+fhOgSM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144136; c=relaxed/simple; bh=9H774+t1Uub5k3GA1r42SOUm9CVtXbuC1L/ntqg2d00=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=DHQjdg3uSxz6czWEf879EiPAgPsDVYCMr9dDgVLL6iwnW//eroNn73PTbpcsN7vXmEg6Y9cFnGh/WCCm+Mh3bGnF3gIRgOOUV+n5KvbmCzse9Z8TCUZGGP4NfSUUsDDHDPl24omYXN05S04wbPIaXKjT45Ntftg16OsNYPbplAE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=xpOL/YeZ; arc=fail smtp.client-ip=52.101.70.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="xpOL/YeZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=K0osfySTm625sE3lUrUyeVd7B80gWztw/RX+qBvED25TK+/lMxVoGVsskxrYwjg2Z09vFDSxzcEOxffyYJuSPtPVT7kj/K+LKYgDtkAWJ6NW42aOjsamOD4LwZbXIkxOAYwCYChSR8E4WC9vlS7H1WYUFunOqrrBOkWEqPoSlSiiZkZX+peOtHjmZVLJfHPLJ7bxst8z3rS5s7ByHHmx1QOShZdLSgYcoWeHD77Hjpfa2VnVbhChZo9cOTZYr1kTXcxNoZLftb0aNk9+Ibit4TqnFLLgcekcjp0les/xEik4pTaDc1kSRgQ8irWk0WKZZ98VqutJTuggPXeSRnDrng== 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=UE5dyCfef6ONhryPkxCyPoKlQwpR2ejQdk/RxssJEvQ=; b=WZY7tdGqrizkHZMhmRaCLZSYHgc/NNLD00Bgwt8v6Cq52qx7UOjApdtZpOC/yxhF/teyC9OVDzALiEPx9RYG8+Ftd2itTzaESi+H4KeLV00JmpaIigRf8aBJpLEBCerN8a3ZHl7vUwuNfO8Zl/JE+ddLJqOKAFKu3noaXZnVIYBHF+0MtAgNqTnL1I0R1Ta33h+A8jaxPnE+ZzL1W+MmIZFlmwB9YG4oAMcaAsTjcYCuGxPblTtqOeAS/+HbvB2qAGfLmyufPoyiBx7IlYbAJJR95jFqyQE5c2K9/zOiE7o8CE3LdiFGsKl/vsd5bqlFwlh0/PztCNhCGZTlIeGg9w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UE5dyCfef6ONhryPkxCyPoKlQwpR2ejQdk/RxssJEvQ=; b=xpOL/YeZYgkj5Jpn7yic1T/vzmaiB1yDXR1qGQZlOY2i3kTymaXm03IA1c+nx2oMpk+xLIki6s66zHPushOxHMlPgu6LsXcBuKEDg9Vh/tPFBx0n143lvOI01LVFF7sr4fH5bEl2gbmeF+1vAnfmnAGrkpVXy/ejKRPV1HFlYqYNXeZf3gxGKGuKgi4R09dNSyKXAlQnU63sSAAykQYYkPykn9c5NSJpg38SyNv3Go0ZDMBOiyxDZoYKeqb8qzns44TokUQM8yAbz/x9j0s4j2hi+nt9/q5+t18EDKuw6qagqc+3uaYOSm6b4RN2v1oR+e8XjSbcfCwLfWzvvUi99w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:15:26 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:15:26 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 18/21] ASoC: codecs: rt5677-spi: Free the DSP context on component remove Date: Wed, 23 Sep 2026 15:13:02 +0900 Message-ID: <20260923061305.4041197-19-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SL2P216CA0096.KORP216.PROD.OUTLOOK.COM (2603:1096:101:3::11) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 92026272-ec55-4b9a-45aa-08df193a0f21 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: Bt/Xwbw5ytkHt2pre9f/JbIeOXbXcDIzeWuI3b6xXoQrvUU2/bo6Egw5zibSwWtpStpu/Cy5Vo2xPeJrp1WwWHWEJGjBxZ2DLYwO7SXzusdpwK8/SAT4l/1wtZzH3C9+ic7n0vS4XkRZbw5CWHRbgNiQQfk5rgS5ryUjUCcZc7GdgilFjcYtMgcHi8yP/BaQjWL0UxRzX1cYgFAtV9IGWjE/j8taitX3ifKMQ1B2Zg5Gb1d+O3flVIF0S+6ffx2c9Knon7Kaze44SedbQmqyFD/hg6jVn30kYVwsti/iiiIGJkqdkHxkzAf5yGeTruLHFzF+O6sHtlU9I1r1JBZjvZKET5D3XRDialDxV/LqmpXwcB34gK7tInx/9xJYHlTvqPqiZsFQR4qBhKd7pGBfGX2qW8nNjSYZwFgfaww8TMk7rfiTNtYcmurqImQEbo9S3Bc3LZOxFLVAR8iPWj9gQMSclZntb+sILvrjHAxUalYcjriPwa4PKOmAofX6K+9OUNjrVoXfJMQNCzR6sdxhMqvMrONyKDokihrlnNrGl12Agifb+EIzcSA35addZFX8gHtxtFoj4t/q0ekDit34oL1cTH5s7Y3uy/EIUIHOOoijQrhqQ4DHCbsxn1WU+UpZ0u3+7f4vEoAnjoKM9mRtO2FmeeWKv7xdauaV38geC98= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?23eM6HqOtJKSV3QyFq7kNSlfZnRcIzGuLPlgwtZmcE8WHBocjabfcC40+C8i?= =?us-ascii?Q?1rrh/07P03h48MqsIXlAg/cL3HMjUhZaF59ZdtC9FJUZM65uMlb6A5mExnSo?= =?us-ascii?Q?HK3DviUsKULfQ0pFKAcREg6tNuBy2Yo7E61jWw8K9mbB/zeHFq67LSwkdZii?= =?us-ascii?Q?kjnzcJSyQJU/84xXBW9eypdcw/nFvpxbX1vtKzKU9zc+vYL2plO3o6eLJM4n?= =?us-ascii?Q?/k9sHw8RIzth0n0xMwosa/XoYN0EpAd1PJxfXuzoGWTiCWVIaSIFoZFwKNra?= =?us-ascii?Q?pxS6Z1Hj5jLyxUcYP/D0YW35eNWQ0t7RDOR0r0yBjiE5He5USZMMhfYtmurg?= =?us-ascii?Q?QQhdKOA9FuJkVwpLIEede5lnjehNZiP2RVCRvMDcesA0SF6rmH4uYxJHeXVU?= =?us-ascii?Q?+OoDlUekVSqHdmLZwQ2DOZPia945mVQSvDuQyGDGJHE8oQCV4GjiL3HsQB7w?= =?us-ascii?Q?ykIyZ/LRQM6PjpUsUDrePs6dLjbDYsgfubazUw65JYbWSD07qrMSu+uV83uu?= =?us-ascii?Q?E1+ULLD8BrrZ77NvEDOlU/GewtOFd0jWoNYkGaSlcDvMCfYoTO4wySlylHRq?= =?us-ascii?Q?VCe62is5X4l76lOf30NLAxox42golj3FxoOM9yveEOQ6pIkdAVBTsMw7dsIP?= =?us-ascii?Q?fOa3aDcMgz0s/p5HRFc/MCLJgv19r7caJfKV8eXfcI6TgCCP1k1aDH9TUQts?= =?us-ascii?Q?HbDLIXD9KprFoF54g5hn8nQatWwBbpmvZ0wu4jSzHi82WDN/xx/7PzTUbzx1?= =?us-ascii?Q?EnTPOpw5SuspTgqK3J/TdGu5kvM2/FHfYj4ad3jgoEyUdyb57RU+vGr8OcE+?= =?us-ascii?Q?/E68xrGJt0Dvr37DRQQXCm6Or7qLP59H2EeLk2yi015dEneTfEqD59a8x5em?= =?us-ascii?Q?pSJb/sRV4BzDyIlg5OhuieqQNA2rbTYwMmpkKNdsEBL/PhhG8w/yodW0pHH4?= =?us-ascii?Q?2WON6oDjlGa6geor6lgXEyC5JjWUdW1gVSTZRomwej7G5HedMGcNjFqPVa1O?= =?us-ascii?Q?noqWPw0N01YmGXKu2VyUiaYzCqq639S0XPRsAcDypZPZ1xgTO7CNvyGnP6wz?= =?us-ascii?Q?ug0ZihTswKUaW2s02iULSv9HnzUbHzsNPytP8bMAq01LEBnNGTIiNnHioa0S?= =?us-ascii?Q?ZerUZGLlMig0h5Z+MxdQNOTZbsVdK5GDXki/chXda4pMn4D2Q7LqWdLPhzkM?= =?us-ascii?Q?dfgf8DdCTeokVoxR4+VF5M2xKk9VRq9fK/lK0q6V1OPeurOARkTwsVsrHLbq?= =?us-ascii?Q?S/OJ/1KmokqdGMstSCfupvEl1cLvPt/DoyhGahPfmBFRXmZTCMmE0kJ9mF2R?= =?us-ascii?Q?8fU8Mp5oOlx04PniGBi3TKY3FxO0O3Z8hn3zLFArL4uLKcNkhDFxqA3vVX9V?= =?us-ascii?Q?qpv90h1R2FutQ8IYImUesjA/S7UPXiBn8McLVOR8klUX1XmWarPi+LSnBQvs?= =?us-ascii?Q?ijM60hef8q2dkTSxDoOv8acmIaSdHpsPp1gkbuOK9oHbJgEiPSS2LD+mmvDR?= =?us-ascii?Q?pg8Tdll0w2Obci8EDWwneGA1xuvzmUxVHib6Qz65TZtuwXGeI1dEh0Ut0mxd?= =?us-ascii?Q?9FrtWB8/dtqyvvCSjWfOL4zHpLnywTTMkYhOQqrIFacLXMprgiPntolVgAJC?= =?us-ascii?Q?MN8bmTmSbgEpkpElhZUZTkvDQoDklwcK2CBc0rdBvm85i1eJFB/i7JogHXgJ?= =?us-ascii?Q?dIsSynyYOSd5XvYTjjVqjBjilb5gtjabZH58Hodm8E5Vj9TpdQ1EYVg5pAJa?= =?us-ascii?Q?OKZbJEedk7P+HQAQgDERT0CaQ9tDvQAzPBMB1g+PoF4lYErEhJh9?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 92026272-ec55-4b9a-45aa-08df193a0f21 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:15:26.6770 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: t8tGvT0a+cjsxrA+j/AoGkymMHxU8PzURNl34RhoSgWDuewGUqtF8OHqRKZxWr6JQgjlJ/X4+DBexvSdv6vvsoXgVKEPPqglLfkKvTMSE7EHfOfeSRLHozSNcJVqVr4H X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying SPI bus device, whose devres lifetime follows the physical devices probe/remove rather than the ASoC cards bind/unbind. The rt5677_dsp context allocated in the component probe with devm_kzalloc(component->dev, ...) therefore leaks on every card bind/unbind cycle, and the delayed work initialised there is never cancelled on unbind. Allocate the context with kzalloc() and add a component .remove callback that cancels the copy work, destroys the mutex and frees the context. The exported rt5677_spi_hotword_detected(), called from the rt5677 codec interrupt path, fetches the context via dev_get_drvdata(&g_spi->dev) and dereferences it. Freeing the context on remove would let that callback run concurrently and touch freed memory. Add a dsp_lock that serializes the fetch/use in rt5677_spi_hotword_detected() against clearing the drvdata in the remove callback, so once remove has cleared the pointer the callback either observes NULL and bails out or has already finished. Signed-off-by: Chancel Liu --- sound/soc/codecs/rt5677-spi.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/rt5677-spi.c b/sound/soc/codecs/rt5677-spi.c index ebc527115ea5..0b2166082437 100644 --- a/sound/soc/codecs/rt5677-spi.c +++ b/sound/soc/codecs/rt5677-spi.c @@ -58,6 +58,8 @@ =20 static struct spi_device *g_spi; static DEFINE_MUTEX(spi_mutex); +/* Serializes access to the DSP context against the exported hotword callb= ack */ +static DEFINE_MUTEX(dsp_lock); =20 struct rt5677_dsp { struct device *dev; @@ -380,8 +382,7 @@ static int rt5677_spi_pcm_probe(struct snd_soc_componen= t *component) { struct rt5677_dsp *rt5677_dsp; =20 - rt5677_dsp =3D devm_kzalloc(component->dev, sizeof(*rt5677_dsp), - GFP_KERNEL); + rt5677_dsp =3D kzalloc_obj(*rt5677_dsp); if (!rt5677_dsp) return -ENOMEM; rt5677_dsp->dev =3D &g_spi->dev; @@ -392,9 +393,23 @@ static int rt5677_spi_pcm_probe(struct snd_soc_compone= nt *component) return 0; } =20 +static void rt5677_spi_pcm_remove(struct snd_soc_component *component) +{ + struct rt5677_dsp *rt5677_dsp =3D + snd_soc_component_get_drvdata(component); + + scoped_guard(mutex, &dsp_lock) + snd_soc_component_set_drvdata(component, NULL); + + cancel_delayed_work_sync(&rt5677_dsp->copy_work); + mutex_destroy(&rt5677_dsp->dma_lock); + kfree(rt5677_dsp); +} + static const struct snd_soc_component_driver rt5677_spi_dai_component =3D { .name =3D DRV_NAME, .probe =3D rt5677_spi_pcm_probe, + .remove =3D rt5677_spi_pcm_remove, .open =3D rt5677_spi_pcm_open, .close =3D rt5677_spi_pcm_close, .hw_params =3D rt5677_spi_hw_params, @@ -579,6 +594,8 @@ void rt5677_spi_hotword_detected(void) if (!g_spi) return; =20 + guard(mutex)(&dsp_lock); + rt5677_dsp =3D dev_get_drvdata(&g_spi->dev); if (!rt5677_dsp) { dev_err(&g_spi->dev, "Can't get rt5677_dsp\n"); --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011006.outbound.protection.outlook.com [52.101.70.6]) (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 EFE9A3E559B; Wed, 23 Sep 2026 06:15:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144145; cv=fail; b=bdJd6hk2tVUlm9TWQPlYGQVlyVCqoZ+Kh8t2rNg1seu5GKrU7q8dzwYBVSmH5zCeLsP1ZwI2z8OsX1d9WH6K3FeuSxG6RvQYSEzhGi6rxamsLUcXkzDN7Khzvnh5RiVjduoIu6jknTwOlQJKQh1tofQajR03ZJMs3H+Evzf2d8g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144145; c=relaxed/simple; bh=ZlgmRKe+3W39m05Q5PIm71LY5brgRujlkiKZtd4imio=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=GSRqUnSH1O0kMXjBoArnqOIqf2qT7VFVoItBnMjiPl+E3JZLCjSEtUb5yya1yErhRbFpobxL6W9SZEIGe36D9iXSfA7mlHAdIcYPSWoI8aaVme47tET34lzzOoa3Z327YqW37b3ODEGt13XnQ1nbBrD7v1YUi3inAqJbt77hYeE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=XfZzrlBP; arc=fail smtp.client-ip=52.101.70.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="XfZzrlBP" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UEBrcRedxTxfcacnRbDTFZH4U/NaedZq585RzTIDnp3zl7sfB/ociZ1R5sm8p+sAnVrGD1BL6hI2FHNH1fXE6SNEILmNgtBCDaSiYbVStFdGGO7E3JZvFPt+qj6P968w0Kdt/YXlZ+3HuvylKNLk0BlNsNc1rk+PAh85DJg1xOqKp4dJW09vlGSCqziOYjBP7O/w7TWvdqFTk5nrXun76vOj9MACLoKPvliCcjCv5kdDyMAj/8k0MWGIqknyjvoGJzwpWUW+JsApuUYsL7IN1VwpWdZ7TvkY3uLYtApE9zospHS7wxaMWppPe2wcgyoI0h7GSOJVFVRwNtbkDeYpjA== 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=WJYBDOLVnzUjPONlXIHXH7lw9hUQK7r3BWfpstH+XE4=; b=GBU1i44iz7yW2KJ8D8FsLgoFa19GOstcRUkEmyI9wKmw5EX7HALjb/JZJRNahpehqZU1QXUUceLn1dlMcPkm3998BXKvRwuMaw6sYRA9Oth7rNzK7BavlXXosTHMnsw3kjFmC4rOaWRYvQJAj4F0pcSBvJs0By+8GjBvDAkOr+hcWas5ucOuO4vvaxtxIe4aWspJ5sFdNzJbQKjhSZKJ1Vwgc3VCMeu7NC32Lq5FqEXDEG9iVBJQhK+pw83sJC+/3O5srqhqdyrcfsZ2yjdIKoyM5/k73P8MllzOWzu7jZcaYr8MCFzSOTa3ZIgAbmw1oxqM1R11KsP/uLB5mGXY/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WJYBDOLVnzUjPONlXIHXH7lw9hUQK7r3BWfpstH+XE4=; b=XfZzrlBP1923nAQFDsAD/TxzzII8vfoShCoabfZDC+VMSM6NmrQqEGkLPehIYM4UOJKHbAmApfhBdeLvNgoRoTJ+NcO6tx+ePZi5Abnc3oYK9lUlURkWFedQPyyJKQamWPdEFty0oLEPhNutDC03QC8hzFO2B/xYrVyTepSAAOyX6cRIt607GxE1oT3S+6UEIYhIXMgMal3ajtZcT839/7Vb2ETQnkuZoR/szoA/CF6PG0HN8OtqSwxvE7aQjz9tr2Jl/wpkJUBPZZnJ50Ws9mal6UmA4H1uqgSpte7XQJpGmcUGSc40eI2MWA9SvCXikeQKB9tLVANZZTYSYfLKjQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:15:35 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:15:34 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 19/21] ASoC: codecs: rt1011: Free the bq/drc coefficient arrays on component remove Date: Wed, 23 Sep 2026 15:13:03 +0900 Message-ID: <20260923061305.4041197-20-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0058.KORP216.PROD.OUTLOOK.COM (2603:1096:101:115::15) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: d60acfa0-5c4d-4c9c-e203-08df193a13eb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: nzBDrGwZ2SdCT/Q6/ctq6lWt1RKrC76ai1ocZ6GckyMY9AxoK+D/qnEL11AUcJkx3gJi8teaSP1co2X+0IzOuz56lIsTFh7tb3uqzEsA8Kh83JJKZdTsiidoiGcwDcOb+Hgz6U7YJdDVeEgiXHksnc3vAkgXHAssLMvH7McZcM9IQUZwG6v+dV9eye3/zVUD0i0dcBekyRAItKnvBafbxSX70RvKGVU0KaJ/Crga7F0QOuLJvUKg1c29zlxW/qdcukFmqd0y3ug8ekWYHx01b6onGELfyvaoIDzAgVWPh3tUqe+izWuIg1F2KTrHnqfdCHlLnqEQ1B9cZ7kBpZiB6Hnct7Sn+DfhHAriPHyVbhbVQVDjhUOJh4qDxXzR8s72A8cCU1ICndO4uz7gJ4CvyIBahLPeYVUAEvWDPpSRE7MleFKVFQsWTFIksopb3FMhSQ1XbQv0QYF8rNL4H5+H5YDIusmCYJ+Psq5DzLvcbGTn/szFTY+8Yo3GrAaQDt2derYpO9bL4DLipBFbdveQ4IcEfZLvbdA5yjODcPkVbL9kz0NZcLnQfgfnRWxNt2R8f+QhHP4uhU+3HJTcK5aCio99ItcBL/fOxvjvt9JvlZn6d5HFj1OwVVxHXvOb6cc2o1gbqrR0H6JCfLPN5SZNarfl4gD6C/EAbuCmokXCQi8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PxCFT689NjtqSzHwbpp8JMAV6XW1/NpSeUXopu3O99D2bwr/m/uy9qPMN5OV?= =?us-ascii?Q?ODsUMXm1aRGTJmjBYov/+9G2aW7yoqPYAtAMGuqYTTwePL9dBUi+9ZUYfz3k?= =?us-ascii?Q?PAlTYNSoZdoV9tpAkENObuj55EYyFvcpj9Azg3ll/NpTY4JsfDpGCuEuTAtH?= =?us-ascii?Q?kLw5nmE5sFZGolNZyg7ZsX8xOV0aJyt+Xhk+dSnyztkKNH+p87LO/pR5zoJW?= =?us-ascii?Q?d+ArOimLCk02Q65Gb9U7GvHiXSkDH9srQP/whO+o6pn0lJWQOpmpg3Mb9cTP?= =?us-ascii?Q?aJveNjE2TxRZIorKJX6WEwndLJ2whR4pVmPs6YgG7Y2aWUwzR2oleg/kmubN?= =?us-ascii?Q?7z3BlurgRPYBQL88OnTcdDlF7MiLlQXJUQTZnS5saskrwBeh3Yy1f7I7NXFX?= =?us-ascii?Q?1D5hQmsAme8C/t6Hl2SboWuG/UTKxwgweJzsRtuTa/djeklmXKWiAwux4z0g?= =?us-ascii?Q?Q1l0lHwm68A4djRBC78Aysp074Sbso0jaw3EKoogeeSv1PdDTfdewzb6IyG/?= =?us-ascii?Q?QzBtbmU+C8Z6ZXKkOtxPUo4QK02TI4DIXSOnUf1usSfzhgSvBEhToT85N7S8?= =?us-ascii?Q?vsyh29eJUJOcXx6uHfIWNsAwmTQNbG+KzRe33FUciqHYSOsskqkFwU8z9dyk?= =?us-ascii?Q?NQFtjtLWU0N+YGfkLKWqGGm0STv0xo0FN8yWI34xI1eR2hDh1slZESKJaqhu?= =?us-ascii?Q?F1bxq3nVSWNRbvu5Emp/OOptM/Eo3x1bO7/l4lFCeoDGWEboeuOZiX/RdTRk?= =?us-ascii?Q?GLTn1E1lxoVibwmbdmLARQ1++XqoDvJWOgG9hOLq+3u/11t9N/dwcsJNwhfR?= =?us-ascii?Q?IiZ73CljgH5ut9sipdZKCf/7Lh1sb8MQBjOYgO5jT1ydfcgdLTPlAIWIPWDk?= =?us-ascii?Q?VHiVBbiM0GgzWC31DlBrnwR6roFdXqeH2OGpY0E37ghl/Pq3e0K3qW+kJu/h?= =?us-ascii?Q?wg1u2qaXi0jgSDuXcYCFQH0dAHNUTMR/RHa9LYKc5gCsSXQA7ZeGhcVrZoGj?= =?us-ascii?Q?y0PB6W8yYteEiNaZxST/pV8y0EuD45N0kj4mpMvarHI6uJDR7ZPTcYj+fq8y?= =?us-ascii?Q?6HX/SMV8iem7MGX4DnJGD73XuGzXYcIt/QmMbYy5gkmh+iTLUJYwleAayQLX?= =?us-ascii?Q?ayr8GePjmO+YcfgNBivqRQ60rrdC3Kk+xT3thqTPQgQyAFnbfZROSLfM28pW?= =?us-ascii?Q?KNBfU9zwF7yy8El8U3nX+1W7h7/EgBOrbBHUwxC9IsLuzeFo60fAXvukRp6X?= =?us-ascii?Q?rxylNRoxmPb1Zwsoc6eA6xYRYvZUM/dGIc29lJtT2fcSs0Wk3vPLizGO9ISr?= =?us-ascii?Q?SYARhyOASUvjjdpu7Ay4DGRYxKV5FnMkG+8GZXHDzg3O6wBGKpQHMuKL3r2M?= =?us-ascii?Q?Kiv93Sbv1eyc+1qLip8gP4OrUx3cOZKrOzIeHbesWtjEW80Qeko+RZNNKKQz?= =?us-ascii?Q?xDTbHUYsFacvZv3gW97+1GAUGrm/iLTx5jUQd23+F6ujcIJE+a66UCOC0FgR?= =?us-ascii?Q?hy0yYJt0KLUolpNB+v9B3Podz1cZSmUBZ81GO7+NwcjlGnVt+2HwiLegr1iK?= =?us-ascii?Q?XdCPeowSv758nq7H0jhplniGNa7I9jKLl3HbE4E4yi84hFikyfa/8WAM3qNJ?= =?us-ascii?Q?fIbzxJbToHebS6nOMKELBENNfyxaixKa1OmJS+fuDm6UjPDH6ulEpG1WGrkT?= =?us-ascii?Q?VNqDl0RdEciv0WzaSE+s3D83frX6o9TS4/uxZkdo1wiwno+eWe3JoOGpE/MG?= =?us-ascii?Q?RV41Da/cy39Yt92Oq1OBOieszUjf4uF88/D2I8PaoBP3lEE/ENvz?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d60acfa0-5c4d-4c9c-e203-08df193a13eb X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:15:34.6627 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xjxXlD20dzN2b5kkHLBQRKnJHpP7LkOshSJuxbK/sXFoXP8BU71bjKDLTMS7easQ6o6Fi4Jal45lTPkBTh428g9rvboXj/LWAwJBq34DuHqO2nHnc+sEqd7myjFSxiS5 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying i2c device whose devres is only released on physical device removal, not on ASoC card unbind. The bq_drc_params arrays allocated in the component probe with devm_kcalloc(component->dev, ...) therefore leak on every card bind/unbind cycle. Allocate the arrays with kcalloc() and free them in the component remove callback. Signed-off-by: Chancel Liu --- sound/soc/codecs/rt1011.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/sound/soc/codecs/rt1011.c b/sound/soc/codecs/rt1011.c index d47b0370dd6b..c140c079838d 100644 --- a/sound/soc/codecs/rt1011.c +++ b/sound/soc/codecs/rt1011.c @@ -2053,29 +2053,45 @@ static int rt1011_probe(struct snd_soc_component *c= omponent) schedule_work(&rt1011->cali_work); =20 rt1011->i2s_ref =3D 0; - rt1011->bq_drc_params =3D devm_kcalloc(component->dev, - RT1011_ADVMODE_NUM, sizeof(struct rt1011_bq_drc_params *), - GFP_KERNEL); + rt1011->bq_drc_params =3D kcalloc(RT1011_ADVMODE_NUM, + sizeof(struct rt1011_bq_drc_params *), + GFP_KERNEL); if (!rt1011->bq_drc_params) return -ENOMEM; =20 for (i =3D 0; i < RT1011_ADVMODE_NUM; i++) { - rt1011->bq_drc_params[i] =3D devm_kcalloc(component->dev, - RT1011_BQ_DRC_NUM, sizeof(struct rt1011_bq_drc_params), - GFP_KERNEL); + rt1011->bq_drc_params[i] =3D kcalloc(RT1011_BQ_DRC_NUM, + sizeof(struct rt1011_bq_drc_params), + GFP_KERNEL); if (!rt1011->bq_drc_params[i]) - return -ENOMEM; + goto err; } =20 return 0; + +err: + while (i--) + kfree(rt1011->bq_drc_params[i]); + kfree(rt1011->bq_drc_params); + rt1011->bq_drc_params =3D NULL; + + return -ENOMEM; } =20 static void rt1011_remove(struct snd_soc_component *component) { struct rt1011_priv *rt1011 =3D snd_soc_component_get_drvdata(component); + int i; =20 cancel_work_sync(&rt1011->cali_work); rt1011_reset(rt1011->regmap); + + if (rt1011->bq_drc_params) { + for (i =3D 0; i < RT1011_ADVMODE_NUM; i++) + kfree(rt1011->bq_drc_params[i]); + kfree(rt1011->bq_drc_params); + rt1011->bq_drc_params =3D NULL; + } } =20 #ifdef CONFIG_PM --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011006.outbound.protection.outlook.com [52.101.70.6]) (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 1825F443C13; Wed, 23 Sep 2026 06:15:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144152; cv=fail; b=jEsSb1GfCbfZ/vj1oE0VLRbIoMYua/D2/A/cmmLt79y1yFtZFUpWYAkUPVwBvlfly1gDF57IWdDP3g0iLazLhFaQhRu75NZYbMTMFaBpfxd2W+qMJAdMmJVq4CkiWLEHmhX1zZ7eNIIGH3+zQvWAWkNyl4Sijwxat9XQ72WLdTM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144152; c=relaxed/simple; bh=JPVk6OLPGnYLMjpzmUaSjmgmFcxuzMD6fYGhiLfXprk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=o95xhcl1lEiDwf/V23TVUd50J5km9A/sor0i0AtZPgvkCtyKB2Kk/NOqKHeJ11kxZF1Y1aNoV7b8HmjKej+Lfcg/iQe31sITM1hFZgh+WgtRzd4ADCDXdswAkpb3+MKMigx54fG0oZPL+AjUMCepHvewTS5tC8vRgLUbSJHa8mE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=SbBvcMBF; arc=fail smtp.client-ip=52.101.70.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="SbBvcMBF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZhMxeaffiLRG2r+nik3xtXcy2Yef63t0m7WXfCR99y9wDcAKU1n4C+Q0L5eLy/BcI7PNvru4baLnwrUk0mysFL4mTqQS0ZkAGeiRTodKYfBzPOi3FZ07Oe5al6P1tvcdQ0ZBVqgJ0OrZOZTB1GIhTd4eRASF3nG4VdVMnG7ck2WnIEVg4llidYcaiSvxguonkv8Y0uL6f+9QBTkuwYyfSEyQAsEdVWk8xuRLYYgtuVxU3BP4O19XPmbiqjql7+s4vp86PQdddO7cSwcOSOg0fuqaW3oVBt1CYrcGuu/JLPiPYdr85IGE4jrVAKKmtmkARp4YhKqKNVR7UzaNDSfCSQ== 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=5BxFdUUGYT95PcNgVSXEA0hpu8k8F0qaF05f3olGLh8=; b=hmEFE0nxti0bKTKOmEW6qB30UAca7Cqqg+yEp3ArD0s8waPIvdsSS8vx4pH3asfo5lcTCRYhdCGazYWiCzu3VByni+atE8YH5mFT6lakxZeFl/0MqLUBa5KXnVVyXw4WfIad2o+wCfiFINC0EgGsU06QjXe8LSdYoeSRtBdLeskP0BHAbswE+ghvA0xGJMyw68UBSpbxR1930w3v2dXnAfzXZHstVKXZjSdnQrI1VdGOIvWw0Wp7wM5cizX7w4sJ9yZNyfzkIm5bq0ebns0Oiq/10WXBeDm4zfABX7xISDztqC1tAiCMueSCc9h/KLKPDeTDA2s0r2rJpJBjMMWITw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5BxFdUUGYT95PcNgVSXEA0hpu8k8F0qaF05f3olGLh8=; b=SbBvcMBF5tB07JXihUrGIzoS5UNieud5JhgDCMwwjhwnLlWPMWYDGmT7HAXVWEx8UfgDsE+feQOYh9usI7FNTfI+kYpH3l2JiK36iiLLOGawzOuB9vrD/jLwQTU/E10GkdDR0zRoxk6ENX5WKuAnGr6PSkvEe1Istpn/nX9YU0bBk+Pyc8WkrK+7/lykSgEImEMcMQup8LGDHi40G57xF2SaFLVGnyfMICqQ+A+0AX/aZLszXXdyXj9Qm9TFxRpOnMcwwdtrA4UjDSt75PQMg1GNgN7n2W4Z8ihYcF6Kgrrvc0WLdliK/iKJ5MFfGY6RbwY2zeuSxtwELQgdMaLC2g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:15:43 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:15:42 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 20/21] ASoC: codecs: rt5645: Free the hardware EQ parameters on component remove Date: Wed, 23 Sep 2026 15:13:04 +0900 Message-ID: <20260923061305.4041197-21-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SE2P216CA0049.KORP216.PROD.OUTLOOK.COM (2603:1096:101:115::20) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e04cc62-3396-4c2a-ced4-08df193a186a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: URhPXN3XwaF+bdT6s+xeGGRyFtrBxWr6LgUPl3yTWqY+fg4FfoU7y6vYwZDz8BremHSwnJX4AAwnpBj3UM9tfehcZJF6KHT/hopDKFTDFiOKiJCBDG1M9C/a030iDX7d5oiiFykaxf9rWip3j/Mc8tiKV85/8J+HacAHnxC6wkQz2Rid0H7MYctpWnEmlRqBqRVKGF6camcomMXSOk13HKawCWcNnRgUZU32H2VHefwDe7zICkSJa7OIkOJNvRqGaL+27tPe3hOAvI7Gxe0XE2k4/5e5/9odrwMRBW1qYjhTKw9KSt8ugf2QCal13W3Z+dqfGK1KL/DpqXLFiYKGvLwMHoCCEiOLNzLAht0z8vso7UmH8fa1LEZmiJWKrKn5M75eSQAs897xOOlhm8rpGtDhojqykVQQ+aSHX8oUUeDoyfuIS7ZpaBzlNsJP3MkcDMnL7+0tMsL1joVnQsPcTn2FrWN2D+TGSVEB3BkqVD3k9SgffMPzFH0ErSyMhsfZJORI6y/aXFNqZR363uhQOSPsPoRJf1g6EmBS4QukgiXlJ6PBV6N76aHk1+4BkMiWPG7bXt3vx2/DQzTqIk6uibvBIIyWslGLqAAJWAAxT/CzjS7KcNzAHI8AufoXEBB3+1KwYL4tGq/kGBJvJDM6sGq/FdAhO0mS9foVNfrQTXM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ujTRvBVledfCXMYf5o76TeTtuBJJMLOdUpe5djyFkN2+Cw2gj0aPcQzsDHJQ?= =?us-ascii?Q?gJAiLrTOGTsMt2ENRsq7KfWoRzAfrlb7xyxZnr0p9G1g0isUhCMytk83YICg?= =?us-ascii?Q?0BHI1PBufCNirMwrpG+CWt5DxG+aEWSebUULlxxoFk5ehqM9kEzYq/2ie3uf?= =?us-ascii?Q?lWmP10MdOVuVT6S/NqxdePGGAbRNPki+fgWTFlBjR2Y6ttAAGXsXBNM0alkH?= =?us-ascii?Q?l0g2flzjW7q5OCEWks1jfqWIb+9+KflH8VvqiOIkFHktXE9hL9y1zHydlJEX?= =?us-ascii?Q?ttT5l4yV6wPDBMKBsMP2LeNH0QtV9nLBAgxbKrlf0hqYyIuCXY/1JZP7J2bq?= =?us-ascii?Q?iuNbBMtFx1qpMw+06vYVYRBtoXzko7JIyGpT1RmSKklsCOuS+iGKebpn/dSH?= =?us-ascii?Q?SZplqD7NVSXhZoZ6GtJCjeGkqQkyk5mmMDi6GewJqhuOhmPEl7szWZIZ2rkQ?= =?us-ascii?Q?S9bouJ2NJjG3tDcqyjsc8r3xG0ZQfWCz509vtK1scJ1cC+8Eeyaxhf5OfMFe?= =?us-ascii?Q?tHB8xUYeK/HgmfbLVLKEaMoxw2K0NffnEflfDVEF1qyVmVf4LpFZpjT1gnjW?= =?us-ascii?Q?5RQIlx7HPSMjnLggqUC4CrKW6QSms+2jxnBfVibdT/BejBwR3MBu3aK3nrLH?= =?us-ascii?Q?lMILtz9KXeNWx0u1VBVrmIhkevulB8qXbgwCdVfNhcrkoST5zSJmXzgurDvB?= =?us-ascii?Q?DKTiOe6jt3tpdarewwR+Rtn8yCuL4xOunQp61LJyW5Eg+w3NT0l/eHiEPJkA?= =?us-ascii?Q?7lFzuDH5r31mqRxrNvTGt8Rx7R10LxnimbF+g4rGOPUi/aSJ7Nz3oGp6W/4K?= =?us-ascii?Q?AjjGuitVG5RopCzMNqKrCU4/yVU9GCG3M477DLZR0rdY9iep9qf1WtkUTJQB?= =?us-ascii?Q?4SlTmtorcmJmATm4SftWdanOVUh1ezv5IT6BSyrQKD6/7KCAGW6EkCiVN6Sr?= =?us-ascii?Q?t0Hyh04mvoqaIwZYMZE4LxU/QSnb/Xatzi+9CxeU/HPziatt6FYBngCWylFM?= =?us-ascii?Q?CkYQou0CmSeOrcZ4nHePHOqVHa3sQNFXLVBp5YZQEy576qzPYaeVmq+1GCf/?= =?us-ascii?Q?Sc8TpyJK9f1gxSAmX2Yma2zM7+An4j8Cm7PpMqGl0h4XyAlf2cCUFjBDcPgl?= =?us-ascii?Q?gw1p6yJ7CHp9GYHaBtDFDmJQb7CvsxMe462vAL/DjpqC+psaJv4jvQ8BIDmj?= =?us-ascii?Q?N5OgKpYrqyaongJMvKs/aJsEng1kdiaWp3fjss5Xxe9Gkwz0AQ5RuUarC3qO?= =?us-ascii?Q?7kWLBs851K+Pjq+KhSVSV2ck2SDm//fAl3orPsOkOy8GPpBQCWpyfWxvHWW8?= =?us-ascii?Q?8MZoByQoSYraDsG2yv2LasMgsx/tGGvSamiCttdAdd1imDwP5vQTtIjwHh6m?= =?us-ascii?Q?PMidEMvgJT2dHZ5WVQu+mjkHIzcATww2HYPCqKA1W9bZbUUbKgtXE6D+hYHk?= =?us-ascii?Q?kPXstXidMyn5qHU/J05gQFMtkPP5IWNajVSThVcdcvuT/ll5v5saxisSqDwx?= =?us-ascii?Q?mhUffIG/SJGItcEUoE/2Vk+wwUkRXmcBfNgZaiqgMNATr8hrO3s5KqHxAcRx?= =?us-ascii?Q?t+WYuWkoFwKaeu5X0afyyG5cRTWoJ4jwAsxjGRYKScSe1P+MHBYuF3gWPCkV?= =?us-ascii?Q?OSTij4Qs+ECTWzV43OPKBkj6k0aiL2jJAiigxyespLFvqGShBCaUKXKoDB2c?= =?us-ascii?Q?6bWXbB3uwdsFEYaAW1dDrtOSiEvtxI68AFwcRtVxSGUh2Eb/NCVla6LvzIxm?= =?us-ascii?Q?KNgmlWJ9+nVIcyzJh2kALUnuIkwXP0VbvhtDV6W9VmSxPg1AxbgW?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e04cc62-3396-4c2a-ced4-08df193a186a X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:15:42.2443 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UrcBS9CrCNCrvVeAqcwJ0fNHESqwJ2XI9RFAdDZ0Dqk/1EFSJu29Lz/EzYwYcHaDzj9Fx+DBue0e8P4mfHsruR4lMTsQbmB4UydvwCRHqkdOX8GVQs6QwpPHmTSHWLOw X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying I2C bus device, whose devres lifetime follows the physical device's probe/remove rather than the ASoC card's bind/unbind. The eq_param array was allocated in rt5645_probe() via devm_kcalloc(component->dev, ...) but never released on component remove, so it leaked one allocation on every card bind/unbind cycle. Allocate eq_param with plain kcalloc() in rt5645_probe() and free it explicitly in rt5645_remove() to keep its lifetime tied to the component. Signed-off-by: Chancel Liu --- sound/soc/codecs/rt5645.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c index bb448254275f..15d21097ed0c 100644 --- a/sound/soc/codecs/rt5645.c +++ b/sound/soc/codecs/rt5645.c @@ -3487,10 +3487,8 @@ static int rt5645_probe(struct snd_soc_component *co= mponent) if (rt5645->pdata.long_name) component->card->long_name =3D rt5645->pdata.long_name; =20 - rt5645->eq_param =3D devm_kcalloc(component->dev, - RT5645_HWEQ_NUM, sizeof(struct rt5645_eq_param_s), - GFP_KERNEL); - + rt5645->eq_param =3D kcalloc(RT5645_HWEQ_NUM, + sizeof(struct rt5645_eq_param_s), GFP_KERNEL); if (!rt5645->eq_param) return -ENOMEM; =20 @@ -3503,7 +3501,12 @@ static int rt5645_probe(struct snd_soc_component *co= mponent) =20 static void rt5645_remove(struct snd_soc_component *component) { + struct rt5645_priv *rt5645 =3D snd_soc_component_get_drvdata(component); + rt5645_reset(component); + + kfree(rt5645->eq_param); + rt5645->eq_param =3D NULL; } =20 #ifdef CONFIG_PM --=20 2.50.1 From nobody Thu Sep 24 13:41:52 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011006.outbound.protection.outlook.com [52.101.70.6]) (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 76D8944F548; Wed, 23 Sep 2026 06:15:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.6 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144158; cv=fail; b=P9SQI6yW1A9c/Gnx1nbk9pj1Th5q6reQsuNlRYGNJjdLXaZkutPVTGKdNTiEOLiIykk36pa+wfKLNTGWCpBykOAs3bYs5M1fQtZsCFqsVrhi4rQ8JGnX3QOqAjmI5Pl1oxWgxZJpWPruAzE+xUXyLVJbx2y/RuXXQHswodvL760= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790144158; c=relaxed/simple; bh=K2mkXQJZxIca1urFYEl0Gdtf9H1PwGa62QRGvqEv9zk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=kC0ZhE7o/CZQ8wDf9FzgexeZDebqxn5dBWNNuCZ6KrGt+Siw77h/+pz7Bo/VlnmJrLqhPRz+8q2dM2YMvauY15IYG7Whj//o97XmeGB7D3/x/OfcTVMAwbuX+q1tHN9HrFgvuNWqiSBvaNPq8UQpIqw9bh+G4v/e5cp2+ybk+h0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=RxPEaSu7; arc=fail smtp.client-ip=52.101.70.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="RxPEaSu7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rwMt0d8nJ0/XVFOSUEtM8lZN2xSqVA/SQHG+lfIC9va/RbMcF3FkU5sE4w3PgwfF+3RdbE6DLZYpnzayd7BXXMzIiBWhmZ5jiRE6oAbtrHma3ZrLvEJ6IjYkp0x0x6Dwx3fMEgPBBGt/uQixfHlyQjJysb1DtRAJqJE2ngeFGbHOtNTFm35qL9btriMwOikU51LCmJ0y14bIlG7f0XsvA3tZsmDMiZ1xd3lpPxUbuOgVNQW+Y2L7oXLIj5tTnNxQr88lJ/0QaxsxO0QuRHpTWkU8vWGQ/VtFpHtx+83CYNFhqJfJWz/1pY10aeuuz5/lMzGD+QRfgm79x7RwI/EuIg== 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=buSu9JsCWFIzKvQseCcX30I0P+VbYIoY2XORuV1Dj1w=; b=MMuGSP8FTWJNoc+WWjxKiyOIrZ4VpuCegSwniWGGpTXNM91Qg/J8nlfKzPSc9eCqg12t7ue5uh8tvrCc1IFnq4Z9kGPI27AnKEf7gVkWfgsCjexAOe0NHe8CbMcibpXq0Vg9qkte4AzIWBJ2d5+IvSXtRsbYH9aqcAa4uaLvYhFY8qWMu0xt4AO+Tya137SHRfR6GSbXr+12/tFwT4go0ue8u1f5sDbaVU/QFNV5/d1uRHoBEHaWsewwJeJtBKicw9DC0/FpAYXutZP4cL0wsne/tBEpB8UMkJ0b6wfEsqdlijEgAlsudwiAfnAnwabVp+aE9HQfZPUBuCudJNcH/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=buSu9JsCWFIzKvQseCcX30I0P+VbYIoY2XORuV1Dj1w=; b=RxPEaSu7QmDRUCD5Cuj2qnQUjR6Cw3AWSeMuFZSQvYt24QsGGxXtdxC5/840Ev4DoWHfb2STEjtW4EhYu4q+GlLv91VY5KeibavmXJkrpcdFiJfsHVN/8jjSZ5zVyj7SmfZfgiZP8VfD9pHuraQRSNpxyy9b982ueoQKBTa3L0bwCmO1e1iK6+ENSvstWHm+T3Vtt6oNMDbHLrkO9RKHUwN+zLPLetjpgfMLzZXVYQXjcU+c3gyNlIUmpAUPl0GXsqSJ0SL7v+8yLWlkCOdm62exdmwFIWovZJWXsByNpFOOpwc+oghwb/0gkD9jUnjqzO2GCNY14g2MkVuRHnmLsA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) by AM9PR04MB8339.eurprd04.prod.outlook.com (2603:10a6:20b:3e6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Wed, 23 Sep 2026 06:15:50 +0000 Received: from GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994]) by GVXPR04MB10021.eurprd04.prod.outlook.com ([fe80::d247:853:3e16:1994%5]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 06:15:50 +0000 From: Chancel Liu To: Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Charles Keepax , Oder Chiou , Cezary Rojewski Cc: Support Opensource , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, patches@opensource.cirrus.com Subject: [PATCH v2 21/21] ASoC: codecs: rt5514-spi: Free the DSP context on component remove Date: Wed, 23 Sep 2026 15:13:05 +0900 Message-ID: <20260923061305.4041197-22-chancel.liu@oss.nxp.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> References: <20260923061305.4041197-1-chancel.liu@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SL2P216CA0202.KORP216.PROD.OUTLOOK.COM (2603:1096:101:19::17) To GVXPR04MB10021.eurprd04.prod.outlook.com (2603:10a6:150:112::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB10021:EE_|AM9PR04MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: 853cdebf-a06f-42c8-342e-08df193a1d40 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|19092799006|7416014|376014|10067099003|56012099006|11063799006|6133799003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: naqIhBpmkJZ4rU8Omqh/7dDCYLPal4PJ9sepgQz+jKJcB5ShrJqFftiAa3D1h4ol6YKe6/MLQ4FuB5JKOzs4r8itNMevvdV7V88i1qL3bFGpYmYgrqlPFZLmlVK17WxlwALOcuVk7JCnoXecPelq4M+Ew/gwvJNpCkLP7OtQhA2EF3VSOnBBHRHCbL1GuuYQxq7vIGQFuBWCUratupYT++bzSGdK1Q5AgWbLyPA9kF4FUPK8KfAZBTMMG4hMpuJipo9gcnQV9chfOpfyRE2ckw2OB3G7uBWHme4KQ5Jg5NkljjcGl4iVyqKGVQVQZHVk8uaHiLafj5j9tucd5pJ0wgbrPytMxVnsSCkBBNEVOE30Xy0eP3VUpHOnuW8UsXAxVNseLjaPUzZOZa4IVOArAOuS3vIivGrRfC/6QE3yVtNBarTv+5cG7GvCgaFrviiUhuhatgzZxfvn34o+dLauNZdnJzgb9G7NX8BU9r667g541KXNtJbMlzDuyeK3TjMpjle6GSeMZtgH8uLtwaMsyl5Hk1l6PrSHSqWYYcRF5y7BltA8sWs2yjQ2VESM7P001W3PqhaKWU6bZPpgWP1XgIKbxmCp2mclRjr65XeHnVwYHlf+jzbS7zcH9ky39jUp1lxgDqR1AXQ0uqZbJSKQgqWLkBOsmanv0HA7bP9SkB4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR04MB10021.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(19092799006)(7416014)(376014)(10067099003)(56012099006)(11063799006)(6133799003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WQSdooEPYWUJJSWG0jPvB7sxAbD4uZWHV1M1m1Xm1xR9cYzatDk9suT6uisk?= =?us-ascii?Q?ld7dOHJGy6kvAJJwE8gv71iokm+frGpsQtS4oqU8hK3hdQmsb7AJVyb1n+SU?= =?us-ascii?Q?fQqkWIM7syXkL9kq1UMP645KkSDnqRQu6igwrs1NQgtFDOvOjKkZEnDPaQlE?= =?us-ascii?Q?Dx7LyDjWnxbCl6NwIt0Ogdgb9/RCVQTgEnEWICV3F4o7ibe1jXWz8Sk12hrP?= =?us-ascii?Q?NifPLdnAmgLnOsLdDD/+MSaoPE5Wy2aGY/wZHPxf24wWF/OmSmCGZf66C1WM?= =?us-ascii?Q?ceA661IyY1tycdG2xrFrG23aAjJUpqEi5VBH/b3E0o4NAXf2Tj8aRw2i8B4p?= =?us-ascii?Q?X66w2aB1W7wHqjgaDTC4nZWoxO2HL4xuzXcihOOpgMq5hUiFYdg58UCPLUWl?= =?us-ascii?Q?9SjdtpyO3E41IMiZ6h8VCR+mrHfWJJMvA4+w7AAEp09SS2Ol+GZJFRCeBPHp?= =?us-ascii?Q?nt9OL5PKbPPn/2Ofa3eJgESiCsMHO9D2lE+o5GglNRxlXysPld6Kz4IDt4LJ?= =?us-ascii?Q?5C9BrMCSrEJaucbu7vCxDWgjpE/to7aY0VsjdjMyVvZ9fZVgydXxvU0T0tbS?= =?us-ascii?Q?aW1Lo8vDG893Fprhl322deVZivWCZYGm2SzM4SwpaJFkgA9Tw7pN5xyFZ5b7?= =?us-ascii?Q?Ut51GrRMzD3/68yExojt3Xu2K8lrVyf/cQU5l8xK5ewqryM//6SPQbSqDADX?= =?us-ascii?Q?EvOqPeFY1SPFAOvAYrDvk/AdfVwIqgOdMUBNugEPa+UBsnUZQ9sC1AYs5/UW?= =?us-ascii?Q?TlHMogMPYbt2tUsHdNmnswHIKJvbkLh3L0QglkFYqsc/yRNeKzatKcAzyFHa?= =?us-ascii?Q?q1Ul40TtWaafW774G1IYg8jE5s64jfro0HA3tkWUxQGgtoMsem7vOQoc7p6C?= =?us-ascii?Q?NWnNwCznEr0TK0PLKCxwfzZUpxWsBCq2XjOEBzUkyzxYesrVNLjXGF38UPhW?= =?us-ascii?Q?JoVv07q8qsjLmEh2mWegQoaGCCRPpfYz5endF5EhsJvPJ2ejjDHuNdGYffxa?= =?us-ascii?Q?h6/zD2t2mj5yLrF8dfuAYzxH82HD34RArbRVLYJhFRwqgWCRFJqys8+ObZdr?= =?us-ascii?Q?qnzbnZYoeBacU6AVsMKyma8qvtCD5p5LZig6+QMQQXRUMxsukdjFvyg1Q6js?= =?us-ascii?Q?r6irF4FHHWGRVarpUxWLF59lMlG1a6uuDMzHW0u1W50aVDHKAuARuHq32oOF?= =?us-ascii?Q?JBS8bAbxEL5wyYrVLGfjSZ2ZC9sb5Exnkp2c34N8t/CV23uIp40CXabNZtBV?= =?us-ascii?Q?xwn5XPMdP16A48Xgtr+ape22HYnwunXWID6BgKO8kWwEJ6mJMMdj8pBPP/Fi?= =?us-ascii?Q?4FiezHuW1BPiSXRYfP6FFR+f/suyj0boLnIyZO3bdo/7eBhAoL+c04fOzLrE?= =?us-ascii?Q?5UxaqsLDlvqWZjkRyhMrU9C7Y21Srs7WulKcZKq+q6zlrlXCiYn1BWL1zFG3?= =?us-ascii?Q?DYD8rMHkYfIkJ7VA/XvDKqxXFtOVF2HkDSN+Qwp5huTErfsUCvcEcVcxr7Bn?= =?us-ascii?Q?e2GVMYUOL9rBChA3vfvQzt/j7F1VYJRRB/GD7Ew/huVQLUFNvQVyNFcSWIIb?= =?us-ascii?Q?ufIk2AdwJiCMfyXsNdaX50EzCMvjThDWOpyvONGy/KYonbrp9vziteRfRFaK?= =?us-ascii?Q?SGQ+zAt/KpRP8RrT8WdQvRfEC50W1vKIAPv+C6kD2FKJRPNq2IHVlem92onY?= =?us-ascii?Q?8v4BwXcnaud8eK8edpNIJMszRh4SFj4N9lLnG8xsSGToKbGvDDveTkHUIF+S?= =?us-ascii?Q?glxBMQwW/qEDjUvA9GZG1/qgfWDKgW1L5/8T+h4rEUPXvWcwgIn6?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 853cdebf-a06f-42c8-342e-08df193a1d40 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB10021.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 06:15:50.0819 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: i+LUSxhwYeJCdgY7UCA2RuaBxPwPUFJwC9rMBUcXbrt0059zpa9L214vhrfo9cF8lMgcVUhb5fye3HkPRBZKYKb2aHE/YJy8XNe0VIidZDgtKZi+NfwpTjStrbT1G6yi X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8339 Content-Type: text/plain; charset="utf-8" From: Chancel Liu component->dev is the underlying SPI bus device, whose devres lifetime follows the physical device's probe/remove rather than the ASoC card's bind/unbind. The rt5514_dsp context was allocated in rt5514_spi_pcm_probe() via devm_kzalloc(component->dev, ...) and its delayed work and wakeup source were never torn down on component remove, so the context leaked and the pending copy work / wakeup source were left dangling on every card bind/unbind cycle. Allocate the context with plain kzalloc() and add a component .remove callback that cancels the copy work, undoes device_init_wakeup(), destroys the mutex and frees the context. Signed-off-by: Chancel Liu --- sound/soc/codecs/rt5514-spi.c | 37 +++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/sound/soc/codecs/rt5514-spi.c b/sound/soc/codecs/rt5514-spi.c index 91290bfe8daa..bcc2ff28b125 100644 --- a/sound/soc/codecs/rt5514-spi.c +++ b/sound/soc/codecs/rt5514-spi.c @@ -43,6 +43,7 @@ struct rt5514_dsp { struct snd_pcm_substream *substream; unsigned int buf_base, buf_limit, buf_rp; size_t buf_size, get_size, dma_offset; + int irq; }; =20 static const struct snd_pcm_hardware rt5514_spi_pcm_hardware =3D { @@ -257,8 +258,7 @@ static int rt5514_spi_pcm_probe(struct snd_soc_componen= t *component) struct rt5514_dsp *rt5514_dsp; int ret; =20 - rt5514_dsp =3D devm_kzalloc(component->dev, sizeof(*rt5514_dsp), - GFP_KERNEL); + rt5514_dsp =3D kzalloc_obj(*rt5514_dsp); if (!rt5514_dsp) return -ENOMEM; =20 @@ -268,21 +268,41 @@ static int rt5514_spi_pcm_probe(struct snd_soc_compon= ent *component) snd_soc_component_set_drvdata(component, rt5514_dsp); =20 if (rt5514_spi->irq) { - ret =3D devm_request_threaded_irq(&rt5514_spi->dev, - rt5514_spi->irq, NULL, rt5514_spi_irq, - IRQF_TRIGGER_RISING | IRQF_ONESHOT, "rt5514-spi", - rt5514_dsp); - if (ret) + ret =3D request_threaded_irq(rt5514_spi->irq, NULL, + rt5514_spi_irq, + IRQF_TRIGGER_RISING | IRQF_ONESHOT, + "rt5514-spi", rt5514_dsp); + if (ret) { dev_err(&rt5514_spi->dev, "%s Failed to request IRQ: %d\n", __func__, ret); - else + } else { + rt5514_dsp->irq =3D rt5514_spi->irq; device_init_wakeup(rt5514_dsp->dev, true); + } } =20 return 0; } =20 +static void rt5514_spi_pcm_remove(struct snd_soc_component *component) +{ + struct rt5514_dsp *rt5514_dsp =3D + snd_soc_component_get_drvdata(component); + + snd_soc_component_set_drvdata(component, NULL); + + if (rt5514_dsp->irq) { + free_irq(rt5514_dsp->irq, rt5514_dsp); + device_init_wakeup(rt5514_dsp->dev, false); + } + + cancel_delayed_work_sync(&rt5514_dsp->copy_work); + + mutex_destroy(&rt5514_dsp->dma_lock); + kfree(rt5514_dsp); +} + static int rt5514_spi_pcm_new(struct snd_soc_component *component, struct snd_soc_pcm_runtime *rtd) { @@ -294,6 +314,7 @@ static int rt5514_spi_pcm_new(struct snd_soc_component = *component, static const struct snd_soc_component_driver rt5514_spi_component =3D { .name =3D DRV_NAME, .probe =3D rt5514_spi_pcm_probe, + .remove =3D rt5514_spi_pcm_remove, .open =3D rt5514_spi_pcm_open, .hw_params =3D rt5514_spi_hw_params, .hw_free =3D rt5514_spi_hw_free, --=20 2.50.1