From nobody Thu Apr 9 08:11:00 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 9A45919EED3 for ; Tue, 10 Mar 2026 03:53:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773114825; cv=none; b=umjRUgpqEqnTQzQ9x2vrt4iSKX1JUN67G1GTHKvLgO8GBvhLUZVkepIH3fhMeRBatmfXq7daeauXyeVdgkyodDSAQbCbhpJjOnOMHYYAkdSmp1lCwkSFrguFlUTeG8QA4ronGwoad2I1dhOnadgY+46WptRiY08fiscTrgZ5w2k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773114825; c=relaxed/simple; bh=2c5oRtP2vj4QsL0Tk2H7RcKbwwJ0hple3SJkH2pC1OQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=cf9P8Zz52YIFAibNZsPGNK+gSdYA9uO5liXDyfXgKsLsI56hFkHgtvgVQFssNlSbeeodArA6JEpXE2PX6x5Rl4M3LkfLNl2ZwGKoOg154lBwhX+UjKXo17FF6yVbQtCLuEBZE0a67mwqGOQzzX62b/33XU4tJ0ox4sl6pq2F/0k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=CEGi8vbP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=IhEz6HE4; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="CEGi8vbP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="IhEz6HE4" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62A2EIST3754619 for ; Tue, 10 Mar 2026 03:53:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=t8v0G6gCfJ4JhN/4R5+M1N IjQLf621G8ZADlD7ggQAI=; b=CEGi8vbPVIwZxxmsETx46oEl7NoqsKng80NbkN ATlX0XVNPvfqUidOm9sZajd9Qm8fSqGbtCeyobv1Zv+3TsNq/P8aS0nAPSldk/rK o7s+E0ly//Gm8h07fuNarY1jVmOj6QF2G+51lyV8DE4CsqrTrLDp+PCIcdFCSk7u /xCvX1EszCIkIddN9oWmZdr424C4p7jz32mtFSTMmWTJLYSgwaZDu/03hFsqh5QJ HW3JBD6t4jlqH5m3iAwG9QIvDdzoXWeyIV2fStmc3Ab9m824qhRCB/sgv/1B9wCX sMYRj46BkL/d0E/CUYCypsEjVHPw65vlEU2/8sFft6h9iSKA== Received: from mail-ot1-f72.google.com (mail-ot1-f72.google.com [209.85.210.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ct477hc3g-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 10 Mar 2026 03:53:43 +0000 (GMT) Received: by mail-ot1-f72.google.com with SMTP id 46e09a7af769-7d742bb4003so8883440a34.0 for ; Mon, 09 Mar 2026 20:53:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773114823; x=1773719623; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=t8v0G6gCfJ4JhN/4R5+M1NIjQLf621G8ZADlD7ggQAI=; b=IhEz6HE4LlLsPqzYXaQyK+6L4dQ0e7Xseeire7wlWF5ejpbjXDGcbMOimLED8cVM4C xf3qkcY0PLIqRIYXF0HtdiHkxcEB0A4LLJwx77eL99VGYluSQ2HBlhOTTu4jDslCTC4U JiMMzpbyQ5budsXP2m3eu6NyBK79SP8KC8fGq+YZ4jsAR9P2Bu/pyqDWnQRMdPYTl5ce s6phlGMbs+UV/ERXk5GvfW5zJqlVWjvO226SqHFNsBTu+jonz5WYBSj87trZjLdRV+w5 S+wyRWyrUgPrELtpEYiNvyyA4MlkKSvHp1/355QlBbshlRoEU7UnVEqf3lQSwqDLGzQT oCVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773114823; x=1773719623; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=t8v0G6gCfJ4JhN/4R5+M1NIjQLf621G8ZADlD7ggQAI=; b=nNu1yGclTdoZWOoinyRjQmY1OAh3tnIMVd9hcmLiB53RBWUXAXB87HwgkskmmsavKd RuuzwkM7ay9BO6mjHzQKj5zFJcfLgsg7CU65CDD5gz9LUh8cUEWa1hSwN5b1QS1Ide5A 67ga3wmmnBKSlD4hUIrKwNrLV3sYivACrfjO50S9vAKWC8Ll6Y6e+VuLPypNMyD0m1tw Rgq3kLodicgXW2q1lNMwEgwavKD3FWU/CseXq7X5ViRBkfMlUPSU841SGdJ3be4CVOjL OhGghNHZWqTONlGb8K8xoB/XqTGCTeZ7EpW61V0F9OG/TRTNLCa35czY3EggeXGwcU0e bS4w== X-Forwarded-Encrypted: i=1; AJvYcCUmnXauCfsP+la6VbGgOFQapotvPTfXXMSfxN2zLUrORKJB6wed62TbAXtvHeoSFdL33QEn6plchvdbHnM=@vger.kernel.org X-Gm-Message-State: AOJu0YyM2mOyl13alqdDOHR6h+inO2UZy1V8GlggXpM2K4gM6gg70HfD Ed+P3rYx38+sRqyxUJCu0l0p7uxU4Y2qM9bPN8PdTvnrAKck02qEdF1iBnC8mxfu4gv7jkjODDf ORW1bfksuEb6mSvMJv9CsrcPn9nv3BDlGVsl3B2hQPz38l3s30xGT6PKhC/gv/eE+oD8PWWvXXF I= X-Gm-Gg: ATEYQzyq8cF2IbLGR11JH9MW1azte9WJSgY3LyXKbWyllr5YDr0X5op9CN9k6ElpM8Z XO5HNwqEtygI8sQQfaB1JCfB/11DJL5pzEqtwmR6ZF40i6KTuNwicQTegb6JiJdI1PCJDeAKd2E 5vXpNwWinI4Z+Bqo2++9py6baOjn6SyJwV7P+gzKL64Zchb3FQGkEzzE0JDxPREsDtvbiZaHDfo Fsw41qzCp7c7xn6lovJtRVcZguxYPdxlnWwnmF3o2oKdTT8kjrpWutyOH8w9/kQ6PXpaph9mM2+ AWQWh98+IIxoCrq0Epx+acGbIeOZDgOzbdf2WkRF7VvpQlt4NizU2s0IH2RTQ3NKyKxkB9UfvIC j9IeGB02nTcMPGGXoW2x4nzwLHaWIwPXNWrJlzOJbkys= X-Received: by 2002:a05:6808:1993:b0:467:14e:6bef with SMTP id 5614622812f47-467014e6ec0mr4409206b6e.33.1773114822906; Mon, 09 Mar 2026 20:53:42 -0700 (PDT) X-Received: by 2002:a05:6808:1993:b0:467:14e:6bef with SMTP id 5614622812f47-467014e6ec0mr4409194b6e.33.1773114822469; Mon, 09 Mar 2026 20:53:42 -0700 (PDT) Received: from [192.168.86.59] ([104.57.184.186]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-41756e13565sm1543658fac.18.2026.03.09.20.53.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 20:53:41 -0700 (PDT) From: Bjorn Andersson Date: Mon, 09 Mar 2026 22:53:35 -0500 Subject: [PATCH] mfd: wcd934x: Unroll regmap and irqchip on removal Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260309-wcd934x-unroll-regmap-v1-1-9a5fb305540e@oss.qualcomm.com> X-B4-Tracking: v=1; b=H4sIAL6Vr2kC/x3MSwqAMAwA0atI1gaqFbVeRVyITTWgVVL8QPHuF pdvMRMhkDAF6LIIQhcH3n1CkWcwLaOfCdkmQ6nKWmll8J6s0dWDp5d9XVFo3sYDnSHVtrpyxja Q2kPI8fN/++F9PxqXgKxnAAAA X-Change-ID: 20260309-wcd934x-unroll-regmap-f9e08834f9d7 To: Lee Jones , Srinivas Kandagatla , Pierre-Louis Bossart Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Bjorn Andersson X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3725; i=bjorn.andersson@oss.qualcomm.com; h=from:subject:message-id; bh=2c5oRtP2vj4QsL0Tk2H7RcKbwwJ0hple3SJkH2pC1OQ=; b=owEBgwJ8/ZANAwAKAQsfOT8Nma3FAcsmYgBpr5XFgfJmWpkz492UggawYj0y1uYv/IyCJ8hiz Pg9EnUFVjOJAkkEAAEKADMWIQQF3gPMXzXqTwlm1SULHzk/DZmtxQUCaa+VxRUcYW5kZXJzc29u QGtlcm5lbC5vcmcACgkQCx85Pw2ZrcWtBg/8DUUvH69S3vF6mI1JcC/MbdEuNPtyOeNpAV+mLmG hL1K/T4VdEgiqfeL7AkGmf6ajQug4lj6WUjSgGjqTPyl14p6omtIKC8AgGrmQ+WbpZ6zSljGjd2 WEmrPKiK8wrfmV3eloq8GYiJfkBSf733054CKmv9VI7O6bujeN1cZ6JPjHFmhjGv2kTidmReO7P vSuPNOU9CKlEwS3E2uzmtdbHVNpLHOeZyR8WZ/KjwNuGOKzpcMPYjQ9O2OGqTcZgVHjWZTua39m c4dvYOGDDZwDOEakObV3MdUNSG1YK6LJitXGERabpfF5A8BgyiixM9RTynetTtDSw3w6xkz6oWg 5awtQ9mvLAuVYBS9JiBp/laGiANmZ6PVzM0hl3MpziVZyDOOJa/HB/YTQ/OZsq+La8HsIWevMPa jHjg6ADUJ6q38BBx5MD4yOraEoB9Fo17peu+Bd8UhMcxasiOKnmAuoi5eug+q5g/zQ6RsU8cQKz hMWDK/b2r86Gb1kwBDLJp+7ziqWmKTvENr5aa6z/y9N/CjRZorku26flU5nujKk8tKAHW0FEjMN uhAlH09Myz1E39dxi3iWFdsNHkU+qEA66f+3JjVrzZJXbOS9BgDVG7rvr3CkEDmgoInJ68KLimz ItbfGEeU/ZnxuXYLZyfkLIGX5CEiStcSSb0M2Q3OAq1Q= X-Developer-Key: i=bjorn.andersson@oss.qualcomm.com; a=openpgp; fpr=05DE03CC5F35EA4F0966D5250B1F393F0D99ADC5 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDAyOCBTYWx0ZWRfX7igh59rjJ8XG N/T2AV9gRTkmsQgCo1QZaYsugEDAEU842KqSdhwGxL8FjdAJ+Xa7dOguz9Paoj3eki0cdXIal6s YYfnWQ8Lbhrq5s2amks4Xx3aETcdoZX8Uu8Y6MJp6FLXQz6ry3IqW0n2S7Qi0Wfaj99/17ljvbT /7m+u/OifeBZwWuxjN9TCZpTMQv402a6gyo5IvQO8k7ixuICorNtDBJgj5rOd1JZtvzPp2op33N OJeAsUBlzlW4FOVcwt/scuC2Rpj3wbUQ05AeUfS5fvV4IC1GexaARhT34Xx5bBy/ZqqGbRRmC8j H6wfrYeMmzigFhUn2vy4iSYjKepRVCcnrbpKhO17DfRXHX1vukrzcp0DPsAaJ9UgL55a1I4T+mE p6ngDUvT4hctPPgR5eCu679j0CCXMcbQ0syXOrPr4MVIX6Dm+zqANFmD1BQzWaMohu7vel92D4T P6Al531f5VPGWYqArNw== X-Proofpoint-GUID: YQ1Dub1wYYhk01aO1050ak0q8EF4-e4W X-Authority-Analysis: v=2.4 cv=KLxXzVFo c=1 sm=1 tr=0 ts=69af95c7 cx=c_pps a=+3WqYijBVYhDct2f5Fivkw==:117 a=DaeiM5VmU20ml6RIjrOvYw==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=OgaCUeAxioZO__sieaIA:9 a=QEXdDO2ut3YA:10 a=eYe2g0i6gJ5uXG_o6N4q:22 X-Proofpoint-ORIG-GUID: YQ1Dub1wYYhk01aO1050ak0q8EF4-e4W X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_01,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 bulkscore=0 impostorscore=0 spamscore=0 phishscore=0 priorityscore=1501 lowpriorityscore=0 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100028 When the slimbus-up event is handled a new regmap is created, an IRQ chip is registered on this regmap and then the MFD devices are added. But the regmap is left dangling if either any of those operations are failing or if the slimbus-down event ever comes. Which manifest itself as an error print from debugfs once the next slimbus-up event happens. Likewise, if for some reason a slimbus-down event would be followed by a slimbus-up event without the MFD being torn down by the slimbus controller inbetween, we're going to have a dangling irq_chip. Add cleanup of the registered resources on failure and on removal. Fixes: 6ac7e4d7ad70 ("mfd: wcd934x: Add support to wcd9340/wcd9341 codec") Signed-off-by: Bjorn Andersson --- drivers/mfd/wcd934x.c | 49 ++++++++++++++++++++++++++++++++++++++---------= -- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/drivers/mfd/wcd934x.c b/drivers/mfd/wcd934x.c index 3c3080e8c8cf7ecaaa62e255c7e01a850e65e9ad..b03cc91cc3a6a114a34efdb2784= 20ae3dfa016eb 100644 --- a/drivers/mfd/wcd934x.c +++ b/drivers/mfd/wcd934x.c @@ -170,29 +170,56 @@ static int wcd934x_slim_status_up(struct slim_device = *sdev) ret =3D wcd934x_bring_up(ddata); if (ret) { dev_err(dev, "Failed to bring up WCD934X: err =3D %d\n", ret); - return ret; + goto err_regmap_exit; } =20 - ret =3D devm_regmap_add_irq_chip(dev, ddata->regmap, ddata->irq, - IRQF_TRIGGER_HIGH, 0, - &wcd934x_regmap_irq_chip, - &ddata->irq_data); + ret =3D regmap_add_irq_chip(ddata->regmap, ddata->irq, + IRQF_TRIGGER_HIGH, 0, + &wcd934x_regmap_irq_chip, + &ddata->irq_data); if (ret) { dev_err(dev, "Failed to add IRQ chip: err =3D %d\n", ret); - return ret; + goto err_regmap_exit; } =20 ret =3D mfd_add_devices(dev, PLATFORM_DEVID_AUTO, wcd934x_devices, ARRAY_SIZE(wcd934x_devices), NULL, 0, NULL); if (ret) { - dev_err(dev, "Failed to add child devices: err =3D %d\n", - ret); - return ret; + dev_err(dev, "Failed to add child devices: err =3D %d\n", ret); + goto err_del_irq_chip; } =20 + return 0; + +err_del_irq_chip: + regmap_del_irq_chip(ddata->irq, ddata->irq_data); + ddata->irq_data =3D NULL; +err_regmap_exit: + regmap_exit(ddata->regmap); + ddata->regmap =3D NULL; return ret; } =20 +static void wcd934x_slim_status_down(struct slim_device *sdev) +{ + struct device *dev =3D &sdev->dev; + struct wcd934x_ddata *ddata; + + ddata =3D dev_get_drvdata(dev); + + mfd_remove_devices(&sdev->dev); + + if (ddata->irq_data) { + regmap_del_irq_chip(ddata->irq, ddata->irq_data); + ddata->irq_data =3D NULL; + } + + if (ddata->regmap) { + regmap_exit(ddata->regmap); + ddata->regmap =3D NULL; + } +} + static int wcd934x_slim_status(struct slim_device *sdev, enum slim_device_status status) { @@ -200,7 +227,7 @@ static int wcd934x_slim_status(struct slim_device *sdev, case SLIM_DEVICE_STATUS_UP: return wcd934x_slim_status_up(sdev); case SLIM_DEVICE_STATUS_DOWN: - mfd_remove_devices(&sdev->dev); + wcd934x_slim_status_down(sdev); break; default: return -EINVAL; @@ -276,7 +303,7 @@ static void wcd934x_slim_remove(struct slim_device *sde= v) struct wcd934x_ddata *ddata =3D dev_get_drvdata(&sdev->dev); =20 regulator_bulk_disable(WCD934X_MAX_SUPPLY, ddata->supplies); - mfd_remove_devices(&sdev->dev); + wcd934x_slim_status_down(sdev); } =20 static const struct slim_device_id wcd934x_slim_id[] =3D { --- base-commit: a0ae2a256046c0c5d3778d1a194ff2e171f16e5f change-id: 20260309-wcd934x-unroll-regmap-f9e08834f9d7 Best regards, --=20 Bjorn Andersson