All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Paul Fertser <fercerpav@gmail.com>
Cc: linux-hwmon@vger.kernel.org, Jean Delvare <jdelvare@suse.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 3/3] hwmon: tmp421: fix rounding for negative values
Date: Fri, 24 Sep 2021 05:01:20 -0700	[thread overview]
Message-ID: <20210924120120.GA2695828@roeck-us.net> (raw)
In-Reply-To: <20210924093011.26083-3-fercerpav@gmail.com>

On Fri, Sep 24, 2021 at 12:30:11PM +0300, Paul Fertser wrote:
> Old code produces -24999 for 0b1110011100000000 input in standard format due to
> always rounding up rather than "away from zero".
> 
> Use the common macro for division, unify and simplify the conversion code along
> the way.
> 
> Fixes: 9410700b881f ("hwmon: Add driver for Texas Instruments TMP421/422/423 sensor chips")
> Signed-off-by: Paul Fertser <fercerpav@gmail.com>

Applied.

Thanks,
Guenter

> ---
> 
> Changes from v2:
>  - Add Fixes: tag
> 
> Changes from v1:
>  - Trivial rebase
> 
>  drivers/hwmon/tmp421.c | 24 ++++++++----------------
>  1 file changed, 8 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/hwmon/tmp421.c b/drivers/hwmon/tmp421.c
> index 3a789f21188c..85f5f0eb3d2e 100644
> --- a/drivers/hwmon/tmp421.c
> +++ b/drivers/hwmon/tmp421.c
> @@ -100,23 +100,17 @@ struct tmp421_data {
>  	s16 temp[4];
>  };
>  
> -static int temp_from_s16(s16 reg)
> +static int temp_from_raw(u16 reg, bool extended)
>  {
>  	/* Mask out status bits */
>  	int temp = reg & ~0xf;
>  
> -	return (temp * 1000 + 128) / 256;
> -}
> -
> -static int temp_from_u16(u16 reg)
> -{
> -	/* Mask out status bits */
> -	int temp = reg & ~0xf;
> -
> -	/* Add offset for extended temperature range. */
> -	temp -= 64 * 256;
> +	if (extended)
> +		temp = temp - 64 * 256;
> +	else
> +		temp = (s16)temp;
>  
> -	return (temp * 1000 + 128) / 256;
> +	return DIV_ROUND_CLOSEST(temp * 1000, 256);
>  }
>  
>  static int tmp421_update_device(struct tmp421_data *data)
> @@ -175,10 +169,8 @@ static int tmp421_read(struct device *dev, enum hwmon_sensor_types type,
>  
>  	switch (attr) {
>  	case hwmon_temp_input:
> -		if (tmp421->config & TMP421_CONFIG_RANGE)
> -			*val = temp_from_u16(tmp421->temp[channel]);
> -		else
> -			*val = temp_from_s16(tmp421->temp[channel]);
> +		*val = temp_from_raw(tmp421->temp[channel],
> +				     tmp421->config & TMP421_CONFIG_RANGE);
>  		return 0;
>  	case hwmon_temp_fault:
>  		/*

  reply	other threads:[~2021-09-24 12:01 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-22 13:41 [PATCH 1/3] hwmon: tmp421: handle I2C errors Paul Fertser
2021-09-22 13:41 ` [PATCH 2/3] hwmon: tmp421: report /PVLD condition Paul Fertser
2021-09-22 13:41 ` [PATCH 3/3] hwmon: tmp421: fix rounding for negative values Paul Fertser
2021-09-22 15:53 ` [PATCH 1/3] hwmon: tmp421: handle I2C errors Guenter Roeck
2021-09-23  9:47   ` [PATCH v2 " Paul Fertser
2021-09-23  9:48     ` [PATCH v2 2/3] hwmon: tmp421: report /PVLD condition Paul Fertser
2021-09-23  9:48     ` [PATCH v2 3/3] hwmon: tmp421: fix rounding for negative values Paul Fertser
2021-09-24  2:21       ` Guenter Roeck
2021-09-24  2:20     ` [PATCH v2 1/3] hwmon: tmp421: handle I2C errors Guenter Roeck
2021-09-24  7:44       ` Paul Fertser
2021-09-24 11:35         ` Guenter Roeck
2021-09-24 19:52           ` [PATCH] hwmon: cleanup non-bool "valid" data fields Paul Fertser
2021-09-25 13:23             ` Guenter Roeck
2021-10-08 14:21             ` Guenter Roeck
2021-09-24  9:30       ` [PATCH v3 1/3] hwmon: tmp421: handle I2C errors Paul Fertser
2021-09-24  9:30         ` [PATCH v3 2/3] hwmon: tmp421: report /PVLD condition as fault Paul Fertser
2021-09-24 11:59           ` Guenter Roeck
2021-09-24  9:30         ` [PATCH v3 3/3] hwmon: tmp421: fix rounding for negative values Paul Fertser
2021-09-24 12:01           ` Guenter Roeck [this message]
2021-09-24 11:58         ` [PATCH v3 1/3] hwmon: tmp421: handle I2C errors Guenter Roeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210924120120.GA2695828@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=fercerpav@gmail.com \
    --cc=jdelvare@suse.com \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.