From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (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 DF16837EFF1 for ; Mon, 13 Jul 2026 03:57:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783915081; cv=none; b=QbCIn4qdi4bSCdPTzp37ko7rkIvM3rC2PsGBzbJBjK+AKktYun4ftsenYQLBDOLrdWClT33blAdLnnnkqFRhkRr7F8KImjY7Ap9bHLfuhysB0mNqndQ0yWR53X96MG0akUlziEmxJQdWSBVMg7tmhU3NzAH7IbQZMa8ERuI7GXw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783915081; c=relaxed/simple; bh=3AV+ps6EwvWuPnkmEuMQHEqXd01rXxUa8mWVFvh7hyE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=W/d9Uc5gJlIYWHOKvbLEVX5Ms3C0Mbpmjsz9x5U1Nbv2YSZ0yqTA5q/6hFlrZXtyjINh2TZfwde6O6aF1giQEB3Lo/9dA+aU3PqWyZ821QosrGZAu1BX+IbjmGK7dmgeKsucjJom8IsemWiJ/lEZLB23mQ9Np/8agdDLc4aJNAc= 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=AeQSIt8L; arc=none smtp.client-ip=209.85.216.42 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="AeQSIt8L" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-38dfe910e9dso328692a91.3 for ; Sun, 12 Jul 2026 20:57:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783915079; x=1784519879; 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=CEhF1/knVdM88rzwDUG3Vwh5GZfToHHXGSRevQ99B4E=; b=AeQSIt8LNm54Loac9AiIWOgDjKnYzud/QK62CiXRhDDGjEKbNK0FqMO3iX1v49738Z X/a8d11+7HCERHRxgUI7EL+aMpeTORPPCMYKYjWZjhwLGfkmRXstGaCn+1JbvFjIWqGC IZBy43x/05odic4Rf4s4fVo1msrhKEKpKnqW0XWzPA8drxB9f5ZboBLmqPW6qjSl4SII r4Y8t+ZZEReMTAsxfrJo6J2bwt+XCbsUvKBwTXTHBKRS1380iOx7M4Po7izhLBwOs6Ua JRL7pLvKTr5IagWzkbqW0nT3clojS++pJTSOBDVWnGxzJwK2IEfJC0sLbkBZ/taX1fgc u6Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783915079; x=1784519879; 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=CEhF1/knVdM88rzwDUG3Vwh5GZfToHHXGSRevQ99B4E=; b=tPulWamDfbRy2i0G7KFk6cHcL5BAnhVIvTMFCl9rDG11Nhh4iP0TZsXi3kcn3dQPEz ABRJJ4Etc2eKPOw6+gYLAyroS1HUV+ZIN0ujVs1BxjMHBsTEM+VypbhHXLfcf8+cp4wl pUXkUTY0EEyVSFOlbFeewCR5IDfTU8Pfe6OjY0VAIFrxylm8hKM4M9rAacSkEA5ytyKL YRRIcWK7IPfBDyIIXW/G1gdx8Gvx3uqPeC63o3LyD/rCPUWIiOaK1NDPZ7bkpDRMruAF C0+USa01Ra46QT7h+C3u9wYFlgGtD2OqA9pVLqTbVSAuF8Al090JJmjqmpfVS+FGdLQK 5scA== X-Forwarded-Encrypted: i=1; AHgh+Rq52qNuRy6gqSqa7RtbxmIecF2jJGYahjaZr9xJzvpN07m19/vO95vWbdR9aFKEZlI+3FjpjF+SCw2WmZQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzBphPz0B9vULd/xXjrxDEKinCrw5KIO93eizM+I019sFWob12f rpJEdqMdUijBxHKvPPGjz3WHhvmX/OO7RZ42MrZOUKOjOX3ki4eroiw= X-Gm-Gg: AfdE7cm+Qrnzb+iYg/TIhppBwvpfnoKZo14nEGnl0/FU8ZOg6lHVw9Im2pEfFxRtN9a p+SrO4oUL1EcuOnRYYBk3Yu/lGhIeSPt59ZNvM0x9vDCQeG2Suhg3S+luA8jGPpXQgfYvBcTPPf MT+ko/+h5TNRwcjlIp8LuaRjcVIQqeaONs5cuNkFMs01wtYwAtOTBSvDf/9/UiCkY5iVE+oA4tI BI7w7C25rRDGxNa/OYJbnFQoNQAwEThoxwuO7Sb3hRB45aVdsLV4zUQohUXMqBZqOSLESnnstW3 jsW4ZHKtwl3TqFh4eNXk7LObvtzNr3uB1bEOnQOVCLaTPi+K3od0zpdiMsaMx2itamDeRVo0bgz pStSR10nzuusb0oZAdFt8/KQgesrAcw8q9K4H859jlrm+81MU7qBJx+X9Dx6AoRgtMVwkK85w+D zjH5SY5jFwjxpUJS7SEtRRQOMo6QuOH9rAgnoxhr+IhhZYzRyd4zQch6WsfMAKmP0= X-Received: by 2002:a17:90b:3bd0:b0:37f:9cdf:f0ac with SMTP id 98e67ed59e1d1-38dc77f1987mr7274394a91.27.1783915079198; Sun, 12 Jul 2026 20:57:59 -0700 (PDT) Received: from localhost.localdomain ([101.0.63.154]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-311747f5975sm60862704eec.4.2026.07.12.20.57.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Jul 2026 20:57:58 -0700 (PDT) From: Nikhil Gautam To: Jonathan Cameron Cc: David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Stefan Windfeldt-Prytz , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Nikhil Gautam Subject: [PATCH v2 4/4] iio: light: opt4001: Fix power down clearing bits of the wrong register Date: Mon, 13 Jul 2026 09:27:36 +0530 Message-Id: <20260713035736.11346-5-nikhilgtr@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260713035736.11346-1-nikhilgtr@gmail.com> References: <20260713035736.11346-1-nikhilgtr@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 opt4001_power_down() intends to clear the operating mode bits in the CTRL register but reads OPT4001_DEVICE_ID instead of OPT4001_CTRL, so the value written back to CTRL contains device ID bits rather than the current configuration. Fix and simplify this by using regmap_clear_bits() on the CTRL register directly in the devm action, and drop opt4001_power_down() which has no other users. Suggested-by: Jonathan Cameron Fixes: 9a9608418292 ("iio: light: Add support for TI OPT4001 light sensor") Signed-off-by: Nikhil Gautam --- drivers/iio/light/opt4001.c | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/drivers/iio/light/opt4001.c b/drivers/iio/light/opt4001.c index 9f877c5798b9..b7e9d361c2e3 100644 --- a/drivers/iio/light/opt4001.c +++ b/drivers/iio/light/opt4001.c @@ -223,33 +223,14 @@ static int opt4001_set_conf(struct opt4001_chip *chip) return ret; } -static int opt4001_power_down(struct opt4001_chip *chip) -{ - struct device *dev = &chip->client->dev; - int ret; - unsigned int reg; - - ret = regmap_read(chip->regmap, OPT4001_DEVICE_ID, ®); - if (ret) { - dev_err(dev, "Failed to read configuration\n"); - return ret; - } - - /* MODE_OFF is 0x0 so just set bits to 0 */ - reg &= ~OPT4001_CTRL_OPER_MODE_MASK; - - ret = regmap_write(chip->regmap, OPT4001_CTRL, reg); - if (ret) - dev_err(dev, "Failed to set configuration to power down\n"); - - return ret; -} - static void opt4001_chip_off_action(void *data) { struct opt4001_chip *chip = data; + int ret; - opt4001_power_down(chip); + ret = regmap_clear_bits(chip->regmap, OPT4001_CTRL, OPT4001_CTRL_OPER_MODE_MASK); + if (ret) + dev_err(&chip->client->dev, "Failed to power down\n"); } static const struct iio_chan_spec opt4001_channels[] = { -- 2.39.5