From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C7DF3803F1 for ; Tue, 25 Aug 2026 17:22:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787678570; cv=none; b=VL2iDnp0YsLSNQoqpe7YsuRgun1IOkEuuQXS4aFyPBYqz3Bbm4h/J9CudODxxfCoqMPgqfBpKEgzbcNRZI/rGTL+BqGXzfmq+7bNm0aVVZ+gswqrAzt+giyRciI+3VZgRHmzSUrT7iQVbyjHyEFOAObnavHrWe5buELV2VD3Nqo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787678570; c=relaxed/simple; bh=I1XI9+nkPCrX73hyNcHT1tU5DDgec70XDsg+P0Gkh98=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VFoxiwsEnF0wsIH4lysj0f/zzrqgvJBTwZtcGUo7L00ksrcmFy6IW+uVGQoxmc4eOS9gfxMX+/9CaOwsPSu5iTLQK16CfjexbeFklubrHMnjz+vOZbnQhTy2kmW1UXNXbulPb/nSWfiUmleb3ctKGqclw5Hq1z+smIY+7f7IB1o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=W3NbKs7O; arc=none smtp.client-ip=209.85.215.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="W3NbKs7O" Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-cbedf318752so3927334a12.0 for ; Tue, 25 Aug 2026 10:22:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787678568; x=1788283368; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=kGjwYaAGAPpb5UsGnRRTSugqMWHugUl+MPT7Fj23bh0=; b=W3NbKs7OWUGx2MTpGxwkyvJyN0wZ8x8vp9GPcUSe9JlZprO31RThzD94hnfytZx193 7OX0u0wL6giUboCSGc4PNgVMuqSwSkedTu1DRvTXv4Ru7mSZsVtzeF/aScN1kjw7cgwu HtnJCmG9sFRSec984qqqoyk3+g1TE5wN8ioQv+Ni6lV+D5UjwHdvYDuvtH2UurCkqYlH vk9I2S9KiQ8aV1GBsmP9t3WOMOW0n/1ndX+1SmFDPW31LlzrlVA+IMnaHrTxSvCE8nDL CO6it5llV/zk1wFuhjenGz0wlIcb7nQLJoLhXSLlbxSgwX2FKM1FI6QINtubFnhJBFAx MQEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787678568; x=1788283368; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=kGjwYaAGAPpb5UsGnRRTSugqMWHugUl+MPT7Fj23bh0=; b=Asdaykxn3QW8x2qwMe61EtQFbLqRfUKcqnrYMHRrD5EEHnEmaxUnzEbna/zXr29MZg p2DPLo3s79nmXb8BN32YN6BUOgdbc7NgGjYNJZcT4zKQDQ60gR7o6Qj1/fr5Fy3zUdEK F44uasOZBwhoFQGxQEWBvpYaDg0hhBMC/OkEqH1jHyNuGTSDY/XBtD8CgmkPbUAOezqk 0K3iJWuVJM6JwZOgFBpNvYX+vpd4e6l6R/z3lPNOatHYLZ2jXPM0E+uBN3MsTDYu2asr 3Xijd8UQ6BBZxwAsN+1IsU4gMjVLW3+GwPCzcSInJLyrx6IZ2dHmKd3cX9Iqf6vk47kG rSog== X-Forwarded-Encrypted: i=1; AHgh+RqLST6a4SnjN4ngR+bYb26rPuMI6A5qLPXmolXmh1+/k+6CATeyCijJQxZKn/Yi97HRvSM1CNCNop/2WXQ=@vger.kernel.org X-Gm-Message-State: AFuF++l75tgw5HhBVdCBEAIY6jk2skPEH1MzN2U+K909hb95ZvM+70sg G2ARoHYslPzp+yDNyNianHPwmH3Fa+qi0UBIjl+AGbSFWAWXSx1MEZ+6 X-Gm-Gg: AR+sD11RiVBrOD8f+x+qiW1KWnSGVBySa/i6ltoagNh8NpPvJa5fCzJhH0VRPHjcMsr 8W5Z2jh4b3MeNoEK2hDrqvM1IESLxnm5V0a8mqurmqOTR8H22LufriofzkrSCjZNWG8Ggqj3PIW kdgGV/rRi7rxgu2Gddp9nXFvdggPKKfhaNLWp/6cSzlyl7rhZDjADmn9ITg4YQ3tjtLcEpbYGsR LyOVfBIKJfS+vcxxtqwJ/j/GnJWloiNbchea+FQb9pPDjvcajNmZQFsJnFqfGzHUGSt5VXyaN0i i/49FV+6x5sytqnJabot1s0W2W9nyR1dOm1ck+qjCKHrucYx76gS/any8K5XPN+Z8vBgvn3OnNY B9deCQqsXXrUfSHgFemIcjGuKVtoisBkz6I7Z/niSjFW0OT11PlXZo0cDFY8E539KIQMqJqRBZV pctPhuXZHg3QyQq956k+6nNjSGdlp0R+ePo0Azeypc6FoYj5J7naCZNvKPmYc= X-Received: by 2002:a17:90b:3b52:b0:396:602a:5bb6 with SMTP id 98e67ed59e1d1-3966d20f12cmr1147836a91.8.1787678568310; Tue, 25 Aug 2026 10:22:48 -0700 (PDT) Received: from ubuntu.. ([2405:201:8026:213e:7ed1:605d:3bd6:fefb]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3283d8d208csm327637eec.23.2026.08.25.10.22.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Aug 2026 10:22:47 -0700 (PDT) From: mdshahid03@gmail.com To: Jonathan Cameron Cc: David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Ray Jui , Scott Branden , bcm-kernel-feedback-list@broadcom.com, linux-iio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Mohammad Shahid Subject: [PATCH v1 2/3] iio: adc: bcm_iproc_adc: use devm_add_action_or_reset() Date: Tue, 25 Aug 2026 22:51:54 +0530 Message-ID: <20260825172155.250484-3-mdshahid03@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260825172155.250484-1-mdshahid03@gmail.com> References: <20260825172155.250484-1-mdshahid03@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Mohammad Shahid Replace the manual ADC and clock cleanup in probe error paths and remove() with devm_add_action_or_reset(). Register cleanup actions immediately after enabling the clock and ADC so that the resources are automatically released on probe failure and device removal. This also allows the cleanup labels to be removed and the iio_device_register() failure path to return directly. Signed-off-by: Mohammad Shahid --- drivers/iio/adc/bcm_iproc_adc.c | 39 +++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/drivers/iio/adc/bcm_iproc_adc.c b/drivers/iio/adc/bcm_iproc_adc.c index e46e3761993a..1464c60bc83e 100644 --- a/drivers/iio/adc/bcm_iproc_adc.c +++ b/drivers/iio/adc/bcm_iproc_adc.c @@ -448,6 +448,20 @@ static void iproc_adc_disable(struct iio_dev *indio_dev) } } +static void iproc_adc_disable_action(void *data) +{ + struct iio_dev *indio_dev = data; + + iproc_adc_disable(indio_dev); +} + +static void iproc_adc_clk_disable(void *data) +{ + struct clk *clk = data; + + clk_disable_unprepare(clk); +} + static int iproc_adc_read_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val, @@ -551,9 +565,17 @@ static int iproc_adc_probe(struct platform_device *pdev) if (ret) return dev_err_probe(dev, ret, "failed to enable clock\n"); + ret = devm_add_action_or_reset(dev, iproc_adc_clk_disable, adc_priv->adc_clk); + if (ret) + return ret; + ret = iproc_adc_enable(indio_dev); if (ret) - goto err_adc_enable; + return ret; + + ret = devm_add_action_or_reset(dev, iproc_adc_disable_action, indio_dev); + if (ret) + return ret; indio_dev->name = "iproc-static-adc"; indio_dev->info = &iproc_adc_iio_info; @@ -562,29 +584,18 @@ static int iproc_adc_probe(struct platform_device *pdev) indio_dev->num_channels = ARRAY_SIZE(iproc_adc_iio_channels); ret = iio_device_register(indio_dev); - if (ret) { - dev_err(&pdev->dev, "iio_device_register failed:err %d\n", ret); - goto err_clk; - } + if (ret) + return dev_err_probe(dev, ret, "iio_device_register failed\n"); return 0; -err_clk: - iproc_adc_disable(indio_dev); -err_adc_enable: - clk_disable_unprepare(adc_priv->adc_clk); - - return ret; } static void iproc_adc_remove(struct platform_device *pdev) { struct iio_dev *indio_dev = platform_get_drvdata(pdev); - struct iproc_adc_priv *adc_priv = iio_priv(indio_dev); iio_device_unregister(indio_dev); - iproc_adc_disable(indio_dev); - clk_disable_unprepare(adc_priv->adc_clk); } static const struct of_device_id iproc_adc_of_match[] = { -- 2.43.0