From patchwork Tue Dec 15 19:17:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lars-Peter Clausen X-Patchwork-Id: 11975643 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=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,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 8EB2FC2BBCD for ; Tue, 15 Dec 2020 19:19:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4836E22ADC for ; Tue, 15 Dec 2020 19:19:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731956AbgLOTTG (ORCPT ); Tue, 15 Dec 2020 14:19:06 -0500 Received: from www381.your-server.de ([78.46.137.84]:43388 "EHLO www381.your-server.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731962AbgLOTTD (ORCPT ); Tue, 15 Dec 2020 14:19:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=metafoo.de; s=default2002; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID; bh=sjY3ds+hi1cThHpkzshSqwhoo//I6mAJFhLBgpt5N94=; b=Pz1iLiJSdiNUkdneWoyCVxSASh egPTynjFXbJxmTa2GpVN9fWluzGz03k95DA9m4KoSrWLe2zsCIMLFrFvtYtnbRQjh7I4d9jEvMtvv AWvoGURA6BquxPuHwNkiEQvtp80uA1RbUvOFC2w8agMzfi9+tRZSHJDJd9SaEGUyvLImryX3aXaSl yux6AAEkkecZ6NpG+0jaF8i72tWQMODfpuwKONs4FMHsvRoIOh6CVfngKIpm2T1E7+Hm6XhTygtGC o7yF59N0ZoYS0nor2EYxC7hSTs3XRzaTXVkkAykmhRKUkr5fRqDwPPsA6jPZJS5gmpKat6dkC9q81 GTf7oqhQ==; Received: from sslproxy03.your-server.de ([88.198.220.132]) by www381.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92.3) (envelope-from ) id 1kpFps-000E1l-Ke; Tue, 15 Dec 2020 20:18:12 +0100 Received: from [62.216.202.54] (helo=lars-desktop.fritz.box) by sslproxy03.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kpFps-0002L1-H4; Tue, 15 Dec 2020 20:18:12 +0100 From: Lars-Peter Clausen To: Jonathan Cameron Cc: Peter Meerwald-Stadler , linux-iio@vger.kernel.org, Lars-Peter Clausen Subject: [PATCH 2/3] iio: iio_format_value(): Fix IIO_VAL_FRACTIONAL_LOG2 values between -1.0 and 0.0 Date: Tue, 15 Dec 2020 20:17:42 +0100 Message-Id: <20201215191743.2725-2-lars@metafoo.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201215191743.2725-1-lars@metafoo.de> References: <20201215191743.2725-1-lars@metafoo.de> MIME-Version: 1.0 X-Authenticated-Sender: lars@metafoo.de X-Virus-Scanned: Clear (ClamAV 0.102.4/26018/Tue Dec 15 15:37:09 2020) Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org When formatting a value using IIO_VAL_FRACTIONAL_LOG2 and the values is between -1 and 0 the sign is omitted. We need the same trick as for IIO_VAL_FRACTIONAL to make sure this gets formatted correctly. Signed-off-by: Lars-Peter Clausen --- Found while writing a unit test for this. Considering nobody complained we probably do not have an driver that will run into this issue at the moment. So this doesn't need to got to stable. --- drivers/iio/industrialio-core.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index d84b74cc544b..4b30c042e5f6 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -626,7 +626,10 @@ static ssize_t __iio_format_value(char *buf, size_t len, unsigned int type, case IIO_VAL_FRACTIONAL_LOG2: tmp2 = shift_right((s64)vals[0] * 1000000000LL, vals[1]); tmp0 = (int)div_s64_rem(tmp2, 1000000000LL, &tmp1); - return scnprintf(buf, len, "%d.%09u", tmp0, abs(tmp1)); + if (tmp0 == 0 && tmp2 < 0) + return snprintf(buf, len, "-0.%09u", abs(tmp1)); + else + return scnprintf(buf, len, "%d.%09u", tmp0, abs(tmp1)); case IIO_VAL_INT_MULTIPLE: { int i;