From patchwork Mon Jun 7 14:47:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liam Beguin X-Patchwork-Id: 12303683 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD760C4743F for ; Mon, 7 Jun 2021 14:47:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B4730610E5 for ; Mon, 7 Jun 2021 14:47:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230359AbhFGOtW (ORCPT ); Mon, 7 Jun 2021 10:49:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57252 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230344AbhFGOtV (ORCPT ); Mon, 7 Jun 2021 10:49:21 -0400 Received: from mail-qt1-x82b.google.com (mail-qt1-x82b.google.com [IPv6:2607:f8b0:4864:20::82b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0EA22C061787; Mon, 7 Jun 2021 07:47:30 -0700 (PDT) Received: by mail-qt1-x82b.google.com with SMTP id t17so12731039qta.11; Mon, 07 Jun 2021 07:47:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=aLIjEv3Y3XGxT5C/sRBa0wIugXh2Hwubx4IA7LHkqcs=; b=Wukgpd3X99m/VjzCKIAqRLn3sMsuyPWDI1dsqTY5oQiUjzEEr+0ONVG7ZZrCB4bVop K7DfFqXo0r9vJHcO6HP/iL3U81rjqXHLnVyXvun6XwDEJgyfW/Sq/+k5EmmeuEGbIIz0 86sCxnzk6hmhbmbViRjDZdxjm9BTVkoNNn8PgyuBTwjdKznurLlOQ+q470jeYSgJgyom wSU6a2iVmgv7CX2sye2MlDmCt6ZrjegMMc3Oz4LSaV50WqT4wXT0nS2bhW8JNXyDcX5v rPZ5agOZ1YJ+FkAb8XYvZeRv92CjEHFo6mci9m3CmNH4zj9S5vNF1NrMgYKhcSW2cqdx vh3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=aLIjEv3Y3XGxT5C/sRBa0wIugXh2Hwubx4IA7LHkqcs=; b=BMMBu7zF6S6CB+YAbGKXNeDN+GRm26CmcHlzVRbwdjdolJ1ct/aCHtySOLyKeoYbpe JDDMykGQH8ZrdwjmtiyBrA+uxZ9Wwuv11vsE90SGV6+zPEZLaOs2ULk10+U6BwDrUXFB UTCMedkIzRhbbzI/Etm04qMepsBo5TQ4Oc9V0bRsKExKCP5KcfiVdF+hZoNL+IJseHUY Gw5vGo1IZwJTUV2rdnIe+qYZ8uztVZwZ3XJk+nAvOWwjMlhdSUAngtNUGEjf2DOvsAgb J+gDlSAP6lHkPX1l4JUjIyMpZsuUElMyNk+dB9MLq+qN02+TyJXrZ60vG6meptTgy3XK pQFg== X-Gm-Message-State: AOAM531jE98xyK2WRchqDOwalBcLKR/0a2/28wW5LL5HCs/SiobspCIR IB71r5h7Exi07Z98aip0XPA= X-Google-Smtp-Source: ABdhPJwPiDTDsvGF4sYulFsvUfdsPXRpiCmpGhthbyRGp4DltexZj74T1IXf8CDGsKJoDs5p/obOFw== X-Received: by 2002:ac8:7215:: with SMTP id a21mr12382069qtp.329.1623077249206; Mon, 07 Jun 2021 07:47:29 -0700 (PDT) Received: from shaak.xiphos.ca (198-48-202-89.cpe.pppoe.ca. [198.48.202.89]) by smtp.gmail.com with ESMTPSA id s7sm4157855qkp.35.2021.06.07.07.47.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Jun 2021 07:47:28 -0700 (PDT) From: Liam Beguin To: liambeguin@gmail.com, peda@axentia.se, jic23@kernel.org, lars@metafoo.de, pmeerw@pmeerw.net Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org Subject: [PATCH v2 1/8] iio: inkern: apply consumer scale on IIO_VAL_INT cases Date: Mon, 7 Jun 2021 10:47:11 -0400 Message-Id: <20210607144718.1724413-2-liambeguin@gmail.com> X-Mailer: git-send-email 2.30.1.489.g328c10930387 In-Reply-To: <20210607144718.1724413-1-liambeguin@gmail.com> References: <20210607144718.1724413-1-liambeguin@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org From: Liam Beguin When a consumer calls iio_read_channel_processed() and the channel has an integer scale, the scale channel scale is applied and the processed value is returned as expected. On the other hand, if the consumer calls iio_convert_raw_to_processed() the scaling factor requested by the consumer is not applied. This for example causes the consumer to process mV when expecting uV. Make sure to always apply the scaling factor requested by the consumer. Fixes: 48e44ce0f881 ("iio:inkern: Add function to read the processed value") Signed-off-by: Liam Beguin --- drivers/iio/inkern.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index 391a3380a1d1..b752fe5818e7 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c @@ -599,7 +599,7 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan, switch (scale_type) { case IIO_VAL_INT: - *processed = raw64 * scale_val; + *processed = raw64 * scale_val * scale; break; case IIO_VAL_INT_PLUS_MICRO: if (scale_val2 < 0) From patchwork Mon Jun 7 14:47:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liam Beguin X-Patchwork-Id: 12303699 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AC47EC48BCF for ; Mon, 7 Jun 2021 14:48:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 90D49610FC for ; Mon, 7 Jun 2021 14:48:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231210AbhFGOui (ORCPT ); Mon, 7 Jun 2021 10:50:38 -0400 Received: from mail-qk1-f180.google.com ([209.85.222.180]:40781 "EHLO mail-qk1-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231186AbhFGOug (ORCPT ); Mon, 7 Jun 2021 10:50:36 -0400 Received: by mail-qk1-f180.google.com with SMTP id u30so16864043qke.7; Mon, 07 Jun 2021 07:48:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OKwbA7CkZ/dV0H/nAmt5zTOn4ixRO23QkLcRozVJn9c=; b=uB8iMLzLtQnPC4uy6Oy+bBk/7uuGVoR/+yjBxcJLo51kqUK5EtLNNUkfb1zTnPSQ3S JaqbeGS5MY2w/6SiaXbYFMJI4NsV79YtWiu/Ix9Btwc+mvMpgTvIBj28md+H/xfJeyOy sT/8CNCcHctHGK5RY04/DSd/YIw1n+MBaHfW7/zZF4xmFVhXRuz3/OfXAxzV9CHF1jjQ an/9gery/oxlwOW1J25EaXgcf7HyvEtO+GsL2uXeOLHOKibabzlPeIi/xzN3Uk563Ayb DPDezHcalYB4oI4ThK7fWjCkrnznOI96zyjOfdqELjNCK8NLNSpdws6Wpr9bhu8Odkzn 2OsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OKwbA7CkZ/dV0H/nAmt5zTOn4ixRO23QkLcRozVJn9c=; b=OmhGZEVEFxicbpZDGa7nlrawK28CNeKFjYI5kI6Cv30CIeT3zIEmecE81rPAs5TzkJ s/UqetURTSj7zJ5Iw3II456RZkwEjrSXyC+fwAI0EfFS32aZelehVEYO+gxu3A+7h/Yl EyY69vy4AFQjYMYEJrx7ujl+0X3Q+htJSo4q4i5wv/+0Me/uqnmn1SanzKZBcNUeKMtv ACuGnKeCCXz7v7OPZpYZipkBr79NiTqlmChHpSMXNLdRCYWOwMQ9LnmIpDZPzcm/Uhv8 EpvXoyXT9sIb4rk5715sa3H5yTME64lKJ5BolVLergf0G1az9n+qe3OiarpHW3yIOgX4 /N5w== X-Gm-Message-State: AOAM530vVYnsZN+RibhVR5geApxrvhhKDIEYRCY1DhfVvTQSIRNpQyVU WemBF/eOlJ+4sHLehsF96/I= X-Google-Smtp-Source: ABdhPJyiAT3fTtx138sRldeyD+npBsaC2xzgmtE0T0miVZU0YmivlFA2jKtw4kCBUGLX6r/13vxohA== X-Received: by 2002:a05:620a:f03:: with SMTP id v3mr17338663qkl.96.1623077250208; Mon, 07 Jun 2021 07:47:30 -0700 (PDT) Received: from shaak.xiphos.ca (198-48-202-89.cpe.pppoe.ca. [198.48.202.89]) by smtp.gmail.com with ESMTPSA id s7sm4157855qkp.35.2021.06.07.07.47.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Jun 2021 07:47:29 -0700 (PDT) From: Liam Beguin To: liambeguin@gmail.com, peda@axentia.se, jic23@kernel.org, lars@metafoo.de, pmeerw@pmeerw.net Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org Subject: [PATCH v2 2/8] iio: inkern: apply consumer scale when no channel scale is available Date: Mon, 7 Jun 2021 10:47:12 -0400 Message-Id: <20210607144718.1724413-3-liambeguin@gmail.com> X-Mailer: git-send-email 2.30.1.489.g328c10930387 In-Reply-To: <20210607144718.1724413-1-liambeguin@gmail.com> References: <20210607144718.1724413-1-liambeguin@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org From: Liam Beguin When a consumer calls iio_read_channel_processed() and no channel scale is available, it's assumed that the scale is one and the raw value is returned as expected. On the other hand, if the consumer calls iio_convert_raw_to_processed() the scaling factor requested by the consumer is not applied. This for example causes the consumer to process mV when expecting uV. Make sure to always apply the scaling factor requested by the consumer. Fixes: adc8ec5ff183 ("iio: inkern: pass through raw values if no scaling") Signed-off-by: Liam Beguin --- drivers/iio/inkern.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index b752fe5818e7..b69027690ed5 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c @@ -590,10 +590,10 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan, IIO_CHAN_INFO_SCALE); if (scale_type < 0) { /* - * Just pass raw values as processed if no scaling is - * available. + * If no channel scaling is available apply consumer scale to + * raw value and return. */ - *processed = raw; + *processed = raw * scale; return 0; } From patchwork Mon Jun 7 14:47:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liam Beguin X-Patchwork-Id: 12303695 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9052BC4743F for ; Mon, 7 Jun 2021 14:48:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7952F610E5 for ; Mon, 7 Jun 2021 14:48:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231197AbhFGOuh (ORCPT ); Mon, 7 Jun 2021 10:50:37 -0400 Received: from mail-qv1-f44.google.com ([209.85.219.44]:37499 "EHLO mail-qv1-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230424AbhFGOug (ORCPT ); Mon, 7 Jun 2021 10:50:36 -0400 Received: by mail-qv1-f44.google.com with SMTP id x6so4049825qvx.4; Mon, 07 Jun 2021 07:48:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gubJ+cy2hdbRa3vWvYjt/ZgxNm2KDsWHFNK3TFpu6TE=; b=Ba0y4dXO0ZlX0R79AwTNFf4VL40TBHmo0rZHxi7VM4KkshLBIK7VmTKzXfi4GtcABS Opy3GZPDgY+wEACFZmLBQzOUT3P0F/Y+3FFbpnjHGQCzwwVnO5ezpDCdyXPAPURY5Aqq RSeNGCGEsDMqqbqe9UVvOdcMZ1pUg4wI+vgedm8+ODE64+wcatYlREEVnVDlJECswXb0 f9XaRR4thvzLp1P3chkRFrNhPwlIlSauukm5t4noq8761vm4o+6fuJ45k+8kbWrblz67 hSVR6ghKvgC+GYaTfasccVJO+DW426arXx6ZDr+koY+90o+nboCZZSHB1PDDIDTM6hsj K//g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gubJ+cy2hdbRa3vWvYjt/ZgxNm2KDsWHFNK3TFpu6TE=; b=uO+1SeimgW8Wchl3CxV82y9kEn6wnuDvJ/xWOcz9MEQpZX7LFZ2bWJmLHFdQIX8rI8 DLZujIlAWo9ZcFGtx2GNScbMvC+uw142QFWmuB/CYa4RPg10n6JNrx/rjFsPVZoCkzvO tTnwA5RlX9bJsFqNY+YV70w2Xz1gDOl+yQU4r9VbR+p0FoXpgSUEBMyiExya6YAz6nnX BPYVvUfWAdKAtf2jhGUHgO+VP6BS6mdSyvuUki4/8ybvWU8VOZZGtTSRkxyxSzvbwXtc vRp+gs3y++Bn8YZb+1Gl5Otc/0jTB5Edf3rgkv9mMLeZdcr96caXgz/gCDaeDXdu67g+ bjFg== X-Gm-Message-State: AOAM530cryzJTRPpmunhfrHm/4OzjVW98aeDIZBcDwim7pd34VwB8gzp vOBJreOJCPzmtoILl5qMv856RQ8lWqL+rw== X-Google-Smtp-Source: ABdhPJy5GXVXbU2UrrCiTiUgAj10SvN+w/xaUgEctESrQfSpR8FnglH211vXifHu4bg5eL9BPsrElw== X-Received: by 2002:ad4:5def:: with SMTP id jn15mr8288408qvb.22.1623077251135; Mon, 07 Jun 2021 07:47:31 -0700 (PDT) Received: from shaak.xiphos.ca (198-48-202-89.cpe.pppoe.ca. [198.48.202.89]) by smtp.gmail.com with ESMTPSA id s7sm4157855qkp.35.2021.06.07.07.47.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Jun 2021 07:47:30 -0700 (PDT) From: Liam Beguin To: liambeguin@gmail.com, peda@axentia.se, jic23@kernel.org, lars@metafoo.de, pmeerw@pmeerw.net Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org Subject: [PATCH v2 3/8] iio: inkern: error out on unsupported offset type Date: Mon, 7 Jun 2021 10:47:13 -0400 Message-Id: <20210607144718.1724413-4-liambeguin@gmail.com> X-Mailer: git-send-email 2.30.1.489.g328c10930387 In-Reply-To: <20210607144718.1724413-1-liambeguin@gmail.com> References: <20210607144718.1724413-1-liambeguin@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org From: Liam Beguin iio_convert_raw_to_processed_unlocked() assumes the offset is an integer. Make that clear to the consumer by returning an error on unsupported offset types without breaking valid implicit truncations. Signed-off-by: Liam Beguin --- drivers/iio/inkern.c | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index b69027690ed5..0b5667f22b1d 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c @@ -578,13 +578,37 @@ EXPORT_SYMBOL_GPL(iio_read_channel_average_raw); static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan, int raw, int *processed, unsigned int scale) { - int scale_type, scale_val, scale_val2, offset; + int scale_type, scale_val, scale_val2; + int offset_type, offset_val, offset_val2; s64 raw64 = raw; - int ret; - ret = iio_channel_read(chan, &offset, NULL, IIO_CHAN_INFO_OFFSET); - if (ret >= 0) - raw64 += offset; + offset_type = iio_channel_read(chan, &offset_val, &offset_val2, + IIO_CHAN_INFO_OFFSET); + if (offset_type >= 0) { + switch (offset_type) { + case IIO_VAL_INT: + break; + case IIO_VAL_INT_PLUS_MICRO: + if (offset_val2 > 1000) + return -EINVAL; + break; + case IIO_VAL_INT_PLUS_NANO: + if (offset_val2 > 1000000) + return -EINVAL; + case IIO_VAL_FRACTIONAL: + if (offset_val2 != 1) + return -EINVAL; + break; + case IIO_VAL_FRACTIONAL_LOG2: + if (offset_val2) + return -EINVAL; + break; + default: + return -EINVAL; + } + + raw64 += offset_val; + } scale_type = iio_channel_read(chan, &scale_val, &scale_val2, IIO_CHAN_INFO_SCALE); From patchwork Mon Jun 7 14:47:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liam Beguin X-Patchwork-Id: 12303697 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E6A5BC48BCD for ; Mon, 7 Jun 2021 14:48:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D3D24610C8 for ; Mon, 7 Jun 2021 14:48:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231214AbhFGOui (ORCPT ); Mon, 7 Jun 2021 10:50:38 -0400 Received: from mail-qk1-f178.google.com ([209.85.222.178]:36742 "EHLO mail-qk1-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231185AbhFGOug (ORCPT ); Mon, 7 Jun 2021 10:50:36 -0400 Received: by mail-qk1-f178.google.com with SMTP id i68so13302539qke.3; Mon, 07 Jun 2021 07:48:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pZEpqN5lTrDO7dxKwL5kRWjhFH4pUfCWGaaBkcuE30k=; b=UAxsYIy8bY8fL1e4mALCCxIFxxf0DGNT6fWLklHjZ3iV5VxX1AgFx3oy21r0KV7xMz OU9C10msXrzC4uwHYMFDZbJlHYgZDixraYinhL7VicS/TGHmxz1ExNZQmKpWg1Eiltj9 DBObshrm3oKFTW1NNyUqpe65vyUJT/qLA0u7un7diRoO8WN+iKW8WmSkZ9lMqUGLacrm TuDYKV3nRegtVibkm/HfgAjBPHADT3SBn26G9WvHDmBhAb72pz/jRfg0dNjbMQg+6RYm 71Ee8tJk+CVJD6QwmFvJXmuoFmh7CMSZoHOIp8hfKAqriqx2+SScd/fgVZweTovkXN51 s7oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pZEpqN5lTrDO7dxKwL5kRWjhFH4pUfCWGaaBkcuE30k=; b=X55d9TJKkhiQOmAkLtvTtgUDhwdUM/IsbDsV5tOTxdE6Tyh57xgZUTDYR6y2QJULpe RbSWnm5nPR0EH3C9DFWxuislgLHrMXmOS+eit3p1Ds7aicFu0eIMYKytu9ClE2tOTQ01 V0jw2O/7QzOOoeLXT8qNU7pp/c9Ff5fpgT3j2bKznmWBDdvadCHAggeROiFMTHk/AEfr BLSK2bWjPS5yVot3xjBdDmHrflrPnOrbqu9F9HVjKY/G3c+z+Mq+3bPSiwNILIWBI/se +S+gCGnuiknrTUY3e6SAPnQ5v/6ZQYIh1kMWG7e2iGeGLLxTqA6l2va7BKCaOyaj3Caw mW+A== X-Gm-Message-State: AOAM5310IfT0mxAqtG6ueTQGYduXBqzNMt9GNmcVGHLP9gNP4Md3riUx taMG9KvdH5YEKT7ZOjF4r1s= X-Google-Smtp-Source: ABdhPJzP7D2Di8IfZFHm+qtPNryI4oP9/7XIu5uDL7X92h2b6+0rX+F7hbZCE3/Q7U+qumFYZiq04A== X-Received: by 2002:a05:620a:1675:: with SMTP id d21mr16678498qko.390.1623077252084; Mon, 07 Jun 2021 07:47:32 -0700 (PDT) Received: from shaak.xiphos.ca (198-48-202-89.cpe.pppoe.ca. [198.48.202.89]) by smtp.gmail.com with ESMTPSA id s7sm4157855qkp.35.2021.06.07.07.47.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Jun 2021 07:47:31 -0700 (PDT) From: Liam Beguin To: liambeguin@gmail.com, peda@axentia.se, jic23@kernel.org, lars@metafoo.de, pmeerw@pmeerw.net Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org Subject: [PATCH v2 4/8] iio: inkern: return valid type on raw to processed conversion Date: Mon, 7 Jun 2021 10:47:14 -0400 Message-Id: <20210607144718.1724413-5-liambeguin@gmail.com> X-Mailer: git-send-email 2.30.1.489.g328c10930387 In-Reply-To: <20210607144718.1724413-1-liambeguin@gmail.com> References: <20210607144718.1724413-1-liambeguin@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org From: Liam Beguin iio_convert_raw_to_processed_unlocked() applies the offset and scale of a channel on it's raw value. The processed value returned is always an integer. Return IIO_VAL_INT so that consumers can use this return value directly. Signed-off-by: Liam Beguin --- drivers/iio/inkern.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index 0b5667f22b1d..00d234e87234 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c @@ -618,7 +618,7 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan, * raw value and return. */ *processed = raw * scale; - return 0; + return IIO_VAL_INT; } switch (scale_type) { @@ -652,7 +652,7 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan, return -EINVAL; } - return 0; + return IIO_VAL_INT; } int iio_convert_raw_to_processed(struct iio_channel *chan, int raw, From patchwork Mon Jun 7 14:47:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liam Beguin X-Patchwork-Id: 12303689 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E282DC47082 for ; Mon, 7 Jun 2021 14:48:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C58B361130 for ; Mon, 7 Jun 2021 14:48:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230266AbhFGOuZ (ORCPT ); Mon, 7 Jun 2021 10:50:25 -0400 Received: from mail-qk1-f169.google.com ([209.85.222.169]:37642 "EHLO mail-qk1-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230197AbhFGOuY (ORCPT ); Mon, 7 Jun 2021 10:50:24 -0400 Received: by mail-qk1-f169.google.com with SMTP id i67so16874498qkc.4; Mon, 07 Jun 2021 07:48:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7v4978NXelKHLOHpzJWizqDsRLeauX49Rk0ajigt3jA=; b=IE3q5YlkLWYhXTA8e0CC0CU20K1q7T1Hbaa39xGmN8/PWletS8rQ2RvN2CRmwiJsbU OmTgoTt4jSSZ1qCyhtdEUbOe3DS1Q2GjBoCTzlaXLnumQBaX4VjC2BKDbHo0Wqt1jSDH 27ofcM3l/qtROtSE2ltTvhV5T860BMAfSaiIzkOaHuwiogrTeREF5mPWGxRRoJR3JQr/ rTuKpEKpTPDNxN4rloIH9zXMwzSxevF2tpLzV58yhD5mQ7gL8O0QN8d9GJpI7qhnjOj+ bS60ZzuxSWL5a0HIL6KnoC00+QY3mVUMWqV5ynQBBEmZIKatTelzQqjkviwtfrEu1owL gyRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7v4978NXelKHLOHpzJWizqDsRLeauX49Rk0ajigt3jA=; b=I+6lbaVKv177RcmRQU95Z5P26yslcCEm2N1F++XswmERQDBu6jKfiCGYn9euHoeH2s ZHY1AJq0Pou6isWYDM08WAsHdNy/2oYAf1IvptA+xjsxI7eHOKydRT/Oe7DcAW6KKVVj +2a+NLH1vWdyaCEQUvP1kByrkwxuovQ3iDrPX7Sq5ffC82QbFDxEPkZE6oYV/oifX8t5 BZ1nfZhpzuVDCnlAl5/TEaEaRks6jlPlwCVJvTyCfGo68AERaZnnLMlfBlIoIO3tCunc WT5ROeQjmHpkbM2xrBInVuokk0pb48jzj2SWjQ/ACOsEm6c4jK9e307uL+cPGAJeA7ln TnvA== X-Gm-Message-State: AOAM531tFzWdvu5wRV7kAyilj13GOdmcP2g1oKbT6Z4dvvsqHpmoBvI1 /2eoD1PTF+5LQoW76rAxwTE= X-Google-Smtp-Source: ABdhPJzTQnBmv/Ms1KwliA16vvt9C9QeNZsgjkHO9Anrt/LkoRApNZDYaGBTXA8AX9WZc2kp0TXDeQ== X-Received: by 2002:ae9:f507:: with SMTP id o7mr16734638qkg.384.1623077253142; Mon, 07 Jun 2021 07:47:33 -0700 (PDT) Received: from shaak.xiphos.ca (198-48-202-89.cpe.pppoe.ca. [198.48.202.89]) by smtp.gmail.com with ESMTPSA id s7sm4157855qkp.35.2021.06.07.07.47.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Jun 2021 07:47:32 -0700 (PDT) From: Liam Beguin To: liambeguin@gmail.com, peda@axentia.se, jic23@kernel.org, lars@metafoo.de, pmeerw@pmeerw.net Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org Subject: [PATCH v2 5/8] iio: afe: rescale: add upstream offset support Date: Mon, 7 Jun 2021 10:47:15 -0400 Message-Id: <20210607144718.1724413-6-liambeguin@gmail.com> X-Mailer: git-send-email 2.30.1.489.g328c10930387 In-Reply-To: <20210607144718.1724413-1-liambeguin@gmail.com> References: <20210607144718.1724413-1-liambeguin@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org From: Liam Beguin Default to using iio_read_channel_processed() if the upstream channel exposes an offset. When possible, it's preferable to avoid using iio_read_channel_processed() to maintain as much precision as possible. Signed-off-by: Liam Beguin --- drivers/iio/afe/iio-rescale.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/iio/afe/iio-rescale.c b/drivers/iio/afe/iio-rescale.c index 774eb3044edd..e34148d39b39 100644 --- a/drivers/iio/afe/iio-rescale.c +++ b/drivers/iio/afe/iio-rescale.c @@ -148,7 +148,10 @@ static int rescale_configure_channel(struct device *dev, chan->ext_info = rescale->ext_info; chan->type = rescale->cfg->type; - if (iio_channel_has_info(schan, IIO_CHAN_INFO_RAW) || + if (iio_channel_has_info(schan, IIO_CHAN_INFO_OFFSET)) { + dev_info(dev, "found upstream offset, using processed value\n"); + rescale->chan_processed = true; + } else if (iio_channel_has_info(schan, IIO_CHAN_INFO_RAW) || iio_channel_has_info(schan, IIO_CHAN_INFO_SCALE)) { dev_info(dev, "using raw+scale source channel\n"); } else if (iio_channel_has_info(schan, IIO_CHAN_INFO_PROCESSED)) { From patchwork Mon Jun 7 14:47:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liam Beguin X-Patchwork-Id: 12303687 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1D4B5C47094 for ; Mon, 7 Jun 2021 14:47:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 07222610C8 for ; Mon, 7 Jun 2021 14:47:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230426AbhFGOtf (ORCPT ); Mon, 7 Jun 2021 10:49:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230344AbhFGOte (ORCPT ); Mon, 7 Jun 2021 10:49:34 -0400 Received: from mail-qk1-x72e.google.com (mail-qk1-x72e.google.com [IPv6:2607:f8b0:4864:20::72e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E523BC061787; Mon, 7 Jun 2021 07:47:34 -0700 (PDT) Received: by mail-qk1-x72e.google.com with SMTP id f70so1675758qke.13; Mon, 07 Jun 2021 07:47:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=k0QcvidbL1EkpC0ADnabrDOPyyFA7QVFwo89YZJrlhw=; b=PYU9eVNS6qk+kagcYVWqTePLz24howwjBgj5kwdzhiRq0xHmO0G7JI9Ayn8L0ivo5J LW3p2h/sqv9l0MRtDd4Dj/cgcYFZJ1BADX65Er2shytNDJjYgmZ5ZT3xu0UrmpC/ipGq 49MGfO2qcJATrR53dGb4dUU1hxc4AR+5SdM4yj5NKHkq221qnh5bmYoCVWUsySOgeLJA 9hSJCJpeSRVMVivXCzwezwPN0+Mkr3zMx0g4Muw+iA+2ckrHY+blrZ8U/2o9rhjSaT6T vN07xIGstTXxtuyCyDPpztS0My7J2sJcoLkVkHEX2G/SC0VWqtKXI05GNC8E4dYZtYF1 N1zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=k0QcvidbL1EkpC0ADnabrDOPyyFA7QVFwo89YZJrlhw=; b=djLWAHekvUKCoPcrrF+5Z5csgytSMEf3NHUMfcNBc6/NEbV4XcAMG1Cvmpxv4z/WgS w1Mpdjvf6OlndgZIsKQAXim7qOvxM5B8QadKnLmhISa96VH8dYq7LDPeqE9oKLSEca9Q LWcu8URRa93tvPUBV1kLVbp4QftSooCjiJUrPkmcFWkKP0RiFND3OgeThjwjdsYUGWwI +xTt+vbm05Ux5XC+cucnpTnfBIS8ZGYqtwbUeUgMcIqN1g66aX2dkXaJr3Pu+dl50n4H sjCWndE+jT3Bkgi+/6cnh4L4NS0z384atBjF7xwt8Uglf3FzZAD9juAlQnIXtKCq+Vox 8x1w== X-Gm-Message-State: AOAM533kDjPGgV1cSI+U3c/h00Jde8jckh7fqHI3xyMJaWwN5VYzPNIH /QeIUTo70vl6abDc31yEBSE= X-Google-Smtp-Source: ABdhPJzUrNsbhEpscMTaVIHpgl7rINAj7Xj0ErbZgeHBwWFVD1Rhp4X5I7CERLYfAv/uCxeiZk5iQg== X-Received: by 2002:a37:e312:: with SMTP id y18mr16543582qki.39.1623077254100; Mon, 07 Jun 2021 07:47:34 -0700 (PDT) Received: from shaak.xiphos.ca (198-48-202-89.cpe.pppoe.ca. [198.48.202.89]) by smtp.gmail.com with ESMTPSA id s7sm4157855qkp.35.2021.06.07.07.47.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Jun 2021 07:47:33 -0700 (PDT) From: Liam Beguin To: liambeguin@gmail.com, peda@axentia.se, jic23@kernel.org, lars@metafoo.de, pmeerw@pmeerw.net Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org Subject: [PATCH v2 6/8] iio: afe: rescale: add offset support Date: Mon, 7 Jun 2021 10:47:16 -0400 Message-Id: <20210607144718.1724413-7-liambeguin@gmail.com> X-Mailer: git-send-email 2.30.1.489.g328c10930387 In-Reply-To: <20210607144718.1724413-1-liambeguin@gmail.com> References: <20210607144718.1724413-1-liambeguin@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org From: Liam Beguin This is a preparatory change required for the addition of temperature sensing front ends. Signed-off-by: Liam Beguin --- drivers/iio/afe/iio-rescale.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/iio/afe/iio-rescale.c b/drivers/iio/afe/iio-rescale.c index e34148d39b39..3d445c76dbb2 100644 --- a/drivers/iio/afe/iio-rescale.c +++ b/drivers/iio/afe/iio-rescale.c @@ -32,6 +32,7 @@ struct rescale { bool chan_processed; s32 numerator; s32 denominator; + s32 offset; }; static int rescale_read_raw(struct iio_dev *indio_dev, @@ -86,6 +87,10 @@ static int rescale_read_raw(struct iio_dev *indio_dev, default: return -EOPNOTSUPP; } + case IIO_CHAN_INFO_OFFSET: + *val = rescale->offset; + + return IIO_VAL_INT; default: return -EINVAL; } @@ -165,6 +170,9 @@ static int rescale_configure_channel(struct device *dev, chan->info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE); + if (rescale->offset) + chan->info_mask_separate |= BIT(IIO_CHAN_INFO_OFFSET); + /* * Using .read_avail() is fringe to begin with and makes no sense * whatsoever for processed channels, so we make sure that this cannot @@ -329,6 +337,7 @@ static int rescale_probe(struct platform_device *pdev) rescale->cfg = of_device_get_match_data(dev); rescale->numerator = 1; rescale->denominator = 1; + rescale->offset = 0; ret = rescale->cfg->props(dev, rescale); if (ret) From patchwork Mon Jun 7 14:47:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liam Beguin X-Patchwork-Id: 12303691 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 315B0C47095 for ; Mon, 7 Jun 2021 14:48:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1652361208 for ; Mon, 7 Jun 2021 14:48:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230197AbhFGOu1 (ORCPT ); Mon, 7 Jun 2021 10:50:27 -0400 Received: from mail-qv1-f54.google.com ([209.85.219.54]:33435 "EHLO mail-qv1-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230331AbhFGOu0 (ORCPT ); Mon, 7 Jun 2021 10:50:26 -0400 Received: by mail-qv1-f54.google.com with SMTP id l3so1906595qvl.0; Mon, 07 Jun 2021 07:48:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dIYmVltKuxRnkxYcd9xvPWWLAIb4zf9uKDKMJAX/FqI=; b=dnkFfa83ehPPJyRlGhkh58704bNclKyszpk7vqlAPudPzUVbgkdbKVE+ozKaw5/H2L 0ulMn1nAYUCbv9qYvSd6dx0Ll55InzEdhxrZzupdDGMok3ZNW58obgXbUR55ylio0FHF TVQDK7G4rgpN++CtyuBEO6RvMGBkmH7Q2lfH9M87LKhnqGo2MP+BCEsevBtMqro33EM6 BNxTbjTPMo9N5ARPsFF1XC+Yb1WcEmj8FxL7D9oGSZq7ufFsghABk6t5pEUlnYNYC2ib u370yQ/B3/D1nArTIRmSfqI+lNw+tR7pwMLMTERj71LSDIaj9kWf2MHgJjDMIWwQBiAr yCqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dIYmVltKuxRnkxYcd9xvPWWLAIb4zf9uKDKMJAX/FqI=; b=ABJ0QOyY10aNQyHBRcs2IJLhNnPjogVqu5FeLydQ27XicFRf7HSRDIzkqeAXGZC4r3 PBxh77JH4535nPqX+1MUbRbgbmvhIVsExkuCT+EhV3Zvb3RHC/RcZ0UuViHpwbCwfAUq yMi2dZfOAXDLlJFS8+UAp8gNs7VraJYQtdCJ4KSUzkhVP2BplRampVHb7CQJabOXpS1+ qwrAyjNkwTeskh52bRd9C78IbLla6FEJ/LyzXXPlsKAYcTFU8XHH9L8XPUVS7HMPJRwb DgtedDRDf95yVxk3u5JazNXFUe0nxRuwz1Gki0K0gHjnthwZ39/JW67usHeqXbrMaGFp U6wg== X-Gm-Message-State: AOAM5307DwOr6V0CcYYvEg8IqeBHrNvunsOml6HooK5tXL1uU4l6KtSX DFGCuIc7kFauBFmf6z0gM+npY09UGZWkXA== X-Google-Smtp-Source: ABdhPJziXMUPDmuB8eReZYaO8QDT9HaY8NpaHSptfAzqtBzWhjdoEId+1up7WpgPwFcQdIEzqR8GMw== X-Received: by 2002:a0c:be8a:: with SMTP id n10mr18468344qvi.2.1623077255117; Mon, 07 Jun 2021 07:47:35 -0700 (PDT) Received: from shaak.xiphos.ca (198-48-202-89.cpe.pppoe.ca. [198.48.202.89]) by smtp.gmail.com with ESMTPSA id s7sm4157855qkp.35.2021.06.07.07.47.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Jun 2021 07:47:34 -0700 (PDT) From: Liam Beguin To: liambeguin@gmail.com, peda@axentia.se, jic23@kernel.org, lars@metafoo.de, pmeerw@pmeerw.net Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org Subject: [PATCH v2 7/8] iio: afe: rescale: add temperature sensor support Date: Mon, 7 Jun 2021 10:47:17 -0400 Message-Id: <20210607144718.1724413-8-liambeguin@gmail.com> X-Mailer: git-send-email 2.30.1.489.g328c10930387 In-Reply-To: <20210607144718.1724413-1-liambeguin@gmail.com> References: <20210607144718.1724413-1-liambeguin@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org From: Liam Beguin Add support for linear temperature sensors. This is meant to work with different kinds of analog front ends such as RTDs (resistance thermometers), voltage IC sensors (like the LTC2997), and current IC sensors (see AD590). Signed-off-by: Liam Beguin --- drivers/iio/afe/iio-rescale.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/drivers/iio/afe/iio-rescale.c b/drivers/iio/afe/iio-rescale.c index 3d445c76dbb2..9e3c7e2b47cd 100644 --- a/drivers/iio/afe/iio-rescale.c +++ b/drivers/iio/afe/iio-rescale.c @@ -272,10 +272,29 @@ static int rescale_voltage_divider_props(struct device *dev, return 0; } +static int rescale_temp_sense_amplifier_props(struct device *dev, + struct rescale *rescale) +{ + s32 gain_mult = 1; + s32 gain_div = 1; + s32 offset = 0; + + device_property_read_u32(dev, "sense-gain-mult", &gain_mult); + device_property_read_u32(dev, "sense-gain-div", &gain_div); + device_property_read_u32(dev, "sense-offset-millicelsius", &offset); + + rescale->numerator = gain_mult; + rescale->denominator = gain_div; + rescale->offset = offset * gain_div / gain_mult; + + return 0; +} + enum rescale_variant { CURRENT_SENSE_AMPLIFIER, CURRENT_SENSE_SHUNT, VOLTAGE_DIVIDER, + TEMP_SENSE_AMPLIFIER, }; static const struct rescale_cfg rescale_cfg[] = { @@ -291,6 +310,10 @@ static const struct rescale_cfg rescale_cfg[] = { .type = IIO_VOLTAGE, .props = rescale_voltage_divider_props, }, + [TEMP_SENSE_AMPLIFIER] = { + .type = IIO_TEMP, + .props = rescale_temp_sense_amplifier_props, + }, }; static const struct of_device_id rescale_match[] = { @@ -300,6 +323,8 @@ static const struct of_device_id rescale_match[] = { .data = &rescale_cfg[CURRENT_SENSE_SHUNT], }, { .compatible = "voltage-divider", .data = &rescale_cfg[VOLTAGE_DIVIDER], }, + { .compatible = "temperature-sense-amplifier", + .data = &rescale_cfg[TEMP_SENSE_AMPLIFIER], }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, rescale_match); From patchwork Mon Jun 7 14:47:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liam Beguin X-Patchwork-Id: 12303693 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 13823C47082 for ; Mon, 7 Jun 2021 14:48:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EDE8B610E5 for ; Mon, 7 Jun 2021 14:48:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231192AbhFGOuh (ORCPT ); Mon, 7 Jun 2021 10:50:37 -0400 Received: from mail-qt1-f172.google.com ([209.85.160.172]:33639 "EHLO mail-qt1-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230434AbhFGOu1 (ORCPT ); Mon, 7 Jun 2021 10:50:27 -0400 Received: by mail-qt1-f172.google.com with SMTP id e3so1147252qte.0; Mon, 07 Jun 2021 07:48:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HSQgsaptdM1U/OrEHO8BXoNOmtXhejE81vLfj3GS23c=; b=fWxMBOVFykGdXAe2iKr2FHE1m3D0g87jNdHXvEItyd+66nCYQSQuS4JW4unMo39grk 1PVbTbLhKn86IL+QKfOX6EqSrNJNehJ3QdKU6NGU4tp/cfccxG2eBDyKIkQKsbTa1TDg PPA9i/H6iAxT4W/vt+x3OsjVmTMYwn5r8/9tO+XCqEiHb43ThOX/MnWqtWo0kk1bKmbp YacYL2dPv7MiLJylEsGLMCp2y/Gsn44fcDTueMX/rF0wOmTA8rmRjDA5StrvpdNYQGKi wu6V9Q4UfkhDnbiQiuXAIrNeqIBlqb/b9nn8+DvOHJGz8NeSVW8gjohAnpOihlnKq1aY ckdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HSQgsaptdM1U/OrEHO8BXoNOmtXhejE81vLfj3GS23c=; b=Jf5w+2xUtSOM0eiBS9LaXQLzQB14O+62PvKRXJMQONgqizMrm9Yndj1e5UxWVbpnZK FtcKH/IMtgJly2kRrq06NTulm9NP/LE72hk2y5Cw2Z92n3/KrCoXkKicq/wtzH+ZhT1W Z4+XQBYyNiiRRUUrLjDkutnocNMP7wNieFhNOek4efpbDEvJGEGYQyOYP8c5XkcrFLt6 Qdjp3Ccl7wDY2NnuROITK8aX7wLJixcnbuMNwhzTAy2tgVozGBZcD6p447PMoBuE52NI gonTak6c+BYQ0cwh84MtogtHw+U9IGu7oorxop7FmaaWntArlypwMrCSH2z0g6+l3cFS Uubw== X-Gm-Message-State: AOAM532AvC4ovOj1iNwmwl4UnJralTbefUiQFIJX4d0vHSKtx0JohpsV qtxNIrR418PMVbZicRlBPV0= X-Google-Smtp-Source: ABdhPJwGs04xG7xD+h/nfK60BqL9dbRT47cBMwCFsiUXIM+7HZIrIYwKk3q9M3CeQFpM0Yg8+2IAzQ== X-Received: by 2002:ac8:58d6:: with SMTP id u22mr16595953qta.81.1623077256074; Mon, 07 Jun 2021 07:47:36 -0700 (PDT) Received: from shaak.xiphos.ca (198-48-202-89.cpe.pppoe.ca. [198.48.202.89]) by smtp.gmail.com with ESMTPSA id s7sm4157855qkp.35.2021.06.07.07.47.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Jun 2021 07:47:35 -0700 (PDT) From: Liam Beguin To: liambeguin@gmail.com, peda@axentia.se, jic23@kernel.org, lars@metafoo.de, pmeerw@pmeerw.net Cc: linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org Subject: [PATCH v2 8/8] dt-bindings: iio: afe: add binding for temperature-sense-amplifier Date: Mon, 7 Jun 2021 10:47:18 -0400 Message-Id: <20210607144718.1724413-9-liambeguin@gmail.com> X-Mailer: git-send-email 2.30.1.489.g328c10930387 In-Reply-To: <20210607144718.1724413-1-liambeguin@gmail.com> References: <20210607144718.1724413-1-liambeguin@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org From: Liam Beguin An ADC is often used to measure other quantities indirectly. This binding describe such a use case, the measurement of a temperature through an analog front end connected to a voltage channel. Signed-off-by: Liam Beguin --- .../iio/afe/temperature-sense-amplifier.yaml | 57 +++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 58 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/afe/temperature-sense-amplifier.yaml diff --git a/Documentation/devicetree/bindings/iio/afe/temperature-sense-amplifier.yaml b/Documentation/devicetree/bindings/iio/afe/temperature-sense-amplifier.yaml new file mode 100644 index 000000000000..08f97f052a91 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/afe/temperature-sense-amplifier.yaml @@ -0,0 +1,57 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/afe/temperature-sense-amplifier.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Temperature Sense Amplifier + +maintainers: + - Liam Beguin + +description: | + When an io-channel measures the output voltage of a temperature analog front + end such as an RTD (resistance thermometer) or a temperature to current + sensor, the interesting measurement is almost always the corresponding + temperature, not the voltage output. This binding describes such a circuit. + +properties: + compatible: + const: temperature-sense-amplifier + + io-channels: + maxItems: 1 + description: | + Channel node of a voltage io-channel. + + '#io-channel-cells': + const: 1 + + sense-gain-mult: + $ref: /schemas/types.yaml#/definitions/uint32 + description: Amplifier gain multiplier. The default is <1>. + + sense-gain-div: + $ref: /schemas/types.yaml#/definitions/uint32 + description: Amplifier gain divider. The default is <1>. + + sense-offset-millicelsius: + description: Amplifier offset. The default is <0>. + +additionalProperties: false +required: + - compatible + - io-channels + +examples: + - | + pt1000_1: temperature-sensor { + compatible = "temperature-sense-amplifier"; + #io-channel-cells = <1>; + io-channels = <&temp_adc 3>; + + sense-gain-mult = <1000000>; + sense-gain-div = <3908>; + sense-offset-millicelsius = <(-255885)>; + }; +... diff --git a/MAINTAINERS b/MAINTAINERS index e679d422b472..4f7b4ee9f19b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8887,6 +8887,7 @@ L: linux-iio@vger.kernel.org S: Maintained F: Documentation/devicetree/bindings/iio/afe/current-sense-amplifier.yaml F: Documentation/devicetree/bindings/iio/afe/current-sense-shunt.yaml +F: Documentation/devicetree/bindings/iio/afe/temperature-sense-amplifier.yaml F: Documentation/devicetree/bindings/iio/afe/voltage-divider.yaml F: drivers/iio/afe/iio-rescale.c