All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Valentin <edubezval@gmail.com>
To: Caesar Wang <wxt@rock-chips.com>
Cc: rui.zhang@intel.com, heiko@sntech.de, smbarber@chromium.org,
	briannorris@chromium.org, linux-kernel@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-rockchip@lists.infradead.org
Subject: Re: [PATCH v3 4/5] thermal: rockchip: optimize the conversion table
Date: Mon, 28 Nov 2016 17:48:14 -0800	[thread overview]
Message-ID: <20161129014814.GB3097@localhost.localdomain> (raw)
In-Reply-To: <1480331524-18741-5-git-send-email-wxt@rock-chips.com>

On Mon, Nov 28, 2016 at 07:12:03PM +0800, Caesar Wang wrote:
> In order to support the valid temperature can conver to analog value.
> The rockchip thermal driver has not supported the all valid temperature
> to convert the analog value. (e.g.: 61C, 62C, 63C....)
> 
> For example:
> In some cases, we need adjust the trip point.
> $cd /sys/class/thermal/thermal_zone*
> $echo 68000 > trip_point_0_temp
> That will return the max analogic value indicates the invalid before
> posting this patch.
> 
> So, this patch will optimize the conversion table to support the other
> cases.
> 
> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
> Reviewed-by: Brian Norris <briannorris@chromium.org>
> ---
> 
> Changes in v3: None
> Changes in v2:
> - improve the commit as Brian commnets on https://patchwork.kernel.org/patch/9440985
> 
> Changes in v1: None
> 
>  drivers/thermal/rockchip_thermal.c | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchip_thermal.c
> index ca1730e..660ed3b 100644
> --- a/drivers/thermal/rockchip_thermal.c
> +++ b/drivers/thermal/rockchip_thermal.c
> @@ -401,6 +401,8 @@ static u32 rk_tsadcv2_temp_to_code(const struct chip_tsadc_table *table,
>  				   int temp)
>  {
>  	int high, low, mid;
> +	unsigned long num;
> +	unsigned int denom;
>  	u32 error = table->data_mask;
>  
>  	low = 0;
> @@ -421,6 +423,27 @@ static u32 rk_tsadcv2_temp_to_code(const struct chip_tsadc_table *table,
>  		mid = (low + high) / 2;
>  	}
>  
> +	/*
> +	 * The conversion code granularity provided by the table. Let's
> +	 * assume that the relationship between temperature and
> +	 * analog value between 2 table entries is linear and interpolate
> +	 * to produce less granular result.
> +	 */
> +	num = abs(table->id[mid].code - table->id[mid + 1].code);
> +	num *= temp - table->id[mid].temp;
> +	denom = table->id[mid + 1].temp - table->id[mid].temp;
> +
> +	switch (table->mode) {
> +	case ADC_DECREMENT:
> +		return table->id[mid].code - (num / denom);
> +	case ADC_INCREMENT:
> +		return table->id[mid].code + (num / denom);
> +	default:
> +		pr_err("%s: invalid conversion table, mode=%d\n",

Is this really an invalid conversion table, or an invalid conversion mode?

> +		       __func__, table->mode);
> +		return error;
> +	}
> +
>  exit:
>  	pr_err("%s: invalid temperature, temp=%d error=%d\n",
>  	       __func__, temp, error);
> -- 
> 2.7.4
> 

  reply	other threads:[~2016-11-29  1:48 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-28 11:11 [PATCH v3 0/5] thermal: fixes the rockchip thermal Caesar Wang
2016-11-28 11:12 ` [PATCH v3 3/5] thermal: rockchip: fixes invalid temperature case Caesar Wang
2016-11-28 18:47   ` Brian Norris
2016-11-29  1:45   ` Eduardo Valentin
     [not found]     ` <20161129014553.GA3097-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2016-11-29 21:57       ` Brian Norris
2016-11-29 21:57         ` Brian Norris
2016-11-30  5:02         ` Eduardo Valentin
2016-11-30  5:59           ` Brian Norris
2016-11-30  6:26             ` Eduardo Valentin
2016-12-12 10:46               ` Caesar Wang
     [not found] ` <1480331524-18741-1-git-send-email-wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-11-28 11:12   ` [PATCH v3 1/5] thermal: rockchip: improve conversion error messages Caesar Wang
2016-11-28 11:12     ` Caesar Wang
2016-11-29  1:51     ` Eduardo Valentin
2016-11-29  5:47       ` Brian Norris
2016-11-30  5:04         ` Eduardo Valentin
2016-12-12 10:47           ` Caesar Wang
2016-11-28 11:12   ` [PATCH v3 2/5] thermal: rockchip: don't pass table structs by value Caesar Wang
2016-11-28 11:12     ` Caesar Wang
2016-11-28 11:12   ` [PATCH v3 4/5] thermal: rockchip: optimize the conversion table Caesar Wang
2016-11-28 11:12     ` Caesar Wang
2016-11-29  1:48     ` Eduardo Valentin [this message]
2016-11-30  6:29     ` Eduardo Valentin
2016-12-12 10:48       ` Caesar Wang
2016-11-28 11:12   ` [PATCH v3 5/5] thermal: rockchip: handle set_trips without the trip points Caesar Wang
2016-11-28 11:12     ` Caesar Wang

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=20161129014814.GB3097@localhost.localdomain \
    --to=edubezval@gmail.com \
    --cc=briannorris@chromium.org \
    --cc=heiko@sntech.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=rui.zhang@intel.com \
    --cc=smbarber@chromium.org \
    --cc=wxt@rock-chips.com \
    /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.