From nobody Mon Jun 8 04:27:38 2026 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (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 846BB3E7BB6 for ; Tue, 2 Jun 2026 13:29:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780407000; cv=none; b=NPfpDRq1zhuKqztg2MApiH+/k1cJPXDOnzt0nVNUNqaHNX2IgBH+FV4VCEhUgdl7Q/lM+vmyotJo6pTyuWdXqc6DzfN34BuOHIYSSjpMA9XAIfy5Eg1rLYl3IpGz6dbyY5WlXjzZD/0LLLG9mDEy4jlKQsYBA3dPM7zRDog/TZE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780407000; c=relaxed/simple; bh=Fa9r7MLTB3iX047+Vsi5imvyqmNHFXgMUgJ+vFWwYYE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cs9oHfxoxPnl5Ucfer0dwFOHIaFlpMiiogoIeO7YnJrir3f7MQloLW627s8tZ9GG7mLdiXiCp1eaS6CEud+cidv6uNteiTQAiuZV8T4lfqzb+kC2kC8ZXbHbPJcH9pkX9Q953UNp0YhEMxObGD8dVJRSvhpXx8T3ixIWcDPhVkY= 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=HhQgwWHE; arc=none smtp.client-ip=209.85.214.180 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="HhQgwWHE" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-2bf55c39e16so12909905ad.0 for ; Tue, 02 Jun 2026 06:29:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780406994; x=1781011794; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=KCK/pBOSfb2PmGw6nhVQkWTZvBIjCGaZdFKlWF4SGdk=; b=HhQgwWHEFDM2imYhr6+/4KmF0lZaODSCP2/1mK9SfQrvcIojH/PKIYF1xx/sce6pKn BudR8RcqFC/9NK7owwpJ+87t4BqsZErQPxZ6r0rEdzrc8mA05H0FZPioTVIK/wHYbIWK 1Clvgqd8HDlhHDK/FGS+LUOsgC3KmUGnbT9RQ6Vz49qHgu+8WkFNYu5qDfxvSHmyB2FB JDQqVNG7SLyYG5IJuyqMwGuuPOkvDdzDNoGma/iig5Tt3ywr4pJ0U7nba/JT3apYn1l4 OZ7RAYTOVytAN/IVbmJHKDGmRwcHrDDPU/W8iuzW57Qhv/tw4/IS1yBdcBuNXigrCHrG R3QA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780406994; x=1781011794; h=cc:to:in-reply-to:references: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=KCK/pBOSfb2PmGw6nhVQkWTZvBIjCGaZdFKlWF4SGdk=; b=OaOdrMXuRhYnbXytE8MORSuIIbsk4Rl7fxCweFfIIjEAibmd//llnIm064/iiiCfnV ngDWci2Dbkv7ahX/RBsgF2keG3lYWQ5Bf//iqB6yJhwQZdDF7iRSTR5x8NXu1MtyVreL Negg/4ZgjlKTfIVUJ8zRbD1632FV7HfEbzj3zovXycJEGjxrqNKoi0Z7D8mUKsCLffAu OIbQNy49RuY2HJLNlMWGa94oI727WBx45rmwMb5QucDtX0DcpppM88FdVfvGybY0AqIp OORdIk6dQz2jVAY8ht6eSLclh8iwfpOh8DATmKzY76eg4RQpVfdWX7hPwjATSGqcbs3x dcVg== X-Forwarded-Encrypted: i=1; AFNElJ/We6jikkcoFu7zMgnPwwvImu90TIRHReBs9NAOSQ41PYIFTioLLLe6v1GxcN9Olg/dJ4RValtLqs0CRGs=@vger.kernel.org X-Gm-Message-State: AOJu0YydY4w1ep9CwfJdG64G4CLAblRwYRxNUuHlOvZmGenqywdGe9jJ mj7elXpmYTL6xIRT2AVZGrLkCoj/F/nTC+ZDD1B/fCMN/0u6rpm61zdh X-Gm-Gg: Acq92OGOebnc4PEe5clfM5tDGGqn5Xy/M5dxuGyL0e3OQvqew34hjFy09aPfcwRnwjQ xs+lVnmRTj0M6Z+ZGvZz7HobFJ4E67IrEhwItAhJMZY3Q0XATnV3wUmtA24rDTbQxmRg2fY79Hr wR5vWz973j689AfRqOjkY2fPjkdk3iLTBXnNozyUfgWhONnjUF2Kv5J3OGAGQTMPhbiAMw+JSaU umimRRFMkgIqng8nELmxdcYJ0nYk5VtAYackF6VfBf4sD8eAJd98RRQThe4HZMZxvNlp/7uTF22 3L7BwIsh0fnrl8EtxxBtWoTJaRWKb38zqnWec0qD/LADtGeqdp8F5TguLDjIRdmsRkgFuAJkV7u hW/92raYHi6jK2YxD9fNvXQTRlq9kvtLrK9AB5sHFnHpa3LDjPE1gdOEjaZrpSHgwxz1SglQXfV jBT0/DdKPlsxYy1i0Ta8/ofooZte6Gj4LTitQOaQzBojlr69MLA4Ga4t+aVKU= X-Received: by 2002:a17:903:41c6:b0:2b0:6068:4c5f with SMTP id d9443c01a7336-2c10cc35557mr37132975ad.8.1780406994403; Tue, 02 Jun 2026 06:29:54 -0700 (PDT) Received: from hu-ckantibh-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bf23a1ee6esm148548215ad.33.2026.06.02.06.29.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:29:54 -0700 (PDT) From: Sanjay Chitroda X-Google-Original-From: Sanjay Chitroda Date: Tue, 02 Jun 2026 18:59:22 +0530 Subject: [PATCH v4 1/5] 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: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-1-26d6dff8fc55@gmail.com> References: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-0-26d6dff8fc55@gmail.com> In-Reply-To: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-0-26d6dff8fc55@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 , Jonathan Cameron X-Mailer: b4 0.15.2 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 1403b32e2b21..a44b2138951e 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 @@ -111,8 +112,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 { @@ -1570,25 +1570,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) @@ -1723,10 +1713,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; } @@ -1748,8 +1735,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 @@ -1767,15 +1753,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 @@ -1788,16 +1768,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 @@ -1815,8 +1788,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 Mon Jun 8 04:27:38 2026 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (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 4E0683DBD54 for ; Tue, 2 Jun 2026 13:29:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780407000; cv=none; b=Y9CyjwAFzSR5i7LYnb5pGRaWh6OWAbjEt5xwQoiz3AbsiJRU60DuX9+cI0hQvxJs67MO2dMTnLbctK53rjBO7QYK23c74tBhKtJz+rj3NBTrAYtc5Tf+1KTOJHOx32HCXlrtH6+hB7jwt4GOmOcL2Dnt2Je5MvUVEYl6KuVFYqg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780407000; c=relaxed/simple; bh=5luNUag2LdyDi5VqrC1aIszbCLtLxoCrzOEgPLO3Ebg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sspPeoNXgZCUB3Y/OcX8PeJBOgXJHrPpAJfRGjCHMFZwTa6U/mr4WWR7Do2jWTGFQayOwIlhuYAsBjVZ3Hcy6xhly+sezhcDgMn51GcqbX6UsWE3wPo+PxSrM2uGy+dcqCKckAnqd/+tQrE3zn+1Hqh6ELFkOWYzmnr3M5lCjG8= 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=dNDpXUXI; arc=none smtp.client-ip=209.85.214.174 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="dNDpXUXI" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-2bf2247e38eso35865895ad.3 for ; Tue, 02 Jun 2026 06:29:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780406997; x=1781011797; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=y4tHaCTkkKCoM4U1oOnmJumPoDSJ1Hmje5FiTiMmUUs=; b=dNDpXUXIEqTRkoQUpObTQ0lDt79vtpOnUoL+vo16VFxhcIVVZItLa8uGyjKdFUbArA QO7YB753eV+7OeU6FKN6yszZ+LB64ZmhP85+qCQnXE38G2iDjs/5EQ8+dvuArGBHu7mN tKOCeaIddM9LJ8c85ur3MK3bHXWvqkfYvl4AvouCO0Vw/B1mydF6AFNc8hfx1PMqYlAt D1cqUIapZb6OxRJ/M0w0a1TsYz93TEnDRpX1VWhbTuJ/f7/+hN0GhhGoztb39LdRL0n3 0e7VT40DF7oKo5HBBEhExEh6we5toc+tJEM9BLSXpK5qZZYZUEKfXBdENJ4xF6KnYjGP 2gbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780406997; x=1781011797; h=cc:to:in-reply-to:references: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=y4tHaCTkkKCoM4U1oOnmJumPoDSJ1Hmje5FiTiMmUUs=; b=CU96WsHOpKudI/5mD6o+W94GamoOqwQwq444Owf5xQkKr31J1kZbVbj/PXxFT2cnCR 3HnLwm+n3sft6JsOrOaZrk5oImNZgtjEnsb7rzMULte8/RwahKwN1cThv2ygQPA0toOW LNyTddqklg1QzqK8OmXW/Nx6ZOaKRKKqt18Bd18SsSqt+g3VuRI48tGsLRla+V3COrtf 2FmVqrqhlkNgC4CsDjlQDg2G4fHIVtfdvu29izWvF50Di7GTxL5NQtB2IHIElpDS9moU GawDFJO69KNd7I3BbbO6EO1+/lzMtgSaGjMPsQ/Umr+edKVC6dJ5nYPyG61PlWPBhNIh V3JQ== X-Forwarded-Encrypted: i=1; AFNElJ9MBQ051Hecc+VeuOFhO4G3Gwq00diYy1CyQojLIiHjWI6nTopJLkKVLRcnDpA1OrvW6IleuJOajO+ZEgk=@vger.kernel.org X-Gm-Message-State: AOJu0Yz8vnXqdsFxLBmZJhBZ71srXPcMat0e/JFW8+cbmsrpy/yrVZ1E XpefZ1QBnLybdMLlicUXEn3DPpoDzIdEYxtzTYen01yfLgGWcKrT3+kZ X-Gm-Gg: Acq92OE/6ahRYDzerss5kL0UfH1S+pAPByRqWq4PSfhmMYphcjuWaWFVYabUBzeyA9b m9P6DPZIvYuDzo2OyE+/Z0lS+g0gKO3I3xHU9WREa2oQpqcZNX9z6cq9NatffmML6uQi8R4ee98 QGNF0WzBXU7WrsEh/NmqCN82uJe8tJe8XqpKL8C+ATDGaP2AamS3K5OnBLY80yM0+iLb9aplYA4 BhSGvMI2emvrRuJBsHrf6FHeAe4fN3CIXcAzhXpOeoCnmP0P32bMlnjl8Y5bar1TquDU5pLzIV3 WPWVAUZEUMSMaz4Y6FY+h8b0LLzd/QLQYdFj727Knh3q5mmPF4pqSkMgPVUSHdx34m9Ev6dm8jc f/CYuct3v4MQ6LSzG89XREGa8ojvYvYrEldOlEfXsZjU04HZvgm/oIbv2SoGCaBdHXfaWpi6lQB wFoAoTmAY/NX80vcQBHT9E43a3Ug4rSfw0l8tXRX616i2WAGPDDrQd8/q2SlM= X-Received: by 2002:a17:902:e785:b0:2bd:d7b5:83ed with SMTP id d9443c01a7336-2bf368d10d5mr180385505ad.39.1780406997375; Tue, 02 Jun 2026 06:29:57 -0700 (PDT) Received: from hu-ckantibh-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bf23a1ee6esm148548215ad.33.2026.06.02.06.29.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:29:57 -0700 (PDT) From: Sanjay Chitroda X-Google-Original-From: Sanjay Chitroda Date: Tue, 02 Jun 2026 18:59:23 +0530 Subject: [PATCH v4 2/5] 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: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-2-26d6dff8fc55@gmail.com> References: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-0-26d6dff8fc55@gmail.com> In-Reply-To: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-0-26d6dff8fc55@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 X-Mailer: b4 0.15.2 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 a44b2138951e..1d4ea614cb57 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -223,15 +223,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; } @@ -1553,7 +1553,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 @@ -1563,10 +1563,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 @@ -1599,7 +1598,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); @@ -1632,10 +1631,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, @@ -1643,7 +1642,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, @@ -1680,14 +1679,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) @@ -1722,11 +1720,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); @@ -1749,7 +1748,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 Mon Jun 8 04:27:38 2026 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (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 5FA573E8324 for ; Tue, 2 Jun 2026 13:30:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780407004; cv=none; b=oMtmEfLbXar2sTEJ2r08QravQVNMSyR7SIP1R9uaBegWpGKN2LrLpKtympJeGYXmhcNQuJ51QlQNRR0mseVKfMGUfdtHhw+YdslO/IO3/SDYKm+xO6zIKhC0KN+7ZLcCVFAFIbTUOPTWilDzUjRhdG43XL5wCORDp9Q+CYCVmXs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780407004; c=relaxed/simple; bh=UAxysoLOtPXkCKKBbVeZ/NdrEshD67y9hT16xuUyyNY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o5XOrlnPRh/bUuO6X3K/O++6k4OIIj7iyYPPUg3IuHUbTQ+SjrSEzdyeRackqz8MM84TafnsiE1E8GgmMCJirotZFZ6eeb1+N42acLZT1UYbQFSgy0SawBBVmtp7CmmDwjCS1IRJUAhw0AXKVSAh4fRKiL8pi+jnU+iJe7FoEnA= 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=CLIUbTZ3; arc=none smtp.client-ip=209.85.214.174 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="CLIUbTZ3" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-2c0c3315c5dso26299435ad.3 for ; Tue, 02 Jun 2026 06:30:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780407000; x=1781011800; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=YboqZEuw+gOjdr1gHfn4j6PrFCUPhfLuODlwaL1RxTs=; b=CLIUbTZ3SfaFkdrM9EtRZ3aAvPlQ4eKkih4HIkJNbUplNA0Er2V8jsm94lhmCa83RF HutKrN+nj6TgP5LTiMkKNBYj/Ykr6GEdTorCvK2iFKi6x/q22XoceMiaX/wKoHP/rAIV BCCO5tIJw7euVBJ8vphaJmFwVT/LNHn2qzlpVZAEa2ktBUaH2mAHGiw7lCCdX+Id/1iq RBB6oybw9Tmex6awratzSUrDFLZ2mFuS7fwM5ctzfrDP6XhkgnXllvtoOEKbEhhOKvyM iI2qvzk5TB+1Yy/MfAJQiN58bGV4tGve5qjjY3S4Oute1OYzojEqsRr6KCNcwPy29Cvb ECYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780407000; x=1781011800; h=cc:to:in-reply-to:references: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=YboqZEuw+gOjdr1gHfn4j6PrFCUPhfLuODlwaL1RxTs=; b=C4oG6txT+/l9FVXcrEsXy0k4ad8OROWvYA+Kr/xR0crXXZpJG056SUOQYOw1pms3Z3 kvlBZiBNydMLRKBjt/9q6U9s2n/BQagu3pgmVxyBJpmH0u7N0EhOFR7ZJETJgBsQ1sBZ FUds2KstRx5BUoWovcy9SK2RYO+sS9XwtrEt4/gmrrUVA5+kw8UqkPp8LU8bobOoolR5 Ot37pykCd3gVeEzHJpHb0m0iehFSq0JPxYbHSLVOdQn5oyQYUUjWCpLCWhcUw0Iq4CB/ g5FPQXKB2isFYVH3agynwdAyJPmsJ9M7E8A88k6KPdyi5u2F0eRmAYD30l6386EOtcWr RJWw== X-Forwarded-Encrypted: i=1; AFNElJ+FgZe8IxpJ5bsn+y4cWLXYSYjxDeCgCChTwjqDOtZn9Xzv36c9Jxiknhb3UQY8h043KCfVS6ODOcfxJoc=@vger.kernel.org X-Gm-Message-State: AOJu0YyQxsBt/rBIJtmSJjVoEdqWstHdA0eFnONnm6DOExYf14MrioGd 9MkMNe2oHR0IWcHyH9gr6uYzr0w+Cch+8Bu3SW4CVXPtywmmhzoglObK X-Gm-Gg: Acq92OH6xYtIiNAWjEk5tLQJNWk2YXzPOnVn/Dqwp1C8I5NjFenD8XrYoWqTIWAatWo s7nUpd2aCt7I5Via8Etu3dResdzm76z3IGImmivyU06LmZmxnEO8pyOmzzRaSPAgZAtiV+5Th1x I4//6vkcGaTQAJip88wc7R6dHtgMoyjnwuwHkfID9419VdPxLwPbGlJqD1VvWpQtjGXXjEn4p35 V7uDruCu0onhdsXtSt0c3n1YyZUVlKgbH8Fhm/rpzOkgLlCbB5svBRmd3GrjBV46aQTk1yr4Rig /8NwGfiVOQOrBf6FN3PYYaZQ/p3tWDKC23eTZqMLliU2xUFusQKb7NmeQtuTnTIibBwJTLNuIXU CuLjcx5Ul0vcS4nHD4J78vgny+uQQKOyLxtEsy+3zc06hDyKi44XUNwfHCiwcS6Z6sNxf5OLZjU fnhYlGfBZIo1ljopIjfQPgmnD72Wv8acMFdEgBHlQvMPtySFu2bVY0xzfh26c= X-Received: by 2002:a17:903:2407:b0:2c0:d1ad:d123 with SMTP id d9443c01a7336-2c0d1add87emr116231755ad.39.1780407000413; Tue, 02 Jun 2026 06:30:00 -0700 (PDT) Received: from hu-ckantibh-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bf23a1ee6esm148548215ad.33.2026.06.02.06.29.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:30:00 -0700 (PDT) From: Sanjay Chitroda X-Google-Original-From: Sanjay Chitroda Date: Tue, 02 Jun 2026 18:59:24 +0530 Subject: [PATCH v4 3/5] iio: accel: mma8452: use pm_ptr() and direct runtime PM calls 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: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-3-26d6dff8fc55@gmail.com> References: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-0-26d6dff8fc55@gmail.com> In-Reply-To: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-0-26d6dff8fc55@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 X-Mailer: b4 0.15.2 From: Sanjay Chitroda Use pm_ptr() together with DEFINE_RUNTIME_DEV_PM_OPS() so the PM ops pointer is automatically handled when CONFIG_PM is enabled or disabled. Switch to direct PM runtime calls and drop mma8452_set_runtime_pm_state() wrapper, which is no longer needed. While at it, fix runtime PM handling in several paths to ensure proper balancing of pm_runtime_resume_and_get() and pm_runtime_put(), avoiding usage count leaks on error paths. This follows modern kernel power-management conventions. Signed-off-by: Sanjay Chitroda --- changes in v4: - fix runtime PM handling by balancing the refcount with input from Jonathan - v3 link -> https://lore.kernel.org/all/20260505174640.3998281-9-sanjayemb= edded@gmail.com/ changes in v3: - Use direct PM runtime calls and drop redundant wrapper along with CONFIG_= PM - v2 link -> https://lore.kernel.org/all/20260422165643.2148195-6-sanjayemb= edded@gmail.com/ changes in v2: - Use DEFINE_RUNTIME_DEV_PM_OPS to address review comment and resolve 0-day= bot warning - v1 link -> https://lore.kernel.org/all/20260414192045.3598010-1-sanjayemb= edded@gmail.com/ --- drivers/iio/accel/mma8452.c | 110 ++++++++++++++++++++++++----------------= ---- 1 file changed, 59 insertions(+), 51 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 1d4ea614cb57..467e42c2c0dd 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -220,43 +220,21 @@ static int mma8452_drdy(struct mma8452_data *data) return -EIO; } =20 -static int mma8452_set_runtime_pm_state(struct i2c_client *client, bool on) -{ -#ifdef CONFIG_PM - struct device *dev =3D &client->dev; - int ret; - - if (on) - ret =3D pm_runtime_resume_and_get(dev); - else - ret =3D pm_runtime_put_autosuspend(dev); - if (ret < 0) { - dev_err(dev, "failed to change power state to %d\n", on); - - return ret; - } -#endif - - return 0; -} - static int mma8452_read(struct mma8452_data *data, __be16 buf[3]) { + struct device *dev =3D &data->client->dev; int ret =3D mma8452_drdy(data); =20 if (ret < 0) return ret; =20 - ret =3D mma8452_set_runtime_pm_state(data->client, true); - if (ret) + ret =3D pm_runtime_resume_and_get(dev); + if (ret < 0) return ret; =20 ret =3D i2c_smbus_read_i2c_block_data(data->client, MMA8452_OUT_X, 3 * sizeof(__be16), (u8 *)buf); - if (ret < 0) - return ret; - - ret =3D mma8452_set_runtime_pm_state(data->client, false); + pm_runtime_put_autosuspend(dev); =20 return ret; } @@ -975,6 +953,7 @@ static int mma8452_write_event_config(struct iio_dev *i= ndio_dev, bool state) { struct mma8452_data *data =3D iio_priv(indio_dev); + struct device *dev =3D &data->client->dev; int val, ret; const struct mma8452_event_regs *ev_regs; =20 @@ -982,17 +961,22 @@ static int mma8452_write_event_config(struct iio_dev = *indio_dev, if (ret) return ret; =20 - ret =3D mma8452_set_runtime_pm_state(data->client, state); - if (ret) - return ret; + if (state) { + ret =3D pm_runtime_resume_and_get(dev); + if (ret < 0) + return ret; + } =20 switch (dir) { case IIO_EV_DIR_FALLING: - return mma8452_set_freefall_mode(data, state); + ret =3D mma8452_set_freefall_mode(data, state); + goto pm_runtime_put; case IIO_EV_DIR_RISING: val =3D i2c_smbus_read_byte_data(data->client, ev_regs->ev_cfg); - if (val < 0) - return val; + if (val < 0) { + ret =3D val; + goto pm_runtime_put; + } =20 if (state) { if (mma8452_freefall_mode_enabled(data)) { @@ -1004,19 +988,31 @@ static int mma8452_write_event_config(struct iio_dev= *indio_dev, val |=3D BIT(chan->scan_index + ev_regs->ev_cfg_chan_shift); } else { - if (mma8452_freefall_mode_enabled(data)) - return 0; - + if (mma8452_freefall_mode_enabled(data)) { + ret =3D 0; + goto pm_runtime_put; + } val &=3D ~BIT(chan->scan_index + ev_regs->ev_cfg_chan_shift); } =20 val |=3D ev_regs->ev_cfg_ele; =20 - return mma8452_change_config(data, ev_regs->ev_cfg, val); + ret =3D mma8452_change_config(data, ev_regs->ev_cfg, val); + goto pm_runtime_put; + default: - return -EINVAL; + ret =3D -EINVAL; + goto pm_runtime_put; } + +pm_runtime_put: + if (state) + pm_runtime_put(dev); + else + pm_runtime_put_autosuspend(dev); + + return ret; } =20 static void mma8452_transient_interrupt(struct iio_dev *indio_dev) @@ -1453,22 +1449,39 @@ static int mma8452_data_rdy_trigger_set_state(struc= t iio_trigger *trig, { struct iio_dev *indio_dev =3D iio_trigger_get_drvdata(trig); struct mma8452_data *data =3D iio_priv(indio_dev); + struct device *dev =3D &data->client->dev; int reg, ret; =20 - ret =3D mma8452_set_runtime_pm_state(data->client, state); - if (ret) - return ret; + if (state) { + ret =3D pm_runtime_resume_and_get(dev); + if (ret < 0) + return ret; + } =20 reg =3D i2c_smbus_read_byte_data(data->client, MMA8452_CTRL_REG4); - if (reg < 0) - return reg; + if (reg < 0) { + ret =3D reg; + goto pm_runtime_put; + } =20 if (state) reg |=3D MMA8452_INT_DRDY; else reg &=3D ~MMA8452_INT_DRDY; =20 - return mma8452_change_config(data, MMA8452_CTRL_REG4, reg); + ret =3D mma8452_change_config(data, MMA8452_CTRL_REG4, reg); + if (ret < 0) + goto pm_runtime_put; + + if (!state) + return pm_runtime_put_autosuspend(dev); + + return 0; + +pm_runtime_put: + if (state) + pm_runtime_put(dev); + return ret; } =20 static const struct iio_trigger_ops mma8452_trigger_ops =3D { @@ -1737,7 +1750,6 @@ static void mma8452_remove(struct i2c_client *client) regulator_bulk_disable(ARRAY_SIZE(data->regs), data->regs); } =20 -#ifdef CONFIG_PM static int mma8452_runtime_suspend(struct device *dev) { struct iio_dev *indio_dev =3D i2c_get_clientdata(to_i2c_client(dev)); @@ -1791,13 +1803,9 @@ static int mma8452_runtime_resume(struct device *dev) =20 return ret; } -#endif =20 -static const struct dev_pm_ops mma8452_pm_ops =3D { - SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume) - SET_RUNTIME_PM_OPS(mma8452_runtime_suspend, - mma8452_runtime_resume, NULL) -}; +static DEFINE_RUNTIME_DEV_PM_OPS(mma8452_pm_ops, + mma8452_runtime_suspend, mma8452_runtime_resume, NULL); =20 static const struct i2c_device_id mma8452_id[] =3D { { .name =3D "fxls8471", .driver_data =3D (kernel_ulong_t)&mma_chip_info_t= able[fxls8471] }, @@ -1814,7 +1822,7 @@ static struct i2c_driver mma8452_driver =3D { .driver =3D { .name =3D "mma8452", .of_match_table =3D mma8452_dt_ids, - .pm =3D &mma8452_pm_ops, + .pm =3D pm_ptr(&mma8452_pm_ops), }, .probe =3D mma8452_probe, .remove =3D mma8452_remove, --=20 2.34.1 From nobody Mon Jun 8 04:27:38 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (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 5EB483EDADC for ; Tue, 2 Jun 2026 13:30:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780407006; cv=none; b=PAwgWAdmQ3Lpz2CqSHbBLnOyZWnnjvHkQo4G2n7WNq3vWrsIe/oYRKeraZuy+qr5iqxZO61/OCr7Pf1UlDU8rmZXGN7v7RSzWCRzyy/Ra+7NZb5fr6qHSkeeAVRZYIetCmp1QAL1+KA/h6FF47gQOk2xvGhk36o1wZNfNtwvPLQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780407006; c=relaxed/simple; bh=n0Gc0hfHQ3dPC6EJ+EtDsO1JzSsFbQtFQKtlLtnRfH8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SjzWbk4OPsPdF0U1ZTRGUwWvdU0F6enJ1ng7KnnTievAI7z3hAeLNY+S5Ah9gJdvnJoD/o6D7gksMv1IWKRLXlpqf/071dqcJUnCXLYVhCgPGUIZNr17REU2sbnLMx6BePl5KrwaoAyqRlxPg4vcI5kGh5LIEnW5mA2oQMs32OA= 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=Bsi5M4Ve; arc=none smtp.client-ip=209.85.214.175 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="Bsi5M4Ve" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2c0bb4a94b8so19410345ad.2 for ; Tue, 02 Jun 2026 06:30:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780407004; x=1781011804; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=GRawE+03HLqYe9WWPeYYzo+Zy0xXNfsx59H3U6+0IQ0=; b=Bsi5M4VeSPRAIf4KH+4w5ArJyY8FIAqjcvcLBgNWxqfLrk75b8m/zUcpksGfH2dQ8f +Rv+kHFfPTDzEFCbIhsHShmxydTPhjWlkyXizxs1kRAoD0aqgPWiRV8I5FomPKmRR5nC PTDKedgqR/HyvzEb2iUXu0T+ab5cOAjmjnj/e+fzf2iBCU0n8jE4NAGVcYfZEY8mwbXl o4fuON1Zj2zbE1kIUeH3iPE5P8Cn6p/VIBU8+S1conHBFPVqD+lMewnH/DjcuakUzBk4 F2YN4uyJbzlR3EXVANoYmXzL4+918pKMRm2A8eYenUOPgwNN39u6NxhS9VYTsC0ASc4U xQyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780407004; x=1781011804; h=cc:to:in-reply-to:references: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=GRawE+03HLqYe9WWPeYYzo+Zy0xXNfsx59H3U6+0IQ0=; b=JuBHvoWMgbFAEpIXh5UV62mZTMoocZGYjncUFhSg3XCVblvKt4U2335Oe2k55to9t3 68qOh4e794OgkRB2IMcsyfjdYuG2RzW6bgOT5g6Yw86WOVSTM8LpeMGBLv3QpmzyrYOc N8mep/kACs3dUDOTSXAICu1CS3yoADWO18S96KUwoteJKU61oYPugXhI1EpY8AFDT0lu dW7dU1glpbaC73grVirmm1R7UOKW1SNfakyuqqn5KoX6WFEJ7r+liyeWy8URv3JH/WJc SUGMj3VsiKSAhOzJIZy0Ik70E+PGTYtLws3JgEvoBrN/YCsY9OJ6b8kIp4sRSNeBk+zh pAjQ== X-Forwarded-Encrypted: i=1; AFNElJ8cVBqpJ5Y3qORbhW8ztslB0NI7dYIW1e5hSSktvN/D1SJmq78FifQByxm5Y1vNuHN4YJl1EX6a5KRcXnE=@vger.kernel.org X-Gm-Message-State: AOJu0YzlXF0HTAXNzB24PYPkFWGori4JUZ/796dmX3DaoHdW7+DgHT7B eZ3kD+lPq0skDwrWBjimLsG7LorIo2KniU4NfI8FAo+Lqeu551AVnEAg X-Gm-Gg: Acq92OHLETkEKQLkOHotZcL8NS9sRwAwzP+DM1UH9z9y++8T9sRtMGfwWz1H9XsAx+M s6MTzbZF5baNidXVe7vaA85iwCXG7y5a3FgXuStFpQGSusGmpNN+Ux0L/SNscn6hF7wzZx+jv5/ q/OmDyAOs562yv34Ml+nPnDCydeiUrVmw1nIxpfFysSLuqJnNDLKo8xBnSFHrAni6qoaX5Aokl/ RPIfz3aQEliNlcFjdIPBsjPwQ+f6qRFyzy+ZJg1d0QOw4JeAlyP/rxHLT4cvBlA8L7S6oTwUdNH 1Gatkb3FU8V1cju3QESeM6Od5qkGVhEUlYj7C27Ej4kD5LBqsLtAuADgvttiFmAUTvIw3WVN7a9 o4DiuujIIGAz5xuIGlQPXCW6SRvT5JnjptFd6q3/KDaTd1GjMho/DvnKA0w30pUVgsCBYBHFXuO dMbcjbyftDZ6U8hKIoyysj7F/fl73AuU/7tt8fupZZht5SD4tPULJUq3zefaE= X-Received: by 2002:a17:903:1905:b0:2bc:db35:96c7 with SMTP id d9443c01a7336-2bf36845822mr177128685ad.28.1780407003393; Tue, 02 Jun 2026 06:30:03 -0700 (PDT) Received: from hu-ckantibh-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bf23a1ee6esm148548215ad.33.2026.06.02.06.30.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:30:03 -0700 (PDT) From: Sanjay Chitroda X-Google-Original-From: Sanjay Chitroda Date: Tue, 02 Jun 2026 18:59:25 +0530 Subject: [PATCH v4 4/5] 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: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-4-26d6dff8fc55@gmail.com> References: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-0-26d6dff8fc55@gmail.com> In-Reply-To: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-0-26d6dff8fc55@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 , Jonathan Cameron X-Mailer: b4 0.15.2 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 467e42c2c0dd..85dfd854e2b6 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -474,14 +474,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 @@ -490,6 +490,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]; @@ -756,14 +757,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 Mon Jun 8 04:27:38 2026 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (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 950843EC2E1 for ; Tue, 2 Jun 2026 13:30:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780407009; cv=none; b=AzYStHAPMyHA/nfb6a/AjDmxpIBsaQ0MVKLQYArb6Mgdj213IzRL+XzVKthqwUQL2/pAx6Wl44zW0O3pmtqBMZo8m6g3Fs+OTAgjYuiKyNpYEWDesauj4sZTNDp2jHQWOofivhE5fGGKUjoH6BtFEbIVgd6OSBEFJ20bt3/SRd0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780407009; c=relaxed/simple; bh=bWoSpvjx9PJhjBwwPPoW18WWraT/qFEhK2vRseW0WTQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KdSTc12GMe74qlnnLyTrYWXvn9q6uquu1bfbVYV5tqVL0j/W55IwU3TYUlF2ZAR+S+oXcnDlS9g5gLamCgX8v6Euy+WY7Wf1eDDkUtu4n6XW6XsCjjXZUKcops+Xtni+7F4jCrFGV+2G7cer2Tru6M73150O/aatpwVQI8kg68s= 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=aMvTg1PQ; arc=none smtp.client-ip=209.85.214.179 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="aMvTg1PQ" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-2c0bb4a94b8so19410825ad.2 for ; Tue, 02 Jun 2026 06:30:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780407007; x=1781011807; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ZtVC9C1cbta0kyUKVT4fHKeIkf1F//8fOgyITkkyulg=; b=aMvTg1PQQ1dpXiwiT+8NHCW+vp2StJG+P9P546kCJjnFY7PfJeX2sWaE641QaiCAdO xu3YOe9dubX7Mv/JfOMNIvtZtNNretdsJ5Ri/5mqf+B7iCDNOdEuUI22nNiYwP2X6dOm pRxnS7WtjgQQJF8CpGP/HzYvFW4UTaW4+vaqSfrZpMRlcTlZ1uIvLUEqxNgNuyC7MUxM 96FUA4jyAM+4zSVh+MWw9b+BDdMELWBpvxO/hP17c07uaJbIyDyZokQeUqBZH+rS6f9n iiqCgKbpykhmqRF0H0Pl949NPgv9DpyqHkNbaf5GeSHYY6GF6FSWvSZmfsN1t+JFG3gx y/7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780407007; x=1781011807; h=cc:to:in-reply-to:references: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=ZtVC9C1cbta0kyUKVT4fHKeIkf1F//8fOgyITkkyulg=; b=MEoinWUAw8rLqi6eRffbrnp+O8m++k1wokJb56S3IdIH2Oyr/+krsnxkf7GHE2I8ku WHZdWc9Bx9pWOw5/8zSAcKsu/5hMmWp+xUOCBgZCFIwBdYZzaL5dsRbuojzP8rsfO4Yx RhWuBcrVCpltDjAn0izFasfUzyPbe96+txsWSdOsuZw05sZCl28XbZfM3VgQWOKU4gGy JF8ybymGd9oDjczQUaqBEkikk47MSdpSA96m3AdZ01vxtJQxBr29xbK3XdEPriMJOU0b p7bG/H3C4y16xGzPgSM9sYzNF6Q5I6pVn6KvYXRwRIAiJ2lm4l0h26ZZ6HHnZlZLfjhn Cswg== X-Forwarded-Encrypted: i=1; AFNElJ9z3EVciK/KzY2GKbjizAqnYf0bO0+9xfYCTu/MVGWaf6Xzt5odP/Mqq4yes+bb+Mkv2NzB6c7D3mvAf4Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yx9HpcgdI9Z6OrBqsNAc6DYXUVrWVCn3zpt+ZsNtZ56Dsco5Q8i gI0sHHI8pRdC2/LPhk5XpWPmXgiDJrm+EUNyn49IsJmX1bmSmibWBApS9ZfzmQ== X-Gm-Gg: Acq92OFNA8gTLoqqWtL/72VPw4l8ue87ZF/iQL1h8/J0rWmCRvuJ36+OIQe1d/r2n7R 0UpGFSuYQ2OJEX+ckeBZ/91QHmbpp0c7nMVhoetfry3HAoQzOzY0fmlj69OfA9XuUHLm0PVZ1Fz 6zgic673MISJ/4/fXxAwcPwIAZoSfUg9zyyCNzQEM8XL2bHn9fXqKdkBDwMLpJ72J97J6FU/X4c Y+4abnQe9NEBTovXCRNRxxmUnSMTUbYH7GxlXvf3v6ONEBhe/vqNSur8F4N+iuST2Txylh1wymg yX9Ac0OoKA9V2JsWzj6BjDjGT2U734TSdsOjtJLcL4w4hV10Spl2UdRQXAEHzIDlSeg6ai3N9AJ Q8eS7aFsNQOhKpdI7fgdFCkvBSNhnw17CV8L6WGSgRepIDvl5zMCNf77xPsGoqLzGSGHXWjf483 buKIua/ciL6dhO33K6wvy3ujk3GYedYLAN+ppTZ/D3SLofkineXll0F63+kCU= X-Received: by 2002:a17:903:22c5:b0:2c0:c625:4019 with SMTP id d9443c01a7336-2c0c6254474mr124411525ad.25.1780407006419; Tue, 02 Jun 2026 06:30:06 -0700 (PDT) Received: from hu-ckantibh-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bf23a1ee6esm148548215ad.33.2026.06.02.06.30.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 06:30:06 -0700 (PDT) From: Sanjay Chitroda X-Google-Original-From: Sanjay Chitroda Date: Tue, 02 Jun 2026 18:59:26 +0530 Subject: [PATCH v4 5/5] 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: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-5-26d6dff8fc55@gmail.com> References: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-0-26d6dff8fc55@gmail.com> In-Reply-To: <20260602-15-apr-pm-iio-mma8452-v4-temp-v4-0-26d6dff8fc55@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 X-Mailer: b4 0.15.2 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 85dfd854e2b6..7d0b4560ba2a 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -19,6 +19,7 @@ */ =20 #include +#include #include #include #include @@ -479,9 +480,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 @@ -579,36 +580,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) @@ -1754,9 +1749,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