From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 B601B4756DF for ; Tue, 28 Jul 2026 21:49:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785275392; cv=none; b=ARnWwTCN2z3zKj7ePppEqGWOgonSzXS6cOdVeePLawYcCJLQywrcrtLvkb8Ps9M5kn0T/JB2qZrdECt14L2ZqHNmwlJvP7YK7h0R0Cpb8v8NwoiqNMBbQjS90EV43Yn6RaegMmSFB4LoUelAzyGAt6Ni/nVPTzOellEi/mRJYiA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785275392; c=relaxed/simple; bh=bvSCyrdJPHI/O7SmyFzFWbGaFpXQE2wLFmiJP7lOXFw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FSAosYVuaPAeTsbGc4GsXf675Keb3o5J+uaqpa8l9d/b1tmgXYGoxwnAtJyc16cB/NuCXpKdkQ+0pML8oMmgGu/2XyJUKrfUs6hMBe1epVHZWlerCPq46PIwmaLVkNeiJecZImYJExLJUqiO8RjajLyv5DOW7gOlVstXN72AKB8= 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=SUzgjNms; arc=none smtp.client-ip=209.85.128.46 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="SUzgjNms" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4954a32cf1eso1421235e9.3 for ; Tue, 28 Jul 2026 14:49:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785275388; x=1785880188; 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=uyoTdl6JWUrvGo1mbfyaooGMdcUCefFiFsk2EKvJSOU=; b=SUzgjNmsUi9K+J8XXrLCrqUwiL3uq8oROWrnC1hw7JwtpkOtK6jvhqlTZngX5c0jHt KwGwEuTA17aVi+FOVXa4d4z+mAoNzw9Dxuyl8QGOPGv28YK+XaDCAXZbMWUfZDfDRYhx /A0TBs3Bc4Gl88WT2PEVeJzwr6k3VKW06RaRGovXbyNqzzZHMmETV9G+QTBiIQJdrrE7 U+hm6iwHCKEvSgPsd+BMpvR8vf4IMuTWaCePoF8F53bJwhUUhv5wvm/p5c2UVj6ohl85 7jV0VuOEfzD5qTBo3HC5T5MJta+Ad0T/V0f9lu+NSZEES8OSrufJa6umwmn14FMTuvHp gbcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785275388; x=1785880188; 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=uyoTdl6JWUrvGo1mbfyaooGMdcUCefFiFsk2EKvJSOU=; b=bfs8Zh66sucp0q2TIrkpbtk2khYDfvws1FNaTktlzqd8vGZsX4Yx1k/FyxKAp3K13w BmCvPEp67oVOq3g2ldG24mhvirS/yqu67twKuURpG9DylkMdeo/D5FT0pVkDCCvp7UUV cpvh212YVzaEoKYeoBPrkQM9DkVTM5jvqYJ1kn0WzL5YnkY7drT2E3gga0WoX6CHdIwG LmhlS72g2So+unnkmiAExezkMqt5HQrWt6EwHV2n4MhAnPG130kc0/IgPLg+NIUV4mGs RRghBVvVn9o7ZFmVDc2kl9kutAd0DG1uL7JCc28iO+AdcGo2APyafVY70AQEMka84wRB eEHw== X-Forwarded-Encrypted: i=1; AHgh+RoBRrPoIV31VJon8MoBDZYV0lpe9PMpvYqwzNUUQt8HlvqzdKC+hlwu7UqSfY0CPJwYzDGQeDOM6Kikj7c=@vger.kernel.org X-Gm-Message-State: AOJu0YyUP1a97TD9uEkLbQA+1cb6FE6YZrCylffumZIA4orYav70Ob/5 1gkQtVnqjYJlfQIjUd9k+TW1KpC9z9K5EmCI2Gqpgled8Nv3LEBIvyKF X-Gm-Gg: AR+sD12atZRRZLmAyeTIiMYaxJcxTXwK3h5RePqUrcOPY5lQ1joB8O04+7r9P62WhfM PjMBGTMeuxkgdneditjjDF5c+TDTOHcdP1iH6UNjxEv4xCN6sRE4anbgn6/pLhMm60q8UZJ6Ti0 fA/f6Gpw9uQx8u4yDEmUMyRq/vh7mu84pY0UqpPuPjI81uG1J+pJMV524fPNhL71zJo51IvUg64 Xj1JHgGjpassDnK8KSIR+TT6lLJKhouwCROG19D+TI9hJ0FrtY380IimSA4lnC/99gT+fL+oQP1 +PGzOhFhkvFMATbl7gB9QKGiz4JspZ6AbbI6MCwlgx2joMu1rUXteJsx4WbFE6IE04UpbFYqUe/ 3XEEqqOUQkgNS5g470eF4z1/sQJzTTnOZd+pKKxPx1WiXTOgMCpN8LiA1XIXf4uM4xN9DfYYLCp a45j5NHNmvl2jAml+i9aoce2VdO6+i2QFWAiCJ7IHVlQ== X-Received: by 2002:a05:600c:3b14:b0:495:4b1d:915f with SMTP id 5b1f17b1804b1-496c65653bbmr41087565e9.23.1785275387987; Tue, 28 Jul 2026 14:49:47 -0700 (PDT) Received: from sefo-laptop ([2a02:8071:50c5:5c0::361b]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47fb6b0ef25sm2353042f8f.24.2026.07.28.14.49.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Jul 2026 14:49:47 -0700 (PDT) From: Wadim Mueller To: jonathan.cameron@oss.qualcomm.com, krzk+dt@kernel.org, robh@kernel.org, conor+dt@kernel.org, dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, maxwell@maxwelld.cc Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, marcelo.schmitt1@gmail.com, 455.rodrigo.alencar@gmail.com, Rodrigo Alencar Subject: [PATCH v6 3/4] iio: core: add IIO_VAL_DECIMAL64_FEMTO format type Date: Tue, 28 Jul 2026 23:49:42 +0200 Message-ID: <20260728214943.29820-4-wafgo01@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260728214943.29820-1-wafgo01@gmail.com> References: <20260728214943.29820-1-wafgo01@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 Extend the IIO_VAL_DECIMAL64_* family with a femto-scaled variant (scale 15), following the existing MILLI/MICRO/NANO/PICO pattern. Both the read formatting path in __iio_format_value() and the write parsing path in iio_write_channel_info() (via kstrtodec64()) already derive their scale from "type - IIO_VAL_DECIMAL64_BASE", so the new type only needs to be added to the respective switch cases. This is needed by drivers reporting very small SI quantities where the existing pico scale loses precision. For example the Sensirion SLF3S liquid flow sensor reports its volume-flow scale in m^3/s, where the SLF3S-0600F scale is ~1.667e-12 m^3/s: at pico scale only a single significant digit survives, whereas femto scale preserves the full sensor resolution. Signed-off-by: Wadim Mueller Reviewed-by: Rodrigo Alencar --- drivers/iio/industrialio-core.c | 2 ++ include/linux/iio/types.h | 1 + 2 files changed, 3 insertions(+) diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index 37cf2817b3d0..767a7794624a 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -715,6 +715,7 @@ static ssize_t __iio_format_value(char *buf, size_t offset, unsigned int type, case IIO_VAL_DECIMAL64_MICRO: case IIO_VAL_DECIMAL64_NANO: case IIO_VAL_DECIMAL64_PICO: + case IIO_VAL_DECIMAL64_FEMTO: { int scale = type - IIO_VAL_DECIMAL64_BASE; s64 frac; @@ -1032,6 +1033,7 @@ static ssize_t iio_write_channel_info(struct device *dev, case IIO_VAL_DECIMAL64_MICRO: case IIO_VAL_DECIMAL64_NANO: case IIO_VAL_DECIMAL64_PICO: + case IIO_VAL_DECIMAL64_FEMTO: dec_scale = type - IIO_VAL_DECIMAL64_BASE; fallthrough; case IIO_VAL_INT_64: diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h index 924ac9dc6893..d8944c9e5e90 100644 --- a/include/linux/iio/types.h +++ b/include/linux/iio/types.h @@ -42,6 +42,7 @@ enum iio_event_info { #define IIO_VAL_DECIMAL64_MICRO (IIO_VAL_DECIMAL64_BASE + 6) #define IIO_VAL_DECIMAL64_NANO (IIO_VAL_DECIMAL64_BASE + 9) #define IIO_VAL_DECIMAL64_PICO (IIO_VAL_DECIMAL64_BASE + 12) +#define IIO_VAL_DECIMAL64_FEMTO (IIO_VAL_DECIMAL64_BASE + 15) static inline s64 iio_val_s64_compose(s32 val0, s32 val1) { -- 2.52.0