Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp57636pxy; Wed, 21 Apr 2021 18:24:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwaX5ibl7oGK2HDrD/Fu4DQOMfCFzvktM9U+K/7CYIYZ2geZx9Jcug0xYMG6dNAkbvP3O0Y X-Received: by 2002:a65:6496:: with SMTP id e22mr977487pgv.46.1619054695737; Wed, 21 Apr 2021 18:24:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619054695; cv=none; d=google.com; s=arc-20160816; b=N+P9KMbOdyFbGLzYVBJBk+TnqMi26kW/G4X5XllqIRbuPQ/Dx85Wn3JHzRa18HfiOs ROZ0Vcn9dYgh1EqT1Edwid/Y4X61dc4MWoLD5wntvy0f/yybPKoZ3vMQx43h0hWU18Fn gsPM1Mzl/fq5MgGQarNHJUlXES6uKKj0mjwtLVJyOnLBSy2TX7YLRcxPICzN09dPXiu9 1053qQswFhTgNXJl5CtKs4hOyQvWu0zm02f23O5Vw+O8SJLXyycwblF5M5LS0P+6J5JD 0GPnaDNNc6hR9lBkVFCxt/m7dB89Z77+hKnLptmaPc5DPVlBWw3GV8vP0J10SJzNESx4 De8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=HbjyALLYT9sc4ltzHbyvFrQq0il4AdDcmjIqRRdwAcg=; b=ptUO2GSPhxC4w2b502FYR98JVW5Xe5K+NjO6FVOB9ctlTgDzRJiW2WuDlGdHoOPCcQ Hk0YiYvhg2peU+euyWyOY5lkPSbIqAKu5XJTcrUO5yXMQrNI+MMT+gwRcDKhArNFdr4a /2H8VFNUJ57rsyAH/NCIdW98g6nqpDsg1pFo2eHT29Wb+88HkyX5gxYXFzrI6uLwY2Gy Kdg+CijchD43Lg+LbWS7MHYBPmyeShW+7cFCIwyXIJRUoMgbQQAyPJUkPw5eaQdvsFLe hudHJQ3sbXUa0EhPvWnAHOaekSxsmSu4KQGhmuUrh+BFtmHX9AfWlR6FrZd21L0wN4jC Lvmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=JC4S4AeH; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u17si1125359pjn.141.2021.04.21.18.24.43; Wed, 21 Apr 2021 18:24:55 -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=@gmail.com header.s=20161025 header.b=JC4S4AeH; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242966AbhDUU64 (ORCPT + 99 others); Wed, 21 Apr 2021 16:58:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59564 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240376AbhDUU6z (ORCPT ); Wed, 21 Apr 2021 16:58:55 -0400 Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::22c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D205C06174A; Wed, 21 Apr 2021 13:58:20 -0700 (PDT) Received: by mail-lj1-x22c.google.com with SMTP id a1so49309554ljp.2; Wed, 21 Apr 2021 13:58:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=HbjyALLYT9sc4ltzHbyvFrQq0il4AdDcmjIqRRdwAcg=; b=JC4S4AeHQz+8tvq0dKWeCwyFl4AglL83Ha1TC5CiNL8zURhrmL/Ym9y3VD2bHKflDl 3wT/+06zNZJBmopz7lqjc9wftqHaWu+1u8JGHF5ikLiKM2jfoocZcNstd0E0PqHTtc9a RjWTKWexDoTIXYUIkDoZmHJm4KrMehSHSTvbdirJs8l9yG4fmXTrCLEeZuGFa5fC7hgO VvW2Fycr44EPe1SW34Bsv/ROlsppm8V4CvVxocL//QQ60OgxlgTiPW6C5vE8WE49LBoW Fjb2akZP3c4mXkk8Q2Xvt9CxUl1lYMRoCZXn9NTQkeDgZWNIotuAaMUEKuecXIcEK/hy mxXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=HbjyALLYT9sc4ltzHbyvFrQq0il4AdDcmjIqRRdwAcg=; b=r/zegBTTfhN9d3rkae0k/fHzMZJ8Hx+odJLAAi/kY6J+Cbazrehn4USOda1ptX99JB wJU7k+tfZSQ0uYezx0h88lwrOpZSTDeDoxPljRHn2ZA6oyn3DNJ03/8JNw+Z/tYXge0h mV1D81VzApmnQe3lpVS0nX+v1g4oZIdgmvUGjT2gNRsrZsXbN6ZGjqUNhdECCZnMA1Ea qId4nrZuSu31qqgG2HQBJ/vwCS8v1ta/0OFZSry0ZrF48bi2br/F8pil5jVpq81ZHP07 FepHh7uJ5Rc58xrjnkpmZ8KRcM9kS5WmWJiM5xJRrSxj6js0xrrVN9PduISJomcKCapK /j0Q== X-Gm-Message-State: AOAM530Hj9VL6laamksLfX+immFDJ7iXSDXJjeBBfZUHuyI1qRcCK5pa LGEWeHoNR8HO0jdGxP5q/YNC1E+ZC98= X-Received: by 2002:a2e:6a05:: with SMTP id f5mr102861ljc.23.1619038698931; Wed, 21 Apr 2021 13:58:18 -0700 (PDT) Received: from [192.168.2.145] (109-252-193-103.dynamic.spd-mgts.ru. [109.252.193.103]) by smtp.googlemail.com with ESMTPSA id b10sm66928ljr.109.2021.04.21.13.58.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 21 Apr 2021 13:58:18 -0700 (PDT) Subject: Re: BUG: iio: mpu3050: Wrong temperature scale To: Andy Shevchenko , Lars-Peter Clausen Cc: Linus Walleij , Jonathan Cameron , "linux-iio@vger.kernel.org" , Linux Kernel Mailing List , Svyatoslav Ryhel , Jean-Baptiste Maneyrol References: <483ac17b-705a-38c3-54ee-7f0089262c03@gmail.com> From: Dmitry Osipenko Message-ID: Date: Wed, 21 Apr 2021 23:58:17 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 21.04.2021 23:04, Andy Shevchenko пишет: > On Wed, Apr 21, 2021 at 11:02 PM Andy Shevchenko > wrote: >> >> On Wed, Apr 21, 2021 at 11:00 PM Lars-Peter Clausen wrote: >>> On 4/21/21 9:41 PM, Andy Shevchenko wrote: >>>> On Wed, Apr 21, 2021 at 10:05 PM Andy Shevchenko >>>> wrote: >>>>> On Wed, Apr 21, 2021 at 1:14 PM Linus Walleij wrote: >>>>>> On Tue, Apr 20, 2021 at 11:26 PM Dmitry Osipenko wrote: >>>>>> >>>>>>> I found a non-kernel example >>>>>>> which uses a similar equation [1], but in a different form. The main >>>>>>> difference is that the Arduino code interprets a raw temperature value >>>>>>> as a signed integer, while upstream assumes it's unsigned. >>>>>>> >>>>>>> [1] >>>>>>> https://github.com/blaisejarrett/Arduino-Lib.MPU3050/blob/master/MPU3050lib.cpp#L111 >>>>>> Oh that's nice. Room temperature as mentioned is 20 deg C >>>>>> I think? >>>>>> >>>>>> The divide by 280 part seems coherent in all examples. >>>>>> >>>>>>> Still, even if assume that the raw temperature is a signed s16 value, it >>>>>>> gives us ~35C in a result, which should be off by ~10C. >>>>> Actually here [1] it says in chapter 3.1 that room temperature is 35°C. >>>>> >>>>> Range: -30°C .. +85°C >>>>> Sensitivity: 280 LSB/°C >>>>> Room temperature offset: 35°C = -13200 LSB >>>>> >>>>> [1]: https://www.cdiweb.com/datasheets/invensense/mpu-3000a.pdf >>>> >>>> So, if I'm reading this and the register description right the value >>>> is in the range >>>> -32768..32767. >>>> -13200 defines 35°C >>>> >>>> 50000 as mentioned by Dmitry is actually -15536. So, it means that the >>>> more negative a value is the higher temperature is shown. >>>> >>>> Since it's linearized scale, now we can see that >>>> >>>> (13200 -15536)/280 + 35 gives us 26.66. >>>> >>>> Does it make sense? >>> (13200 + x)/280 + 35 = (23000 + x)/280, which is what is in the driver. >>> So the only bit missing is the cast to s16. >> >> Cool! So, that cast needs a very good comment then :-) > > "will need" (since it's not yet in upstream) > > The exact value I'm getting is 52144, which is -13392 and gives us 35C. I see that the datasheet says it should be a temperature of the sensor die, so maybe it's a correct value, although it means that it's warm as much as ARM CPU core, which is questionable to me whether it's a correct value.