lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20150512032751.GJ4810@localhost.localdomain>
Date:	Mon, 11 May 2015 20:27:52 -0700
From:	Eduardo Valentin <edubezval@...il.com>
To:	Rui Zhang <rui.zhang@...el.com>, hongtao.jia@...escale.com,
	kong.kongxinwei@...ilicon.com, nrajan@...eaurora.org
Cc:	Linux PM <linux-pm@...r.kernel.org>,
	LKML <linux-kernel@...r.kernel.org>,
	Linux ACPI <linux-acpi@...r.kernel.org>
Subject: Re: [PATCH 2/2] thermal: of-thermal: add support for reading
 coefficients property  33 O   May 11 Antoine Tenart  ( 15K) [PATCH v4 1/3]
 iio: adc: add support for Berlin

Copying Narendran.

On Mon, May 11, 2015 at 08:04:17PM -0700, Eduardo Valentin wrote:
> In order to avoid having each driver adding their own
> specific DT property to specify slope and offset,
> this patch adds a basic coefficient reading from
> DT thermal zone node. Right now, as the thermal
> framework does not support multiple sensors,
> the current coefficients apply only to the only
> sensor in the thermal zone.
> 
> The supported equation is a simple linear model:
> 	slope * <sensor reading> + offset.
> 
> slope and offset are read from the coefficients
> DT property. In the same way as it is described in
> the DT thermal binding.
> 
> So, as of today, the thermal framework will support
> only cases like:
>                 /* hotspot = 1 * adc + 6000 */
> 		coefficients =          <1      6000>;
> 
> Signed-off-by: Eduardo Valentin <edubezval@...il.com>
> ---
>  drivers/thermal/of-thermal.c | 26 ++++++++++++++++++++++++--
>  1 file changed, 24 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
> index 9e8c614..b295b2b 100644
> --- a/drivers/thermal/of-thermal.c
> +++ b/drivers/thermal/of-thermal.c
> @@ -58,6 +58,8 @@ struct __thermal_bind_params {
>   * @mode: current thermal zone device mode (enabled/disabled)
>   * @passive_delay: polling interval while passive cooling is activated
>   * @polling_delay: zone polling interval
> + * @slope: slope of the temperature adjustment curve
> + * @offset: offset of the temperature adjustment curve
>   * @ntrips: number of trip points
>   * @trips: an array of trip points (0..ntrips - 1)
>   * @num_tbps: number of thermal bind params
> @@ -70,6 +72,8 @@ struct __thermal_zone {
>  	enum thermal_device_mode mode;
>  	int passive_delay;
>  	int polling_delay;
> +	int slope;
> +	int offset;
>  
>  	/* trip data */
>  	int ntrips;
> @@ -716,7 +720,7 @@ static int thermal_of_populate_trip(struct device_node *np,
>   * @np parameter and fills the read data into a __thermal_zone data structure
>   * and return this pointer.
>   *
> - * TODO: Missing properties to parse: thermal-sensor-names and coefficients
> + * TODO: Missing properties to parse: thermal-sensor-names
>   *
>   * Return: On success returns a valid struct __thermal_zone,
>   * otherwise, it returns a corresponding ERR_PTR(). Caller must
> @@ -728,7 +732,7 @@ thermal_of_build_thermal_zone(struct device_node *np)
>  	struct device_node *child = NULL, *gchild;
>  	struct __thermal_zone *tz;
>  	int ret, i;
> -	u32 prop;
> +	u32 prop, coef[2];
>  
>  	if (!np) {
>  		pr_err("no thermal zone np\n");
> @@ -753,6 +757,20 @@ thermal_of_build_thermal_zone(struct device_node *np)
>  	}
>  	tz->polling_delay = prop;
>  
> +	/*
> +	 * REVIST: for now, the thermal framework supports only
> +	 * one sensor per thermal zone. Thus, we are considering
> +	 * only the first two values as slope and offset.
> +	 */
> +	ret = of_property_read_u32_array(np, "coefficients", coef, 2);
> +	if (ret == 0) {
> +		tz->slope = coef[0];
> +		tz->offset = coef[1];
> +	} else {
> +		tz->slope = 1;
> +		tz->offset = 0;
> +	}
> +
>  	/* trips */
>  	child = of_get_child_by_name(np, "trips");
>  
> @@ -900,6 +918,10 @@ int __init of_parse_thermal_zones(void)
>  		for (i = 0; i < tz->ntrips; i++)
>  			mask |= 1 << i;
>  
> +		/* these two are left for temperature drivers to use */
> +		tzp->slope = tz->slope;
> +		tzp->offset = tz->offset;
> +
>  		zone = thermal_zone_device_register(child->name, tz->ntrips,
>  						    mask, tz,
>  						    ops, tzp,
> -- 
> 2.3.4
> 

Download attachment "signature.asc" of type "application/pgp-signature" (491 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ