From nobody Tue Sep 29 11:20:01 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 02412385539; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786208307; cv=none; b=KvgHMJanl9rzse4aEinAVI/Fo6m5lsYsWNO53D7dgGMvO0ggZ7K0Zq6BYVeWUZiNoQj0mnaJy2Z9NNGSX7MVPbG+n1OcAzAzt2/crKVS2p/Z/7BFhAnQWxA+VlWEFM/UUiLe2RuIsfVk7D5zCTA7HqiMtE2tcu4i/VssJFgOCIA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786208307; c=relaxed/simple; bh=6+KkOzOWnk3R4ovpFsXB9TLO/2SuUdQCN5qBuI+bS+k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qH8UCPrW799KGLFkmHR3CvufA1BFj8I+2YjvKFTwRHomsZbnzORUXsPymd82GKWSaQmPGEtg9ZqxbsMGQ+/TCw9rUzBbUO8G2d3/I2Op3OdOsGHUWXkKWyTILHB7e1x4krhWioCk6TsfFyNYhTYI7CHPnfcdyv1K0+dbcGemKic= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ov3M397t; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ov3M397t" Received: by smtp.kernel.org (Postfix) with ESMTPS id 93AE5C2BCB8; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786208306; bh=6+KkOzOWnk3R4ovpFsXB9TLO/2SuUdQCN5qBuI+bS+k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Ov3M397th2PVuhe3L53UpoTsTp9hjz2bmhHuso/8tzdnas9HkbWkPg61E8k4cES6I 0cY+F9na/0Mg34F5HsOXTYJ+eI8cJqkml2ZI/ohkFMwtvMZamUSnsXaWBEtWoIkyHH bwWtSQaS9Gcwe5Mq7K51fGCk4WVbEkyzt531d24MlZuk6UI3hnyabzQu3Z0q+OS/n1 gMYgQZHhbMbzFUVgYXvFbOjox31OrR/77IgvdV0C6tSWBbh0zc5Z5O3wBQ28ZF8+v2 LUWL4TM1nUP9rl/42eCu7RiBw9ZmilTNgRDPPyvvC4uoOngCU46kVm/iUFzGFN6u0h beK69I4aGLuHg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71818C55174; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) From: Sanjay Chitroda via B4 Relay Date: Sat, 08 Aug 2026 22:28:13 +0530 Subject: [PATCH v5 1/4] iio: accel: mma8452: convert to bulk regulator usage 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: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-1-d177e93ce3f8@gmail.com> References: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-0-d177e93ce3f8@gmail.com> In-Reply-To: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-0-d177e93ce3f8@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Sanjay Chitroda , Andy Shevchenko , Jonathan Cameron X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1786208304; l=5696; i=sanjayembeddedse@gmail.com; s=20260702; h=from:subject:message-id; bh=msc6kn8HwdwOjnZXXGBlOINiVjEatD5na+kGlio23Jk=; b=flE64OqSBpLo8l8ux06XgdPSFkdD8PQ+YYa+Uagrp45wQ3vbRX+ARyt6+s8rIOvMK1LrbhSew 7pxmnkcuem3DBijQWV/6xehxkVIzFL1RTOxrvTSB9RQdxrynuDVqdC8 X-Developer-Key: i=sanjayembeddedse@gmail.com; a=ed25519; pk=PcneEFtkmY+Ldl+KmOTpB/Q/HDsqko6Fb0/Z/5cuycI= X-Endpoint-Received: by B4 Relay for sanjayembeddedse@gmail.com/20260702 with auth_id=848 X-Original-From: Sanjay Chitroda Reply-To: sanjayembeddedse@gmail.com From: Sanjay Chitroda The "vdd" and "vddio" regulators are always controlled together. Switch to the regulator bulk API to handle setup, enable, and disable paths in a single call. No functional change intended. Suggested-by: Jonathan Cameron Signed-off-by: Sanjay Chitroda Reviewed-by: Andy Shevchenko --- changes in v4: - added explicit header with input from Joshua Crofts - validate new member of structure with `pahole` and `bloat-o-meter` comment from Andy ./scripts/bloat-o-meter mma8452-before.o mma8452-after.o add/remove: 0/0 grow/shrink: 0/6 up/down: 0/-1013 (-1013) Function old new delta _entry_ptr 72 56 -16 _entry 396 308 -88 mma8452_remove 646 548 -98 mma8452_runtime_suspend 633 467 -166 mma8452_runtime_resume 939 639 -300 mma8452_probe 4247 3902 -345 Total: Before=3D36561, After=3D35548, chg -2.77% pahole before: /* size: 288, cachelines: 5, members: 10 */ /* sum members: 278, holes: 2, sum holes: 10 */ pahole after: /* size: 320, cachelines: 5, members: 9 */ /* sum members: 310, holes: 2, sum holes: 10 */ summary: overall size of driver is optimized and all new member are in sa= me cacheline - v3 link -> https://lore.kernel.org/all/20260505174640.3998281-7-sanjayemb= edded@gmail.com/ --- drivers/iio/accel/mma8452.c | 60 ++++++++++++-----------------------------= ---- 1 file changed, 16 insertions(+), 44 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 7d683686dd9d..772463d5ff47 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -18,6 +18,7 @@ * TODO: orientation events */ =20 +#include #include #include #include @@ -110,8 +111,7 @@ struct mma8452_data { u8 data_cfg; const struct mma_chip_info *chip_info; int sleep_val; - struct regulator *vdd_reg; - struct regulator *vddio_reg; + struct regulator_bulk_data regs[2]; =20 /* Ensure correct alignment of time stamp when present */ struct { @@ -1569,25 +1569,15 @@ static int mma8452_probe(struct i2c_client *client) if (ret) return ret; =20 - data->vdd_reg =3D devm_regulator_get(&client->dev, "vdd"); - if (IS_ERR(data->vdd_reg)) - return dev_err_probe(&client->dev, PTR_ERR(data->vdd_reg), - "failed to get VDD regulator!\n"); - - data->vddio_reg =3D devm_regulator_get(&client->dev, "vddio"); - if (IS_ERR(data->vddio_reg)) - return dev_err_probe(&client->dev, PTR_ERR(data->vddio_reg), - "failed to get VDDIO regulator!\n"); - - ret =3D regulator_enable(data->vdd_reg); + data->regs[0].supply =3D "vdd"; + data->regs[1].supply =3D "vddio"; + ret =3D devm_regulator_bulk_get(dev, ARRAY_SIZE(data->regs), data->regs); if (ret) - return dev_err_probe(dev, ret, "failed to enable VDD regulator!\n"); + return dev_err_probe(dev, ret, "failed to get regulators\n"); =20 - ret =3D regulator_enable(data->vddio_reg); - if (ret) { - dev_err_probe(dev, ret, "failed to enable VDDIO regulator!\n"); - goto disable_regulator_vdd; - } + ret =3D regulator_bulk_enable(ARRAY_SIZE(data->regs), data->regs); + if (ret) + return dev_err_probe(dev, ret, "failed to enable regulators\n"); =20 ret =3D i2c_smbus_read_byte_data(client, MMA8452_WHO_AM_I); if (ret < 0) @@ -1722,10 +1712,7 @@ static int mma8452_probe(struct i2c_client *client) mma8452_trigger_cleanup(indio_dev); =20 disable_regulators: - regulator_disable(data->vddio_reg); - -disable_regulator_vdd: - regulator_disable(data->vdd_reg); + regulator_bulk_disable(ARRAY_SIZE(data->regs), data->regs); =20 return ret; } @@ -1747,8 +1734,7 @@ static void mma8452_remove(struct i2c_client *client) mma8452_trigger_cleanup(indio_dev); mma8452_standby(iio_priv(indio_dev)); =20 - regulator_disable(data->vddio_reg); - regulator_disable(data->vdd_reg); + regulator_bulk_disable(ARRAY_SIZE(data->regs), data->regs); } =20 #ifdef CONFIG_PM @@ -1766,15 +1752,9 @@ static int mma8452_runtime_suspend(struct device *de= v) return -EAGAIN; } =20 - ret =3D regulator_disable(data->vddio_reg); - if (ret) { - dev_err(dev, "failed to disable VDDIO regulator\n"); - return ret; - } - - ret =3D regulator_disable(data->vdd_reg); + ret =3D regulator_bulk_disable(ARRAY_SIZE(data->regs), data->regs); if (ret) { - dev_err(dev, "failed to disable VDD regulator\n"); + dev_err(dev, "failed to disable regulators\n"); return ret; } =20 @@ -1787,16 +1767,9 @@ static int mma8452_runtime_resume(struct device *dev) struct mma8452_data *data =3D iio_priv(indio_dev); int ret, sleep_val; =20 - ret =3D regulator_enable(data->vdd_reg); - if (ret) { - dev_err(dev, "failed to enable VDD regulator\n"); - return ret; - } - - ret =3D regulator_enable(data->vddio_reg); + ret =3D regulator_bulk_enable(ARRAY_SIZE(data->regs), data->regs); if (ret) { - dev_err(dev, "failed to enable VDDIO regulator\n"); - regulator_disable(data->vdd_reg); + dev_err(dev, "failed to enable regulators\n"); return ret; } =20 @@ -1814,8 +1787,7 @@ static int mma8452_runtime_resume(struct device *dev) return 0; =20 runtime_resume_failed: - regulator_disable(data->vddio_reg); - regulator_disable(data->vdd_reg); + regulator_bulk_disable(ARRAY_SIZE(data->regs), data->regs); =20 return ret; } --=20 2.34.1 From nobody Tue Sep 29 11:20:01 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 F384F384CEF; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786208307; cv=none; b=Gcu9mNKEHjLA1bixf7ks30kpOLjEQPA2TJdVI/Ilj1qaWmuyThq5K1SwcB9M2zhgnEaofRtDkWWBFkam1fBtyLZiEI7vf8R1C0359+LXhytG9db+MyziwGHDTa4LqSgIavPyG8xJfMcZbXpG/ibN0TB09w7KttYlyTzw+Jrs+kU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786208307; c=relaxed/simple; bh=5MI7knjElq6eNpaZCdmw31TCtxTB6G/t5OmsxOIIxQM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=daJ6vsIkw1J4vbfVj2nQ3bybT5uPTq8c6h7jOM5tunaMG9OJ+4Yoek+DgqnI7HLD9mNpOo1PsLfYJdzqPAmvt3p+H9L7xk7MZq6eVPZgHHB7vWz0PAU8PMclonhDgxt8YTsTBcD92ywTGIR7myrVMVMeUZb9eJUdTzS8p18tHfQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DnOXjMXV; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="DnOXjMXV" Received: by smtp.kernel.org (Postfix) with ESMTPS id A264EC2BCF7; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786208306; bh=5MI7knjElq6eNpaZCdmw31TCtxTB6G/t5OmsxOIIxQM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=DnOXjMXVn4ymg4zMmnM/+iVggHczKAhRUYRvqWXCufS8ayO6RwNBE9ZbLay5AXrCA n7sXRYlxw1xWHXMfhdNFFkw8FiaK05+7BGKEzxYtjUsd9Cu4rPgGGXVl6g9ECoeNsy 14qbB+0urgnG82odZ7l+ET9Vh8EhEPymGN8e4UuGZXSOIGQh2mMlwDdX19aJT0ZzfQ ow1t48ymacJmQ7JfnQCG9N3PhtT3bt71guyzJZToRW1lVaprV2MX3MUdL7dIYtZSPI os+pEQpKyxHvetdbTWUYMNjDAGVUJPZKWPRCsy+LUJWfR91eQ6HUkqeeXxMhstjMS2 RPisIy5cYq80A== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 84FECC5AD2C; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) From: Sanjay Chitroda via B4 Relay Date: Sat, 08 Aug 2026 22:28:14 +0530 Subject: [PATCH v5 2/4] iio: accel: mma8452: use local struct device 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: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-2-d177e93ce3f8@gmail.com> References: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-0-d177e93ce3f8@gmail.com> In-Reply-To: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-0-d177e93ce3f8@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Sanjay Chitroda , Andy Shevchenko X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1786208304; l=4596; i=sanjayembeddedse@gmail.com; s=20260702; h=from:subject:message-id; bh=LXfSnV6rBvAa1+8KwnMa4fMrZA8D3loMbNKlUnNF0CM=; b=6z8XKHl+BuAKd8GYNkxz87hJd+hu4XW3WvL62HT2idawPbRJYOaDq1q9SWAYiYQXUYKDprn5S p5VoV70kPblB9/h5rzHP0726fVhY5IGlVlIEA7moiXuHZ4RpK4ebteX X-Developer-Key: i=sanjayembeddedse@gmail.com; a=ed25519; pk=PcneEFtkmY+Ldl+KmOTpB/Q/HDsqko6Fb0/Z/5cuycI= X-Endpoint-Received: by B4 Relay for sanjayembeddedse@gmail.com/20260702 with auth_id=848 X-Original-From: Sanjay Chitroda Reply-To: sanjayembeddedse@gmail.com From: Sanjay Chitroda Introduce a local struct device pointer derived from &client->dev. This avoids repeated &client->dev usage and improves readability. Signed-off-by: Sanjay Chitroda Reviewed-by: Andy Shevchenko --- changes in v4: - address coding style comment given by Andy - v3 link -> https://lore.kernel.org/all/20260505174640.3998281-8-sanjayemb= edded@gmail.com/ --- drivers/iio/accel/mma8452.c | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 772463d5ff47..af0cc5970f3b 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -222,15 +222,15 @@ static int mma8452_drdy(struct mma8452_data *data) static int mma8452_set_runtime_pm_state(struct i2c_client *client, bool on) { #ifdef CONFIG_PM + struct device *dev =3D &client->dev; int ret; =20 if (on) - ret =3D pm_runtime_resume_and_get(&client->dev); + ret =3D pm_runtime_resume_and_get(dev); else - ret =3D pm_runtime_put_autosuspend(&client->dev); + ret =3D pm_runtime_put_autosuspend(dev); if (ret < 0) { - dev_err(&client->dev, - "failed to change power state to %d\n", on); + dev_err(dev, "failed to change power state to %d\n", on); =20 return ret; } @@ -1552,7 +1552,7 @@ static int mma8452_probe(struct i2c_client *client) struct iio_dev *indio_dev; int ret; =20 - indio_dev =3D devm_iio_device_alloc(&client->dev, sizeof(*data)); + indio_dev =3D devm_iio_device_alloc(dev, sizeof(*data)); if (!indio_dev) return -ENOMEM; =20 @@ -1562,10 +1562,9 @@ static int mma8452_probe(struct i2c_client *client) =20 data->chip_info =3D i2c_get_match_data(client); if (!data->chip_info) - return dev_err_probe(&client->dev, -ENODEV, - "unknown device model\n"); + return dev_err_probe(dev, -ENODEV, "unknown device model\n"); =20 - ret =3D iio_read_mount_matrix(&client->dev, &data->orientation); + ret =3D iio_read_mount_matrix(dev, &data->orientation); if (ret) return ret; =20 @@ -1598,7 +1597,7 @@ static int mma8452_probe(struct i2c_client *client) goto disable_regulators; } =20 - dev_info(&client->dev, "registering %s accelerometer; ID 0x%x\n", + dev_info(dev, "registering %s accelerometer; ID 0x%x\n", data->chip_info->name, data->chip_info->chip_id); =20 i2c_set_clientdata(client, indio_dev); @@ -1631,10 +1630,10 @@ static int mma8452_probe(struct i2c_client *client) if (client->irq) { int irq2; =20 - irq2 =3D fwnode_irq_get_byname(dev_fwnode(&client->dev), "INT2"); + irq2 =3D fwnode_irq_get_byname(dev_fwnode(dev), "INT2"); =20 if (irq2 =3D=3D client->irq) { - dev_dbg(&client->dev, "using interrupt line INT2\n"); + dev_dbg(dev, "using interrupt line INT2\n"); } else { ret =3D i2c_smbus_write_byte_data(client, MMA8452_CTRL_REG5, @@ -1642,7 +1641,7 @@ static int mma8452_probe(struct i2c_client *client) if (ret < 0) goto disable_regulators; =20 - dev_dbg(&client->dev, "using interrupt line INT1\n"); + dev_dbg(dev, "using interrupt line INT1\n"); } =20 ret =3D i2c_smbus_write_byte_data(client, @@ -1679,14 +1678,13 @@ static int mma8452_probe(struct i2c_client *client) goto buffer_cleanup; } =20 - ret =3D pm_runtime_set_active(&client->dev); + ret =3D pm_runtime_set_active(dev); if (ret < 0) goto free_irq; =20 - pm_runtime_enable(&client->dev); - pm_runtime_set_autosuspend_delay(&client->dev, - MMA8452_AUTO_SUSPEND_DELAY_MS); - pm_runtime_use_autosuspend(&client->dev); + pm_runtime_enable(dev); + pm_runtime_set_autosuspend_delay(dev, MMA8452_AUTO_SUSPEND_DELAY_MS); + pm_runtime_use_autosuspend(dev); =20 ret =3D iio_device_register(indio_dev); if (ret < 0) @@ -1721,11 +1719,12 @@ static void mma8452_remove(struct i2c_client *clien= t) { struct iio_dev *indio_dev =3D i2c_get_clientdata(client); struct mma8452_data *data =3D iio_priv(indio_dev); + struct device *dev =3D &client->dev; =20 iio_device_unregister(indio_dev); =20 - pm_runtime_disable(&client->dev); - pm_runtime_set_suspended(&client->dev); + pm_runtime_disable(dev); + pm_runtime_set_suspended(dev); =20 if (client->irq) free_irq(client->irq, indio_dev); @@ -1748,7 +1747,7 @@ static int mma8452_runtime_suspend(struct device *dev) ret =3D mma8452_standby(data); mutex_unlock(&data->lock); if (ret < 0) { - dev_err(&data->client->dev, "powering off device failed\n"); + dev_err(dev, "powering off device failed\n"); return -EAGAIN; } =20 --=20 2.34.1 From nobody Tue Sep 29 11:20:01 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 00CAB38552C; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786208307; cv=none; b=CtVlRfmlK8O+U5n0BO1x3YBWH6V2ASx0fX5eRjg4EvOt7Khv6HaMMuEnSEh8U+wrf/IYtqaMPrMzqcaLShWPCaWJmfXME9w43i92Xdmr0AUfWl9Wpnh+2OQaGYKQXdI+DtahUXFuYQkMhzwwurICvhbumE5bLRHNHUWbyuCf3iw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786208307; c=relaxed/simple; bh=NDE6IipBlhsaT+g1D3mNgxPcwiegRU0ZDshwteRu3w4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eFmYfNNxz5KDH7UEubuGRcz1CAmkzm0/2rF9X7Nyjb5UyqaKApFLD8IcLGe2j89jfHIF1kR8atjm8HoerARP6qOjM24G+843egnU1Wu7lMc04RK5R3CcBERGDof2UolsqDNEW6D67VYvPqgWMWHWCrdrebdNXYjhM/bTE2oVCdM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cqodsUIB; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="cqodsUIB" Received: by smtp.kernel.org (Postfix) with ESMTPS id B0C9FC2BCFA; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786208306; bh=NDE6IipBlhsaT+g1D3mNgxPcwiegRU0ZDshwteRu3w4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=cqodsUIBHI1J9piCwhb1GZKrnpEsoGLDYCtUhbd+1ljjcuw5ly24W2EBQ1GNTT/8g IrL13eQ8bC6A0BJID1qhrwNO3YLF35JMtzSZBjSt32s/4a9hhViboDaLSsQgTnZ9Xa pwQt8XC+52pvsurJ5CdZCzRchciito6PeX03aTuXewglfTJ9rGH2rEiGsDTCb/JhB6 Auo3+ihTDnuzXnMtoJq0ua3K7Tbgd7j1vxIYLurOPhrJoGs5D57dbLTCaLXHFGXitU rl7odWFkQ7K7d1P3dA57BfUX6/j6ADgGLMDj4K7rkrKpWy+d3VJWRwKSYPAl4gbPa9 203NQ8kuJt4BA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 99CFDC5AD55; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) From: Sanjay Chitroda via B4 Relay Date: Sat, 08 Aug 2026 22:28:15 +0530 Subject: [PATCH v5 3/4] iio: accel: mma8452: Use IIO cleanup helpers 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: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-3-d177e93ce3f8@gmail.com> References: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-0-d177e93ce3f8@gmail.com> In-Reply-To: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-0-d177e93ce3f8@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Sanjay Chitroda , Andy Shevchenko , Jonathan Cameron X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1786208304; l=1940; i=sanjayembeddedse@gmail.com; s=20260702; h=from:subject:message-id; bh=87TYvL0o2QU4xXLjLnpehxWEOumXzmAP5MZuj4hGTOY=; b=mW8z+UiW10SlOQe+VbolRQzbz2M+/KCjMLiGOfkD9sAYekBNdfEsrHbjhZorpf03YO5MCVkn1 0C8AZxvW9hMB4+YgA/ohAFvSFHQL0OovKRkz3qFSthLEj0P0S3nhLq4 X-Developer-Key: i=sanjayembeddedse@gmail.com; a=ed25519; pk=PcneEFtkmY+Ldl+KmOTpB/Q/HDsqko6Fb0/Z/5cuycI= X-Endpoint-Received: by B4 Relay for sanjayembeddedse@gmail.com/20260702 with auth_id=848 X-Original-From: Sanjay Chitroda Reply-To: sanjayembeddedse@gmail.com From: Sanjay Chitroda Use IIO_DEV_ACQUIRE_DIRECT_MODE() helper to automatically release direct mode. Suggested-by: Jonathan Cameron Signed-off-by: Sanjay Chitroda Reviewed-by: Andy Shevchenko --- drivers/iio/accel/mma8452.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index af0cc5970f3b..c78b1b742b08 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -495,14 +495,14 @@ static int mma8452_read_raw(struct iio_dev *indio_dev, int i, ret; =20 switch (mask) { - case IIO_CHAN_INFO_RAW: - if (!iio_device_claim_direct(indio_dev)) + case IIO_CHAN_INFO_RAW: { + IIO_DEV_ACQUIRE_DIRECT_MODE(indio_dev, claim); + if (IIO_DEV_ACQUIRE_FAILED(claim)) return -EBUSY; =20 mutex_lock(&data->lock); ret =3D mma8452_read(data, buffer); mutex_unlock(&data->lock); - iio_device_release_direct(indio_dev); if (ret < 0) return ret; =20 @@ -511,6 +511,7 @@ static int mma8452_read_raw(struct iio_dev *indio_dev, chan->scan_type.realbits - 1); =20 return IIO_VAL_INT; + } case IIO_CHAN_INFO_SCALE: i =3D data->data_cfg & MMA8452_DATA_CFG_FS_MASK; *val =3D data->chip_info->mma_scales[i][0]; @@ -777,14 +778,11 @@ static int mma8452_write_raw(struct iio_dev *indio_de= v, struct iio_chan_spec const *chan, int val, int val2, long mask) { - int ret; - - if (!iio_device_claim_direct(indio_dev)) + IIO_DEV_ACQUIRE_DIRECT_MODE(indio_dev, claim); + if (IIO_DEV_ACQUIRE_FAILED(claim)) return -EBUSY; =20 - ret =3D __mma8452_write_raw(indio_dev, chan, val, val2, mask); - iio_device_release_direct(indio_dev); - return ret; + return __mma8452_write_raw(indio_dev, chan, val, val2, mask); } =20 static int mma8452_get_event_regs(struct mma8452_data *data, --=20 2.34.1 From nobody Tue Sep 29 11:20:01 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 039A43859DE; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786208307; cv=none; b=Kz/jFSjoat4Sk7jFPhcjuWKUJwkVyht7fADT80qH4T4YcdSi8nV7YdtgiIjKxqIiQgh5500mpXnB2oz/nAvD1ldQKNF4o5ltRT8aoUcVCTpRpClkbyZms9mPv6zkh9P2/+XUMfTQPAQNMfJLzCnsnyFG23leMyY1q0O+P6xuyjI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786208307; c=relaxed/simple; bh=kVur/c2lmhRBF1BxLzgDZ6JCl3MBnHF89gEoZwZKFyI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FGrZ2aL4FXjAXHMmRqHsuPmYtOZqLCZZ85ctNvWJ6o3MBO4N2unTrmw/K8n1UBf7mo6dTMCcpVIwRfhQB9wrK8bky/9fr/ZrQXFkiKTHwV+BYSUp0lrEyn4ot7f2yi/iN3jG4pyu4BAlBiUB5JwfdCgURlAuhpwL1vgNQdYvJ2c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rYI2alaR; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rYI2alaR" Received: by smtp.kernel.org (Postfix) with ESMTPS id C0141C2BD00; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786208306; bh=kVur/c2lmhRBF1BxLzgDZ6JCl3MBnHF89gEoZwZKFyI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=rYI2alaRrBe9i8WI3T8amSj/JWnanpcUsAWNQJ+3O71GbSOSKAkLePFz8omf8y9Oq WG9jsrr5n+2mP00sjOQz9gcMeCVxoILSXTYco6Q660GkbrIPELh8iUFMHflhf0N72N GHnJpSgpTATlcfjKLiwD6PrWqg8hZcVG0xrQIhXliIVzDnDDSbUaKQ55ykiOWe9ljx D0AcC1jriSvEMF3kzaGVF1svrLwmBBPX8gvdsP3iw8eChgWwv1PyACo2YXztPquo9z SdEOYUEZS+efpyWxgqDvKQ04xeTA7H/LF+xzIoBhN45KrA3EB1h6y+sGZZeRjdmd37 y8tsHBx27mY7g== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id AC6DCC5AD56; Sat, 8 Aug 2026 16:58:26 +0000 (UTC) From: Sanjay Chitroda via B4 Relay Date: Sat, 08 Aug 2026 22:28:16 +0530 Subject: [PATCH v5 4/4] iio: accel: mma8452: use guard() to release mutexes 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: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-4-d177e93ce3f8@gmail.com> References: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-0-d177e93ce3f8@gmail.com> In-Reply-To: <20260808-15-apr-pm-iio-mma8452-v4-temp-v5-0-d177e93ce3f8@gmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Sanjay Chitroda , Andy Shevchenko X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1786208304; l=2727; i=sanjayembeddedse@gmail.com; s=20260702; h=from:subject:message-id; bh=OOn777kWwWFjPtK7zt9fE1n7hpyeCG6+jUtusY+qlS8=; b=b33Z14shYtJUPnJmEL3kbcN3hl/05xpqEbFgWEPtB7vz/L3aTDEGa3NGAXo6G74/GonguVDbb 4eRgvRTGpE4AHiPcawogliFAeEzY1ZBCeMSFpQT16ZMKclgci1hNOdy X-Developer-Key: i=sanjayembeddedse@gmail.com; a=ed25519; pk=PcneEFtkmY+Ldl+KmOTpB/Q/HDsqko6Fb0/Z/5cuycI= X-Endpoint-Received: by B4 Relay for sanjayembeddedse@gmail.com/20260702 with auth_id=848 X-Original-From: Sanjay Chitroda Reply-To: sanjayembeddedse@gmail.com From: Sanjay Chitroda Replace explicit mutex_lock() and mutex_unlock() with the guard() and scoped_guard() macro for cleaner and safer mutex handling. Signed-off-by: Sanjay Chitroda Reviewed-by: Andy Shevchenko --- changes in v4: - add blank line with input from Andy - v3 link -> https://lore.kernel.org/all/20260505174640.3998281-11-sanjayem= bedded@gmail.com/ changes in v3: - Following input from Jonathan extended mutex scope for IIO_CHAN_INFO_RAW case to include math operation under lock - v2 link -> https://lore.kernel.org/all/20260422165643.2148195-7-sanjayemb= edded@gmail.com/ --- drivers/iio/accel/mma8452.c | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index c78b1b742b08..fe62a903f0e2 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -19,6 +19,7 @@ */ =20 #include +#include #include #include #include @@ -500,9 +501,9 @@ static int mma8452_read_raw(struct iio_dev *indio_dev, if (IIO_DEV_ACQUIRE_FAILED(claim)) return -EBUSY; =20 - mutex_lock(&data->lock); + guard(mutex)(&data->lock); + ret =3D mma8452_read(data, buffer); - mutex_unlock(&data->lock); if (ret < 0) return ret; =20 @@ -600,36 +601,30 @@ static int mma8452_change_config(struct mma8452_data = *data, u8 reg, u8 val) int ret; int is_active; =20 - mutex_lock(&data->lock); + guard(mutex)(&data->lock); =20 is_active =3D mma8452_is_active(data); - if (is_active < 0) { - ret =3D is_active; - goto fail; - } + if (is_active < 0) + return is_active; =20 /* config can only be changed when in standby */ if (is_active > 0) { ret =3D mma8452_standby(data); if (ret < 0) - goto fail; + return ret; } =20 ret =3D i2c_smbus_write_byte_data(data->client, reg, val); if (ret < 0) - goto fail; + return ret; =20 if (is_active > 0) { ret =3D mma8452_active(data); if (ret < 0) - goto fail; + return ret; } =20 - ret =3D 0; -fail: - mutex_unlock(&data->lock); - - return ret; + return 0; } =20 static int mma8452_set_power_mode(struct mma8452_data *data, u8 mode) @@ -1741,9 +1736,8 @@ static int mma8452_runtime_suspend(struct device *dev) struct mma8452_data *data =3D iio_priv(indio_dev); int ret; =20 - mutex_lock(&data->lock); - ret =3D mma8452_standby(data); - mutex_unlock(&data->lock); + scoped_guard(mutex, &data->lock) + ret =3D mma8452_standby(data); if (ret < 0) { dev_err(dev, "powering off device failed\n"); return -EAGAIN; --=20 2.34.1