From nobody Thu Apr 9 13:57:45 2026 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (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 B925E3D5232 for ; Mon, 2 Mar 2026 13:07:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772456824; cv=none; b=DKiCtvptdrwvKUSzEK5KFz0z6dfT4unkg05sG5CQp1qFswX1hereV3nYWuc7D1s04KsItwaZchTQKTRJ1RrXpcPbEdlMbAz9KbEVBoJXBDUmwjTTg1nwp2phOOH4kEStafTZGPk6uobAfTm2ncdXaBT1ZqJV36v7TXWqJkBtJ/Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772456824; c=relaxed/simple; bh=pUizvyGgrbVh0ydayA9+/BD4CmqGKVV3YpQdMRdjHZs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=oeZB9l3ZrIjC/GeSqBceRUuKsp1YYd3DcfxThDZzNxS0PDUw9o9+5kVj4xlpkpefeArdSIVA2kB2fRdE50Zdl6rnTltR3wZ65c2WIcNgxrQXaBG4MIxOo3m9yV0NwsUojajY0JJwwNfV1ZkhEeV5w0cb0/b6TCUuMVWXhq2xUWw= 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=R+PGTZVU; arc=none smtp.client-ip=209.85.216.49 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="R+PGTZVU" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-356337f058aso2195498a91.2 for ; Mon, 02 Mar 2026 05:07:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772456823; x=1773061623; 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; bh=dmA9gHa9RdR5TU2BtZuAJxtVJP+tTGO3ZPbWbacgMoU=; b=R+PGTZVUA7JbdHRysP+2JoXHE/0ycwp6I5a6VDUBUr/+vJ0WTJbQGjLnM/NrVCqZ25 7DHZb7zXlzqbqxj3s0oj5ojiZUtJsMBXuRCdOicRy/YYj8WGbudWAZJVUDPs/BFWLDU0 VdZQ+072DZQ6pBw61QvV7Rc/lze5Z9FILqMVmd4GKns1ZuIKS3G613RXQpG4T+ImGJ9v voxDWv7+jqhE8MFLaV/rf3UC2CL6dCzAXWccLVHQ7aUmjHtS/eZyvcAMlYrf3enMk/Ph RFjzFASphB2UPOaJN471rBvqgre7OeQUL39eojyFQH5nwJ5NvVM92hj/n+Gkq2A4EgGN tRww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772456823; x=1773061623; 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; bh=dmA9gHa9RdR5TU2BtZuAJxtVJP+tTGO3ZPbWbacgMoU=; b=V6y39Yw12pn2h5m962NlXVzYhoCcBPbDdbhEq+d5WORRA2R+vlvq6DFQh3uv3PaKut 7sPEJPPgP7kbr/xiow6V/V2VppwaXKsg9S1FXJDBU6Foa/UV6KgMgXhA3R9rQUOyHWlt tT29GYcNOaUheK1cblc5C/tDC4TG0V3I6zrluPjBaKNEs091xdYzNzymXVnwTbLrd509 vJd5UfQZ+WPs87gT9+tD3BJ2yv4E73aAJbPsGQRiT6qYSJwNhvBVehDHiA725Ddq3iTx SsMH4leUfWXNQL1X8l6phu+3OqhuS0VWOvCAqY3sjEspSg+15nK8UbqFuKnegxBlSn2I feVw== X-Forwarded-Encrypted: i=1; AJvYcCUlP1mJBrf3bhEXCfFz24RwG6XoNotL1svWcsfbu79Q1D3U7Wot1RFrFlE+ndsuIeMD5J+2P5MeglHE9Zs=@vger.kernel.org X-Gm-Message-State: AOJu0YxHyQnbHd6DN5Evyepl3GuOV+6sEIlz45DAVZszpzABD648SPtF /GrBhsIgW91GnmP51ymrnRnezHrE8H5sn+wxZmY+Uts50cDA7EUZkey4 X-Gm-Gg: ATEYQzylQzmk34A1kIJ+aUl4ylrTYIerR5EfQfxKiLY4wcp91vb72HtFHwebXMZnvVi ziJieeVSrI2KaofKDqs4dZT1+90x+tvNb1WgA8q36SIaEdHd/hvYfo2UuY2Fg5g1BL2mrVLRpZ/ klCk8SUVdebe9VCJ4KcKwkEQciTcuM4DKnj9XvKA24rdMQFj8QfDhPKiA86p0HBJqkoiATExoiy 1MnAd8L34iLdGdkBsZol3egZuzSFrAPFmFIJOcnudjToriXi32UIIpVlPrPcXzhqNjei2itFURT 3PrOc+nolkKxMbGaE/Zqhx8pvaJjlTd8gSW2vbRkdRoQnwUrc1kAv5/EuPEKYKnEJstnRp9AZ/A b0hsKHgLZiuG+2UEL8LcD3njEIt2TD9b+Tko6oos3qYTOhpvEoNqzUq0zOmo8DQ86914/8Aa/sr 0DfdFdL5FdqLoe5eEqRWjDsUsE3Zgfyo9lnG9sgwbktQ== X-Received: by 2002:a17:90b:524b:b0:354:999f:1b22 with SMTP id 98e67ed59e1d1-35965cf519bmr8851182a91.32.1772456822897; Mon, 02 Mar 2026 05:07:02 -0800 (PST) Received: from debian.ari ([152.58.176.247]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3597b448e38sm7444585a91.5.2026.03.02.05.06.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 05:07:02 -0800 (PST) From: Archit Anant To: jic23@kernel.org, lars@metafoo.de, Michael.Hennerich@analog.com Cc: dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Archit Anant Subject: [PATCH v3 3/4] iio: adc: ad799x: use devm_add_action_or_reset for regulators Date: Mon, 2 Mar 2026 18:36:31 +0530 Message-Id: <20260302130632.29144-4-architanant5@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260302130632.29144-1-architanant5@gmail.com> References: <20260302130632.29144-1-architanant5@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: quoted-printable Content-Type: text/plain; charset="utf-8" Convert the manual regulator_disable() handling to use devm_add_action_or_reset(). This guarantees that the regulators are disabled in the correct reverse order of allocation during device teardown or probe failure. This removes the need to manually disable the regulators in the remove() function. Suggested-by: David Lechner Signed-off-by: Archit Anant --- drivers/iio/adc/ad799x.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c index 35e0589428d0..1a96b5417ecf 100644 --- a/drivers/iio/adc/ad799x.c +++ b/drivers/iio/adc/ad799x.c @@ -781,6 +781,13 @@ static const struct ad799x_chip_info ad799x_chip_info_= tbl[] =3D { }, }; =20 +static void ad799x_reg_disable(void *data) +{ + struct regulator *reg =3D data; + + regulator_disable(reg); +} + static int ad799x_probe(struct i2c_client *client) { const struct i2c_device_id *id =3D i2c_client_get_device_id(client); @@ -818,6 +825,10 @@ static int ad799x_probe(struct i2c_client *client) goto error_disable_reg; st->vcc_uv =3D ret; =20 + ret =3D devm_add_action_or_reset(&client->dev, ad799x_reg_disable, st->re= g); + if (ret) + return ret; + /* check if an external reference is supplied */ if (chip_info->has_vref) { st->vref =3D devm_regulator_get_optional(&client->dev, "vref"); @@ -840,6 +851,11 @@ static int ad799x_probe(struct i2c_client *client) if (ret < 0) goto error_disable_vref; st->vref_uv =3D ret; + + ret =3D devm_add_action_or_reset(&client->dev, ad799x_reg_disable, + st->vref); + if (ret) + goto error_disable_reg; } } =20 @@ -901,9 +917,6 @@ static void ad799x_remove(struct i2c_client *client) iio_device_unregister(indio_dev); =20 iio_triggered_buffer_cleanup(indio_dev); - if (st->vref) - regulator_disable(st->vref); - regulator_disable(st->reg); } =20 static int ad799x_suspend(struct device *dev) --=20 2.39.5