From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) (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 5782F351C25 for ; Tue, 14 Jul 2026 11:31:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784028708; cv=none; b=YYwQ0BDe2Slsj5he7+p3qkp9FglnjLco6SYFpwcBgCPQUZtJi5/fFFmvbdJeQHyr8XSqhme3b9C3B62oUa/ynM0mBfStE0w+DnSYz21WVRPLBdIO9RCMAZ3crr46BhQLu7YiTsXXzB6RaGfIKEqal4jFHnB168sBx34xAM8hsts= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784028708; c=relaxed/simple; bh=xxgwCeT3dSPUCMHW5OXfv9VTnN/cr+L941sj/wmgWQk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Obl5ul80egvnt2i+T3ekk6DR5CEyX5UxBev2+jdXJ/lp5IanLo1XNl9FzdWBI7/MIWR24fHYtKnEGIIzEKNFN91UTXkPx+dsVxu/8yxXYU66VrzH7FHdXq3lGnuuP/5hb6AYEwlbutLIN+/O+olcWmyrQjuKZx1Jh2KJ5Dn8+7A= 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=m4TK0FZX; arc=none smtp.client-ip=209.85.215.176 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="m4TK0FZX" Received: by mail-pg1-f176.google.com with SMTP id 41be03b00d2f7-ca7c1176317so3025513a12.1 for ; Tue, 14 Jul 2026 04:31:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784028707; x=1784633507; 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=UQkjz4SLBwT2GueIM4+tWAz99xBrKedDThFl6sdTxH8=; b=m4TK0FZXFw/7luCgZ+72YHNV/0IX92yLgt0D4aQovBZZVQf5Gor/pMZNr5DW15eez2 dmeE6NS4xytwHIuPdsAcTdVgeN/sKb3jMLiItFY8qRrDcm7HmpED80kgf+a13/ongl0v 70kt6Ya5Bm+9DpIBFezGuJKqNcvn/NeYgtxPv5ODkm3QWyDTtb/QR+t7mZCveAFdS11a ZCr50+PL1ODZEcftzF1ousR5MCcAcOMtGZXz2yzNtTb8i+fErwRn9tBS72kJo1BT1yYd bnzXzg7mQpJ6MfwkNFOtho0sy65KKuUPxRjKWMm2PrTR0D5Rl55f9EbRSz7TowevjM8C pzdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784028707; x=1784633507; 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=UQkjz4SLBwT2GueIM4+tWAz99xBrKedDThFl6sdTxH8=; b=jdQHl3Zk7z36dACSEOQGyA/UZTA3CEvhUJMLmFugOajReNuM+f3qWBRW2XKDhVVAWu FMbkf9dp8AOry9oElDcRGkUKkWEMUyWRLeZQ5MUu0dwEWHAyZlJhxpb+VH0+88xnzWwd a1A5+zadzwP5GdDyMuYHvmZyyqNL6au70smy2Xi9lH3n5jdW5fVjuJ4jSYeIqzJLYzl7 JmzKuzs2o3woI+PafewqVPRmuq43eQZYytvkjXweZMX4Ro78xGSDPTxp6SG+RfXAU8XW m/je7pcCP2VWosZRN240IJilRKWH8j3Ve//BFbEcbnaNCRSkUIN2nEV3XsemJMsXcy9b rpTQ== X-Forwarded-Encrypted: i=1; AHgh+RqGSSL9AfsmiCbUNgPxTk7ZuM7kNuuAtF4U62cZpjHpdD/0BKVWncuOnoAT8aV+5DE5n1SHgrsM6CrTM0U=@vger.kernel.org X-Gm-Message-State: AOJu0YxaCz4W8wlIXhkH4gEd7i7EUT95JQjna2aNHwUghUYBBx7DB1KR clMEcp5+0aoWUkUfPyRuPBLJ0m/x1XoC3wtwQ7RKmRjmVPJeD20ZSb0= X-Gm-Gg: AfdE7ckrrMoMfyP/Cmpo3slj5sauj5EcyM9MvGDKPwa6ZaMigymMKMAZuzHnVtifb5B D2AtTAMjI+ER3KIsYrbX4EpVLVb6+Icik4saWws13DCOJ43ohhDoAN1L/dI3f2Z5qr30divyAyQ KCeUTFmx2igC2FTFkesYnAYVfHwm+nG4nFONtViqZcZLwCNpVrFRU58igCoHk2muBo2HJ2HHMzJ F+9wsK/9oB0hDuubbIJ2VgtaKzptc6w/Ev8Sl4x2bEBL4E2bDNO6qV1cuxUq9IiIFYNBpRwdHWV 0AVS7neu/sXXb4CII0qAKktRzMuVVigKdB0uGFewU/dgmK8BFHU43zrZQC6ZIwSQQg+tT/Xw5GK 3mSpXUWCMn+TKfB9fSDrYBoFjCQ46CI83Q+nohoxXEGQgSU6pWeT4doMm2G5AMjgEikWD2kfJtU XD+zmXDi7vmyrJTn1LSS2ugsSevviEEGNzmh/mCJ8MMf547LFnTAPr X-Received: by 2002:a05:6a20:7283:b0:3b4:6f7e:d0f9 with SMTP id adf61e73a8af0-3c1100308f2mr13749870637.3.1784028706648; Tue, 14 Jul 2026 04:31:46 -0700 (PDT) Received: from localhost.localdomain ([101.0.63.168]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-311747f72a6sm95357368eec.1.2026.07.14.04.31.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 04:31:46 -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 v3 1/4] iio: light: opt4001: Fix power down clearing bits of the wrong register Date: Tue, 14 Jul 2026 17:01:31 +0530 Message-Id: <20260714113134.3445-2-nikhilgtr@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260714113134.3445-1-nikhilgtr@gmail.com> References: <20260714113134.3445-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 ba4eb82d9bc2..66563000d081 100644 --- a/drivers/iio/light/opt4001.c +++ b/drivers/iio/light/opt4001.c @@ -222,33 +222,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