linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: edubezval@gmail.com (Eduardo Valentin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 04/21] thermal: of: Extend current of-thermal.c code to allow setting emulated temp
Date: Thu, 6 Nov 2014 21:44:50 -0400	[thread overview]
Message-ID: <20141107014448.GE10180@developer> (raw)
In-Reply-To: <1412872737-624-5-git-send-email-l.majewski@samsung.com>

Hello,

On Thu, Oct 09, 2014 at 06:38:40PM +0200, Lukasz Majewski wrote:
> Before this change it was only possible to set get_temp() and get_trend()
> methods to be used in the common code handling passing parameters via
> device tree to "cpu-thermal" CPU thermal zone device.
> 
> Now it is possible to also set emulated value of temperature for debug
> purposes.
> 
> Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> ---
>  drivers/thermal/of-thermal.c | 25 ++++++++++++++++++++++---
>  include/linux/thermal.h      |  6 ++++--
>  2 files changed, 26 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
> index cd74e64..f206375 100644
> --- a/drivers/thermal/of-thermal.c
> +++ b/drivers/thermal/of-thermal.c
> @@ -98,10 +98,22 @@ struct __thermal_zone {
>  	void *sensor_data;
>  	int (*get_temp)(void *, long *);
>  	int (*get_trend)(void *, long *);
> +	int (*set_emul_temp)(void *, unsigned long);
>  };
>  
>  /***   DT thermal zone device callbacks   ***/
>  
> +static int of_thermal_set_emul_temp(struct thermal_zone_device *tz,
> +				    unsigned long temp)
> +{
> +	struct __thermal_zone *data = tz->devdata;
> +
> +	if (!data->set_emul_temp)
> +		return -EINVAL;
> +
> +	return data->set_emul_temp(data->sensor_data, temp);
> +}
> +
>  static int of_thermal_get_temp(struct thermal_zone_device *tz,
>  			       unsigned long *temp)
>  {
> @@ -352,7 +364,8 @@ static struct thermal_zone_device *
>  thermal_zone_of_add_sensor(struct device_node *zone,
>  			   struct device_node *sensor, void *data,
>  			   int (*get_temp)(void *, long *),
> -			   int (*get_trend)(void *, long *))
> +			   int (*get_trend)(void *, long *),
> +			   int (*set_emul_temp)(void *, unsigned long))

Thanks for improving the API. However, looking at what is above, it
starts to be pretty ugly. And for sure, this is not the last callback to
be added. I believe it is time to add a .ops in the of-thermal. While in
here, do you mind adding the .ops in a separated patch, then add the
.set_emul_temp in the .ops field?

>  {
>  	struct thermal_zone_device *tzd;
>  	struct __thermal_zone *tz;
> @@ -366,10 +379,12 @@ thermal_zone_of_add_sensor(struct device_node *zone,
>  	mutex_lock(&tzd->lock);
>  	tz->get_temp = get_temp;
>  	tz->get_trend = get_trend;
> +	tz->set_emul_temp = set_emul_temp;
>  	tz->sensor_data = data;
>  
>  	tzd->ops->get_temp = of_thermal_get_temp;
>  	tzd->ops->get_trend = of_thermal_get_trend;
> +	tzd->ops->set_emul_temp = of_thermal_set_emul_temp;
>  	mutex_unlock(&tzd->lock);
>  
>  	return tzd;
> @@ -411,7 +426,8 @@ thermal_zone_of_add_sensor(struct device_node *zone,
>  struct thermal_zone_device *
>  thermal_zone_of_sensor_register(struct device *dev, int sensor_id,
>  				void *data, int (*get_temp)(void *, long *),
> -				int (*get_trend)(void *, long *))
> +				int (*get_trend)(void *, long *),
> +				int (*set_emul_temp)(void *, unsigned long))
>  {
>  	struct device_node *np, *child, *sensor_np;
>  
> @@ -453,7 +469,8 @@ thermal_zone_of_sensor_register(struct device *dev, int sensor_id,
>  			return thermal_zone_of_add_sensor(child, sensor_np,
>  							  data,
>  							  get_temp,
> -							  get_trend);
> +							  get_trend,
> +							  set_emul_temp);
>  		}
>  	}
>  	of_node_put(np);
> @@ -494,9 +511,11 @@ void thermal_zone_of_sensor_unregister(struct device *dev,
>  	mutex_lock(&tzd->lock);
>  	tzd->ops->get_temp = NULL;
>  	tzd->ops->get_trend = NULL;
> +	tzd->ops->set_emul_temp = NULL;
>  
>  	tz->get_temp = NULL;
>  	tz->get_trend = NULL;
> +	tz->set_emul_temp = NULL;
>  	tz->sensor_data = NULL;
>  	mutex_unlock(&tzd->lock);
>  }
> diff --git a/include/linux/thermal.h b/include/linux/thermal.h
> index 0305cde..36010e9 100644
> --- a/include/linux/thermal.h
> +++ b/include/linux/thermal.h
> @@ -290,14 +290,16 @@ struct thermal_genl_event {
>  struct thermal_zone_device *
>  thermal_zone_of_sensor_register(struct device *dev, int id,
>  				void *data, int (*get_temp)(void *, long *),
> -				int (*get_trend)(void *, long *));
> +				int (*get_trend)(void *, long *),
> +				int (*set_emul_temp)(void *, unsigned long));
>  void thermal_zone_of_sensor_unregister(struct device *dev,
>  				       struct thermal_zone_device *tz);
>  #else
>  static inline struct thermal_zone_device *
>  thermal_zone_of_sensor_register(struct device *dev, int id,
>  				void *data, int (*get_temp)(void *, long *),
> -				int (*get_trend)(void *, long *))
> +				int (*get_trend)(void *, long *),
> +				int (*set_emul_temp)(void *, unsigned long))
>  {
>  	return NULL;
>  }
> -- 
> 2.0.0.rc2
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20141106/f8997fc6/attachment.sig>

  reply	other threads:[~2014-11-07  1:44 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-09 16:38 [PATCH 00/21] thermal: exynos: Thermal code rework to use device tree Lukasz Majewski
2014-10-09 16:38 ` [PATCH 01/21] thermal: of: Extend of-thermal.c to provide number of trip points Lukasz Majewski
2014-11-07  1:34   ` Eduardo Valentin
2014-11-07  9:14     ` Lukasz Majewski
2014-10-09 16:38 ` [PATCH 02/21] thermal: of: Extend of-thermal.c to provide check if trip point is enabled Lukasz Majewski
2014-11-07  1:37   ` Eduardo Valentin
2014-11-07  9:15     ` Lukasz Majewski
2014-10-09 16:38 ` [PATCH 03/21] thermal: of: Extend of-thermal.c to provide number of non critical trip points Lukasz Majewski
2014-11-07  1:41   ` Eduardo Valentin
2014-11-07 10:05     ` Lukasz Majewski
2014-11-07 16:06       ` Eduardo Valentin
2014-11-07 16:43         ` Lukasz Majewski
2014-11-12  9:42         ` Lukasz Majewski
2014-11-18 15:20           ` Eduardo Valentin
2014-11-18 20:25             ` Lukasz Majewski
2014-11-07 23:04       ` Dmitry Torokhov
2014-10-09 16:38 ` [PATCH 04/21] thermal: of: Extend current of-thermal.c code to allow setting emulated temp Lukasz Majewski
2014-11-07  1:44   ` Eduardo Valentin [this message]
2014-11-07 11:20     ` Lukasz Majewski
2014-11-18 15:23       ` Eduardo Valentin
2014-11-18 20:28         ` Lukasz Majewski
2014-10-09 16:38 ` [PATCH 05/21] thermal: exynos: cosmetic: Correct comment format Lukasz Majewski
2014-10-09 16:38 ` [PATCH 06/21] thermal: exynos: Provide thermal_exynos.h file to be included in device tree files Lukasz Majewski
2014-10-09 16:38 ` [PATCH 07/21] thermal: dts: trats: Enable TMU on the Exynos4210 trats device Lukasz Majewski
2014-10-09 16:38 ` [PATCH 08/21] thermal: dts: exynos: Adding LD010 regulator node necessary for TMU on Odroid U3 board Lukasz Majewski
2014-10-09 16:38 ` [PATCH 09/21] thermal: dts: Provide bindings and enable TMU at Exynos4x12 devices Lukasz Majewski
2014-10-09 16:38 ` [PATCH 10/21] thermal: cpu_cooling: dts: Define device tree bindings for Exynos cpu cooling functionality Lukasz Majewski
2014-10-09 16:38 ` [PATCH 11/21] thermal: cpu_cooling: Modify exynos thermal code to use device tree for cpu cooling configuration Lukasz Majewski
2014-10-09 16:38 ` [PATCH 12/21] thermal: exynos: dts: Add default definition for the TMU sensor Lukasz Majewski
2014-10-09 16:38 ` [PATCH 13/21] thermal: dts: Default trip points definition for Exynos5420 SoCs Lukasz Majewski
2014-10-09 16:38 ` [PATCH 14/21] thermal: exynos: dts: Define default thermal-zones for Exynos4 Lukasz Majewski
2014-10-09 16:38 ` [PATCH 15/21] thermal: dts: exynos: Trip points and sensor configuration data for Exynos5440 Lukasz Majewski
2014-10-09 16:38 ` [PATCH 16/21] thermal: exynos: dts: Provide device tree bindings identical to one in exynos_tmu_data.c Lukasz Majewski
2014-10-09 16:38 ` [PATCH 17/21] thermal: samsung: core: Exynos TMU rework to use device tree for configuration Lukasz Majewski
2014-10-09 16:38 ` [PATCH 18/21] thermal: exynos: Remove exynos_thermal_common.[c|h] files Lukasz Majewski
2014-10-09 16:38 ` [PATCH 19/21] thermal: exynos: Remove exynos_tmu_data.c file Lukasz Majewski
2014-10-09 16:38 ` [PATCH 20/21] thermal: exynos: Make Exynos5250 TMU compatible with Exynos4412 Lukasz Majewski
2014-10-09 16:38 ` [PATCH 21/21] thermal: exynos: Make Exynos3250 " Lukasz Majewski
2014-10-09 23:34   ` Chanwoo Choi
2014-10-10  8:51     ` Lukasz Majewski
2014-10-23  8:50 ` [PATCH 00/21] thermal: exynos: Thermal code rework to use device tree Lukasz Majewski

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=20141107014448.GE10180@developer \
    --to=edubezval@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).