From nobody Fri Jun 12 18:34:01 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (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 101B43D413B for ; Wed, 13 May 2026 09:46:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778665593; cv=none; b=ewgrzNXU9h2I0RxoUDOsJ4drfQUwy0VnjpYe5hcACMTFXS10IeBYc63yPqr4t9WXgkqIjJQi6/SfJH3+0l7uCimJfeIwXyHSR6VNdqQVlb/VmJbfq3ZE+HYZuBi9pXIVtwkbPifpVm5HBoeTkm9TJnu9NiF3ok0EFZ3madI3Hd8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778665593; c=relaxed/simple; bh=pO2Gj0v2j/36f3z1q/IxyG4uyJpEwZsOyGHqPuWLmFk=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=gtZSNaSexaY67Y9Thl2jVbknzRsfY6mwJT2zTLL+cITQhkfKaXZgoY54Ueua05HfLSpxUL9LY20y1+kbdPPWO0wjRd4AjRWBd73xmZYLcoQYTA8VNPdTdPjq8xb4m12teTqDhZQg+i1eUzIFCQoY6eEm/8HoKsSiQotO/FPOY34= 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/mGninc; arc=none smtp.client-ip=209.85.128.50 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/mGninc" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-488a8f97f6bso9233705e9.2 for ; Wed, 13 May 2026 02:46:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778665587; x=1779270387; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=Yv5NWoKadJwa5peeIuFPciCVZufaAVsLKsWJ1tkRxdc=; b=r/mGnincyXT9sUm0kDt3/04SX8Xq5Rmc9zdGQGrA3/y7pQNgrTbcHODKh4hqSjO9tv ZdLU3evlPVXto1dmpc5AHaYDGismYnPLH6vBfhsOmTwmlDaBS9KkS9rDcPX/pC/jwwsf JiSBKGlqYD9Roy8gcBnp6EO57f0hOfWCYoj/OQcwcPQ0mFyZL22ikE+D0GOyLjFpwQPF ac1fiZVRojAVpXR8ojSgLwbKvHUI1GXOzurBOzfkEr29wlk24eFQeQX5WoJp9BeAUJ4a lJbRZ68fvtRK4XgMWVoq/84/jflP0f/JMPGtrCfpDpD1RFO9sw4USwvsv62tQ9YUKl+e hMMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778665587; x=1779270387; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Yv5NWoKadJwa5peeIuFPciCVZufaAVsLKsWJ1tkRxdc=; b=nqYdIRUq9CfhV5aT650VzAFA1nCdIdDM2GEhpAhCd9OB0BqqvGwHMLYDss/C/mmPIA k6e6udNy4grtv6j/lDn0OdC6D93Ru7FXEoU754vWjuNF+q6W/Izja/jhoLJxgXWQrORI RLu59gNNC2AialQdA5vlZi9F/ZOU+lZcONhd7v9GWhXwGaC7NZz334FQvNZljS9mNC9D fWqfnIfi0HDAgbnWEdWfUjvPglBV4HzMs1mEHqU++6gT1nDII0L1cQmnj4JmPh+OTjyH gk4e8PgBK0kj4NXzL6vYdYhYuFnGDNK9grzdOPqmi8dncM7Z30PYwkpnmIDXJpZLJ2aw vMjw== X-Forwarded-Encrypted: i=1; AFNElJ84ZK12f0kQ75ttlmmuhHBEUhCJlLsfT964mxfkbxl2pJ0bXCg/pmP6sU7TE/QFKpI6qgtAWEY71CzV4Aw=@vger.kernel.org X-Gm-Message-State: AOJu0YyqOdoRsUbq/NNtZZ0PtToncHldk5az6zMbdIo1L5SeEjjGMRRV UngHLV9bW1rLFdCKOz75N92+evFE1QptIJhOr5RToPJS68FcLzSlLYaY X-Gm-Gg: Acq92OHoXAGPlQMR+y9Jvh3591fTymnkKL5xzLCSsWbXolSxqeH+Pug9qD7KSow9okR RXY7dg6ChihPD5wNi8DCExUuP6WM2d9K1xxKtfBCX11E5DZ/+FoGTXIYsvt3gKdC8vOG74Y14Xs bFDemK79yHQ4rusEtG/6q32Wodsg4SPHrQMUNlSRwpnTBtwW0l6ZdEbhH097ddtNA9hCOJHYc01 TN11MKJRs32xoD6er1AP+FG05y8rf0g0PyzUyJE5Syrjvaeljx3+k3szZxCQhTRiv33M4E6LLxN 7EeQ1CatULzh2J58HE/yn3TdqVnUnGHfisWzH/bVDY/eQpDle/ctFunqXKnApA2GWt82bLFQ25F +JJYbrpSwkNbKquN0Y7Bcl01RnngunQZWqivT8fhnZYG33SGIuIipKlDS2AwCpoXUnnflyc5OiM /494R5A7en3nc/NE0okQt1PuNZxgLzScvjC+WQxPH/aBc= X-Received: by 2002:a05:600c:3109:b0:489:1fa8:b895 with SMTP id 5b1f17b1804b1-48fc9a09508mr17704875e9.2.1778665586497; Wed, 13 May 2026 02:46:26 -0700 (PDT) Received: from localhost.localdomain ([94.158.58.43]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48fc8d27d31sm100167475e9.8.2026.05.13.02.46.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 May 2026 02:46:26 -0700 (PDT) From: Stepan Ionichev To: jic23@kernel.org Cc: arthur.becker@sentec.com, dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, gregkh@linuxfoundation.org, hcazarim@yahoo.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, sozdayvek@gmail.com Subject: [PATCH] iio: light: veml6040: add suspend/resume support Date: Wed, 13 May 2026 14:45:36 +0500 Message-Id: <20260513094536.8038-1-sozdayvek@gmail.com> X-Mailer: git-send-email 2.33.0.windows.2 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" The VEML6040 RGBW light sensor stays in auto-measurement mode at all times once probed, drawing its full active current (~200 uA per Vishay VEML6040 datasheet, Doc# 84276 Rev. 1.7). On system suspend there is no need to keep the sensor running. Add system sleep PM callbacks that toggle the SD (shutdown) bit in CONF register 00H to put the chip into shutdown on suspend and back into normal operation on resume. The bit semantics are documented in the datasheet Tables 2-1 and 2-2. The existing veml6040_shutdown_action() is unchanged; it still runs on module unload to leave the chip shut down. Signed-off-by: Stepan Ionichev --- drivers/iio/light/veml6040.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/iio/light/veml6040.c b/drivers/iio/light/veml6040.c index f563f9f0e..ffd0a2a70 100644 --- a/drivers/iio/light/veml6040.c +++ b/drivers/iio/light/veml6040.c @@ -13,6 +13,7 @@ #include #include #include +#include #include =20 /* VEML6040 Configuration Registers @@ -201,6 +202,32 @@ static void veml6040_shutdown_action(void *data) VEML6040_CONF_SD_MSK, VEML6040_CONF_SD_MSK); } =20 +/* + * Per Vishay VEML6040 datasheet (Doc# 84276 Rev. 1.7), Table 2-1 and + * Table 2-2, the SD bit in CONF register 00H controls chip shutdown: + * SD =3D 1 disables the color sensor, SD =3D 0 re-enables it. + */ +static int veml6040_suspend(struct device *dev) +{ + struct iio_dev *indio_dev =3D i2c_get_clientdata(to_i2c_client(dev)); + struct veml6040_data *data =3D iio_priv(indio_dev); + + return regmap_update_bits(data->regmap, VEML6040_CONF_REG, + VEML6040_CONF_SD_MSK, VEML6040_CONF_SD_MSK); +} + +static int veml6040_resume(struct device *dev) +{ + struct iio_dev *indio_dev =3D i2c_get_clientdata(to_i2c_client(dev)); + struct veml6040_data *data =3D iio_priv(indio_dev); + + return regmap_update_bits(data->regmap, VEML6040_CONF_REG, + VEML6040_CONF_SD_MSK, 0); +} + +static DEFINE_SIMPLE_DEV_PM_OPS(veml6040_pm_ops, veml6040_suspend, + veml6040_resume); + static int veml6040_probe(struct i2c_client *client) { struct device *dev =3D &client->dev; @@ -271,6 +298,7 @@ static struct i2c_driver veml6040_driver =3D { .driver =3D { .name =3D "veml6040", .of_match_table =3D veml6040_of_match, + .pm =3D pm_sleep_ptr(&veml6040_pm_ops), }, }; module_i2c_driver(veml6040_driver); --=20 2.43.0