From patchwork Wed Dec 30 05:13:02 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leo Yan X-Patchwork-Id: 59071 Delivered-To: patch@linaro.org Received: by 10.112.130.2 with SMTP id oa2csp2648311lbb; Tue, 29 Dec 2015 21:13:41 -0800 (PST) X-Received: by 10.98.80.144 with SMTP id g16mr90791838pfj.68.1451452421181; Tue, 29 Dec 2015 21:13:41 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id hg4si7511999pac.180.2015.12.29.21.13.40; Tue, 29 Dec 2015 21:13:41 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dkim=neutral (body hash did not verify) header.i=@linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751039AbbL3FN1 (ORCPT + 29 others); Wed, 30 Dec 2015 00:13:27 -0500 Received: from mail-pa0-f50.google.com ([209.85.220.50]:33182 "EHLO mail-pa0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750784AbbL3FNY (ORCPT ); Wed, 30 Dec 2015 00:13:24 -0500 Received: by mail-pa0-f50.google.com with SMTP id cy9so133508327pac.0 for ; Tue, 29 Dec 2015 21:13:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=Wm2yDFz26wwyxtXzgWz25hub+X06CsVL7bdH5xH8LUQ=; b=BHCBC07n0py/qlLp/psOczED/MLOO8CH5y4x5zWUW4zwQTAB+Nf4ZHnzSQJutIo/cw nSbJif2cpdmoSI/JKdS4BTXVfh8ha0E/mjAIzBtnivehDSCJkq2nL1WJgRc6RcsZ/8J5 uW8r0B0YGrywitaot6x4mTT8byFkxB7+N6YPI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=Wm2yDFz26wwyxtXzgWz25hub+X06CsVL7bdH5xH8LUQ=; b=e06ye3K3hF79Ycf/AgPBZfrndE9bfxA8Ez8j2/RCfU3VRONdw8mnwu8cW6AyRmjsIY kgYqFIWdI34idNhar3bghR8tKTz++ZSbdU52QqbSPv1C4geMhClRpAazVRm9agdFY4QJ durwXUXJwRIVePBKerBsWLJ60seaX5V9pGRxtqB1mV3tO1//jEInoOHjGVOwciqDybIG uskz5HqkEbA0Zlw7QMNiQPORcb0z9IKps8Kf3XUhiENhqOwxdIYvn44airAnUErUITQw ECTGMZHPD1SsVsOlIjA0TzPQNwzO+3kn6VJcFB+AxrMh0D03nu1CVMW08PprTI8pqet0 Xndw== X-Gm-Message-State: ALoCoQmrZSec/dxR9QLodR7idZaCBVf0r8DZdJW0H5DjrsTe0SH+O+LdIfK1E6OlXPCy/vD5VJkUKuFTczAZaeFs1jYPDZEKbg== X-Received: by 10.66.100.198 with SMTP id fa6mr49490827pab.123.1451452403686; Tue, 29 Dec 2015 21:13:23 -0800 (PST) Received: from localhost.localdomain (v17.blockcn.net. [192.241.236.26]) by smtp.gmail.com with ESMTPSA id r193sm86624869pfr.65.2015.12.29.21.13.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 29 Dec 2015 21:13:22 -0800 (PST) From: Leo Yan To: Zhang Rui , Eduardo Valentin , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, kongxinwei Cc: Leo Yan Subject: [PATCH] thermal: hisilicon: increase temperature resolution Date: Wed, 30 Dec 2015 13:13:02 +0800 Message-Id: <1451452382-4498-1-git-send-email-leo.yan@linaro.org> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When calculate temperature, old code firstly do division and then convert to "millicelsius" unit. This will lose resolution and only can read back temperature with "Celsius" unit. So firstly scale step value to "millicelsius" and then do division, so finally we can increase resolution for temperature value. Also refine the calculation from temperature value to step value. Signed-off-by: Leo Yan --- drivers/thermal/hisi_thermal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index 36d0729..5e820b5 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -68,12 +68,12 @@ static inline int _step_to_temp(int step) * Every step equals (1 * 200) / 255 celsius, and finally * need convert to millicelsius. */ - return (HISI_TEMP_BASE + (step * 200 / 255)) * 1000; + return (HISI_TEMP_BASE * 1000 + (step * 200000 / 255)); } static inline long _temp_to_step(long temp) { - return ((temp / 1000 - HISI_TEMP_BASE) * 255 / 200); + return ((temp - HISI_TEMP_BASE * 1000) * 255) / 200000; } static long hisi_thermal_get_sensor_temp(struct hisi_thermal_data *data,