From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk0-f175.google.com ([209.85.220.175]:33113 "EHLO mail-qk0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753751AbcJUG64 (ORCPT ); Fri, 21 Oct 2016 02:58:56 -0400 Received: by mail-qk0-f175.google.com with SMTP id n189so133802791qke.0 for ; Thu, 20 Oct 2016 23:58:56 -0700 (PDT) Subject: Re: [PATCH] thermal: generic-adc: Fix linear temperature approximation To: Laxman Dewangan References: <20161018193147.GA14745@vaio-ubuntu> <5808BB3D.2020201@nvidia.com> <8d2a5917-30b4-d9eb-304a-b96780de9f4c@gmail.com> <5808E78B.4060109@nvidia.com> <0412f751-fb88-7b9e-8a8c-501e019de774@gmail.com> <5808F86A.4080800@nvidia.com> <5809B34C.6040301@nvidia.com> Cc: linux-iio@vger.kernel.org, rui.zhang@intel.com, edubezval@gmail.com From: =?UTF-8?Q?Pawe=c5=82_Jarosz?= Message-ID: Date: Fri, 21 Oct 2016 09:00:08 +0200 MIME-Version: 1.0 In-Reply-To: <5809B34C.6040301@nvidia.com> Content-Type: text/plain; charset=utf-8; format=flowed Sender: linux-iio-owner@vger.kernel.org List-Id: linux-iio@vger.kernel.org W dniu 21.10.2016 o 08:18, Laxman Dewangan pisze: > > On Thursday 20 October 2016 10:56 PM, Paweł Jarosz wrote: >> >>> It is Negative Coefficient Thermistor (NCT) and so adc reads are >>> different. >>> Lower temp gives higher value. >>> >>> So table should be >>> >>> <7000 10 >>> 9000 8>; >>> >>> temp1 = gti->lookup_table[2 * i]; >>> temp2 = gti->lookup_table[2 * i - 2]; >>> >>> and then use in following equation. >>> >>>> >>>> adc_hi = gti->lookup_table[2 * i - 1]; >>>> adc_lo = gti->lookup_table[2 * i + 1]; >>>> temp = gti->lookup_table[2 * i]; >>>> temp -= (val - adc_lo) * (temp1 - temp2) / (adc_hi - adc_lo); >> >> val = 9 >> adc_hi = 10 >> adc_lo = 8 >> temp = 9000 - (9 - 8)*(7000 - 9000)/(10 - 8) >> temp = 9000 - (1)*(-2000)/(2) >> >> temp = 9000 - (-1000) = 10000 >> >> still wrong ... temp for val = 9 should be 8000 > > > Your temp1 and temp2 calculation is something wrong. > > temp1 = gti->lookup_table[2 * i]; > temp2 = gti->lookup_table[2 * i - 2]; > so temp1 = 9000, temp2 = 7000 > There was nothing wrong with my calculation but you changed the order to fix your equation. You can send the patch. Paweł