Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp2135705pxa; Mon, 3 Aug 2020 08:19:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwwVRrzKGOoi0Y8WkD1HO6qWxsqovEwftCzC/gNNJoyO203iqSVTr49dAgUMmESAc+PqDIh X-Received: by 2002:a17:906:3850:: with SMTP id w16mr17997475ejc.205.1596467994259; Mon, 03 Aug 2020 08:19:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596467994; cv=none; d=google.com; s=arc-20160816; b=oZT1Xj2JIg9/ioK8ppyPneZy6GVvbeGh9l3bgYyRNJkTrf+EV5y2jEGuKPpTDeKJ0c KFPcv27JyAZArFy2bZeFuDuM9rBslOac+eiihAWjk0PqEHLE7RvTjLb93/aFQfHK0fV5 sQ3x9q1mn9F0MhAbavh3UnbZIMqdWDD2VNkoYZr4FgD9iXvDex7rGmDukpEyp2imsMJg PC22bhbjWiV0/10Dqdgh3iAXxr9tOBDI5MVtbSDuhXgUEfPT9C7g+LOsYclFVoBGyp7K zl7qJpFSuEt6JQi045iq11bE8QBgmhQIHFOmwmFEJxBaEZlbsPheB2kXyIABce+aJQj1 4XzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=dLm6RINMH46rAju8aGEaViT9JcB4pyQ99/jBApaK+S0=; b=oKhg2p9T2Afwo+78waUSL3Rwg5eo6zQ98u2uK5l6mHAzTbGO9qLiAMSydW0unf1pio UJaiP9MDJLL2zM0tZ7NQqu4YvnVL09vHtq2Vkxo1E7IzySYiuxy/Ys5KS8KG/bpKJPJD vfSfWMWweBqv6nX9tWIskDezTEHAN7bBWtxfjKeGZhJmFrkcib0W3jRAmwUtu0Y42jOB GobEB992SyVmVH4XLA83S2ll4nikZxJeESG+PvntAv61ezLQxDreZETPPwqLU6eChsIb 8Gl7HCeK0tL6ZrZ+YTeqsP3yJiD6m5jOhyO0Yc6lOFxIHetLvEvckBal6mL2YxJqMYBB oQpw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@melexis.com header.s=google header.b=oPm1We6B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w13si10902224edu.248.2020.08.03.08.19.32; Mon, 03 Aug 2020 08:19:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@melexis.com header.s=google header.b=oPm1We6B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727893AbgHCPRK (ORCPT + 99 others); Mon, 3 Aug 2020 11:17:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40354 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726907AbgHCPRK (ORCPT ); Mon, 3 Aug 2020 11:17:10 -0400 Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com [IPv6:2a00:1450:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0EBFDC061756 for ; Mon, 3 Aug 2020 08:17:09 -0700 (PDT) Received: by mail-ej1-x642.google.com with SMTP id qc22so24221370ejb.4 for ; Mon, 03 Aug 2020 08:17:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=melexis.com; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=dLm6RINMH46rAju8aGEaViT9JcB4pyQ99/jBApaK+S0=; b=oPm1We6Bc+I97BVWffAWoHsPhvAUGjT7Kj6DIAlP5zhnNcHgLNQ9sxn8gzCh/NC3aq 1kDGUNHhk/91pb3z6jaJjkHHZoTTptPRf2eJQx9tSxLt8boDj/KofgbX2SJNSlUF2WGh rJLpbzfqvDxgXGzDMGfLCjPAAbPqrG15gGoT39G3jgriOgUPTFA4y3NSnCmBa1MpsGhW XIeDJjsDaKiJEJ2coa/hZztY8T0I1CNhKzc7biDvXguoiXVLdX0UFhlCKypx0Qp5Fa8h pxUG/joDrIUxF41qCXrnLBKSlr2shQ8KTSbmybBp4LvAa/BiNaTQaIXxpS0pfWFrsOt6 NUjg== 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:mime-version :content-transfer-encoding; bh=dLm6RINMH46rAju8aGEaViT9JcB4pyQ99/jBApaK+S0=; b=mDJd4J6xnEfQSXYZEj3ot6zbMhljdhgXsTgrdkGklBNiYMcENs9aF9jMrlFna/3s2Q 8DFVqgG6/7L/FAR6SDcS7ICoG3ebb5RW04l2YAskm6xsbsbpzG5jsO9s1Q3O6iDoIHq7 wXQmf7u4MGNYMuHlQ8rZRHZzn2hI1lmTeZxQYZ3kkChUOzPY7uG7YRSFHL79Bc2rafvR 6zucHWws3ePUrbS63beuVn8nfGGxU/yIxSGRgpTDgwmgUpalQhRqnrN5HNPnhOlTNlC4 Rw+6IDgsnZZ6pwo9vASVRk9If3ZOW0DinIS2LlO+Wj+RD+nBLyY1BFWFIoxT0bEkVQDP /2RQ== X-Gm-Message-State: AOAM532+ien3nAu1bak4N7S+w5ZSCqwEt6L6eSj8irzNfuRTvufNAiwf asVJrQOVgw78t1tTsI2pWQB37g== X-Received: by 2002:a17:906:7c86:: with SMTP id w6mr16632690ejo.178.1596467828400; Mon, 03 Aug 2020 08:17:08 -0700 (PDT) Received: from cmo-t495.tess.elex.be ([194.150.35.21]) by smtp.gmail.com with ESMTPSA id g25sm16027481ejh.110.2020.08.03.08.17.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Aug 2020 08:17:05 -0700 (PDT) From: Crt Mori To: Jonathan Cameron Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Crt Mori Subject: [PATCH] iio:temperature:mlx90632: Reduce number of equal calulcations Date: Mon, 3 Aug 2020 17:16:56 +0200 Message-Id: <20200803151656.332559-1-cmo@melexis.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org TAdut4 was calculated each iteration although it did not change. In light of near future additions of the Extended range DSP calculations, this function refactoring will help reduce unrelated changes in that series as well as reduce the number of new functions needed. Also converted shifts in this function of signed integers to divisions as that is less implementation-defined behavior. Signed-off-by: Crt Mori --- drivers/iio/temperature/mlx90632.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/iio/temperature/mlx90632.c b/drivers/iio/temperature/mlx90632.c index eaca6ba06864..d7ba0b2fe3c0 100644 --- a/drivers/iio/temperature/mlx90632.c +++ b/drivers/iio/temperature/mlx90632.c @@ -374,29 +374,25 @@ static s32 mlx90632_calc_temp_ambient(s16 ambient_new_raw, s16 ambient_old_raw, } static s32 mlx90632_calc_temp_object_iteration(s32 prev_object_temp, s64 object, - s64 TAdut, s32 Fa, s32 Fb, + s64 TAdut, s64 TAdut4, s32 Fa, s32 Fb, s32 Ga, s16 Ha, s16 Hb, u16 emissivity) { s64 calcedKsTO, calcedKsTA, ir_Alpha, TAdut4, Alpha_corr; s64 Ha_customer, Hb_customer; - Ha_customer = ((s64)Ha * 1000000LL) >> 14ULL; - Hb_customer = ((s64)Hb * 100) >> 10ULL; + Ha_customer = div64_s64((s64)Ha * 1000000LL, 16384); + Hb_customer = div64_s64((s64)Hb * 100, 1024); - calcedKsTO = ((s64)((s64)Ga * (prev_object_temp - 25 * 1000LL) - * 1000LL)) >> 36LL; - calcedKsTA = ((s64)(Fb * (TAdut - 25 * 1000000LL))) >> 36LL; - Alpha_corr = div64_s64((((s64)(Fa * 10000000000LL) >> 46LL) - * Ha_customer), 1000LL); + calcedKsTO = div64_s64((s64)((s64)Ga * (prev_object_temp - 25 * 1000LL) + * 1000LL), 68719476736); + calcedKsTA = div64_s64((s64)(Fb * (TAdut - 25 * 1000000LL)), 68719476736); + Alpha_corr = div64_s64(div64_s64((s64)(Fa * 10000000000LL), 70368744177664) + * Ha_customer, 1000LL); Alpha_corr *= ((s64)(1 * 1000000LL + calcedKsTO + calcedKsTA)); Alpha_corr = emissivity * div64_s64(Alpha_corr, 100000LL); Alpha_corr = div64_s64(Alpha_corr, 1000LL); ir_Alpha = div64_s64((s64)object * 10000000LL, Alpha_corr); - TAdut4 = (div64_s64(TAdut, 10000LL) + 27315) * - (div64_s64(TAdut, 10000LL) + 27315) * - (div64_s64(TAdut, 10000LL) + 27315) * - (div64_s64(TAdut, 10000LL) + 27315); return (int_sqrt64(int_sqrt64(ir_Alpha * 1000000000000LL + TAdut4)) - 27315 - Hb_customer) * 10; @@ -413,10 +409,14 @@ static s32 mlx90632_calc_temp_object(s64 object, s64 ambient, s32 Ea, s32 Eb, kTA = (Ea * 1000LL) >> 16LL; kTA0 = (Eb * 1000LL) >> 8LL; TAdut = div64_s64(((ambient - kTA0) * 1000000LL), kTA) + 25 * 1000000LL; + TAdut4 = (div64_s64(TAdut, 10000LL) + 27315) * + (div64_s64(TAdut, 10000LL) + 27315) * + (div64_s64(TAdut, 10000LL) + 27315) * + (div64_s64(TAdut, 10000LL) + 27315); /* Iterations of calculation as described in datasheet */ for (i = 0; i < 5; ++i) { - temp = mlx90632_calc_temp_object_iteration(temp, object, TAdut, + temp = mlx90632_calc_temp_object_iteration(temp, object, TAdut, TAdut4, Fa, Fb, Ga, Ha, Hb, tmp_emi); } -- 2.25.1