linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units
@ 2020-12-07 19:08 Daniel Lezcano
  2020-12-07 19:09 ` [PATCH v2 2/4] thermal/core: Precompute the delays from msecs to jiffies Daniel Lezcano
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Daniel Lezcano @ 2020-12-07 19:08 UTC (permalink / raw)
  To: daniel.lezcano, rui.zhang; +Cc: amitk, linux-kernel, linux-pm

The input unit used by the thermal framework is the msec but it uses
the jiffies to set the timers.

As it is stored in the thermal zone device structure, everytime the
timer is setup at each polling interval, the msecs to jiffies
conversion happens. The jiffies is the unit the thermal framework is
using, so keeping it under the jiffies instead of msecs will save some
pointless conversion.

Set the scene to directly store the delays under their jiffies
form by adding to the variable name the 'ms' suffix.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
 drivers/platform/x86/acerhdf.c                   |  2 +-
 drivers/thermal/da9062-thermal.c                 |  4 ++--
 drivers/thermal/gov_power_allocator.c            |  2 +-
 drivers/thermal/thermal_core.c                   | 10 +++++-----
 drivers/thermal/thermal_of.c                     | 16 ++++++++--------
 drivers/thermal/thermal_sysfs.c                  |  6 +++---
 .../thermal/ti-soc-thermal/ti-thermal-common.c   |  2 +-
 include/linux/thermal.h                          |  8 ++++----
 8 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c
index b6aa6e5514f4..7b26f601b407 100644
--- a/drivers/platform/x86/acerhdf.c
+++ b/drivers/platform/x86/acerhdf.c
@@ -336,7 +336,7 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)
 			pr_notice("interval changed to: %d\n", interval);
 
 		if (thermal)
-			thermal->polling_delay = interval*1000;
+			thermal->polling_delay_ms = interval*1000;
 
 		prev_interval = interval;
 	}
diff --git a/drivers/thermal/da9062-thermal.c b/drivers/thermal/da9062-thermal.c
index 4d74994f160a..ebb3d0b4a5be 100644
--- a/drivers/thermal/da9062-thermal.c
+++ b/drivers/thermal/da9062-thermal.c
@@ -95,7 +95,7 @@ static void da9062_thermal_poll_on(struct work_struct *work)
 		thermal_zone_device_update(thermal->zone,
 					   THERMAL_EVENT_UNSPECIFIED);
 
-		delay = msecs_to_jiffies(thermal->zone->passive_delay);
+		delay = msecs_to_jiffies(thermal->zone->passive_delay_ms);
 		queue_delayed_work(system_freezable_wq, &thermal->work, delay);
 		return;
 	}
@@ -245,7 +245,7 @@ static int da9062_thermal_probe(struct platform_device *pdev)
 
 	dev_dbg(&pdev->dev,
 		"TJUNC temperature polling period set at %d ms\n",
-		thermal->zone->passive_delay);
+		thermal->zone->passive_delay_ms);
 
 	ret = platform_get_irq_byname(pdev, "THERMAL");
 	if (ret < 0) {
diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c
index 7a4170a0b51f..f7a663f698d4 100644
--- a/drivers/thermal/gov_power_allocator.c
+++ b/drivers/thermal/gov_power_allocator.c
@@ -258,7 +258,7 @@ static u32 pid_controller(struct thermal_zone_device *tz,
 	 * power being applied, slowing down the controller)
 	 */
 	d = mul_frac(tz->tzp->k_d, err - params->prev_err);
-	d = div_frac(d, tz->passive_delay);
+	d = div_frac(d, tz->passive_delay_ms);
 	params->prev_err = err;
 
 	power_range = p + i + d;
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 1bd23ff2247b..5b500d72aab4 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -317,9 +317,9 @@ static void monitor_thermal_zone(struct thermal_zone_device *tz)
 	mutex_lock(&tz->lock);
 
 	if (!stop && tz->passive)
-		thermal_zone_device_set_polling(tz, tz->passive_delay);
-	else if (!stop && tz->polling_delay)
-		thermal_zone_device_set_polling(tz, tz->polling_delay);
+		thermal_zone_device_set_polling(tz, tz->passive_delay_ms);
+	else if (!stop && tz->polling_delay_ms)
+		thermal_zone_device_set_polling(tz, tz->polling_delay_ms);
 	else
 		thermal_zone_device_set_polling(tz, 0);
 
@@ -1340,8 +1340,8 @@ thermal_zone_device_register(const char *type, int trips, int mask,
 	tz->device.class = &thermal_class;
 	tz->devdata = devdata;
 	tz->trips = trips;
-	tz->passive_delay = passive_delay;
-	tz->polling_delay = polling_delay;
+	tz->passive_delay_ms = passive_delay;
+	tz->polling_delay_ms = polling_delay;
 
 	/* sys I/F */
 	/* Add nodes that are always present via .groups */
diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
index 69ef12f852b7..c01248e48c09 100644
--- a/drivers/thermal/thermal_of.c
+++ b/drivers/thermal/thermal_of.c
@@ -51,8 +51,8 @@ struct __thermal_bind_params {
 
 /**
  * struct __thermal_zone - internal representation of a thermal zone
- * @passive_delay: polling interval while passive cooling is activated
- * @polling_delay: zone polling interval
+ * @passive_delay_ms: polling interval while passive cooling is activated
+ * @polling_delay_ms: zone polling interval
  * @slope: slope of the temperature adjustment curve
  * @offset: offset of the temperature adjustment curve
  * @ntrips: number of trip points
@@ -64,8 +64,8 @@ struct __thermal_bind_params {
  */
 
 struct __thermal_zone {
-	int passive_delay;
-	int polling_delay;
+	int passive_delay_ms;
+	int polling_delay_ms;
 	int slope;
 	int offset;
 
@@ -865,14 +865,14 @@ __init *thermal_of_build_thermal_zone(struct device_node *np)
 		pr_err("%pOFn: missing polling-delay-passive property\n", np);
 		goto free_tz;
 	}
-	tz->passive_delay = prop;
+	tz->passive_delay_ms = prop;
 
 	ret = of_property_read_u32(np, "polling-delay", &prop);
 	if (ret < 0) {
 		pr_err("%pOFn: missing polling-delay property\n", np);
 		goto free_tz;
 	}
-	tz->polling_delay = prop;
+	tz->polling_delay_ms = prop;
 
 	/*
 	 * REVIST: for now, the thermal framework supports only
@@ -1085,8 +1085,8 @@ int __init of_parse_thermal_zones(void)
 		zone = thermal_zone_device_register(child->name, tz->ntrips,
 						    mask, tz,
 						    ops, tzp,
-						    tz->passive_delay,
-						    tz->polling_delay);
+						    tz->passive_delay_ms,
+						    tz->polling_delay_ms);
 		if (IS_ERR(zone)) {
 			pr_err("Failed to build %pOFn zone %ld\n", child,
 			       PTR_ERR(zone));
diff --git a/drivers/thermal/thermal_sysfs.c b/drivers/thermal/thermal_sysfs.c
index 0866e949339b..f465462d8aa1 100644
--- a/drivers/thermal/thermal_sysfs.c
+++ b/drivers/thermal/thermal_sysfs.c
@@ -233,12 +233,12 @@ passive_store(struct device *dev, struct device_attribute *attr,
 		return -EINVAL;
 
 	if (state && !tz->forced_passive) {
-		if (!tz->passive_delay)
-			tz->passive_delay = 1000;
+		if (!tz->passive_delay_ms)
+			tz->passive_delay_ms = 1000;
 		thermal_zone_device_rebind_exception(tz, "Processor",
 						     sizeof("Processor"));
 	} else if (!state && tz->forced_passive) {
-		tz->passive_delay = 0;
+		tz->passive_delay_ms = 0;
 		thermal_zone_device_unbind_exception(tz, "Processor",
 						     sizeof("Processor"));
 	}
diff --git a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
index 2ce4b19f312a..4baff19e1142 100644
--- a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
+++ b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
@@ -185,7 +185,7 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
 
 	ti_bandgap_set_sensor_data(bgp, id, data);
 	ti_bandgap_write_update_interval(bgp, data->sensor_id,
-					data->ti_thermal->polling_delay);
+					data->ti_thermal->polling_delay_ms);
 
 	return 0;
 }
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index d07ea27e72a9..230d451bf335 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -116,9 +116,9 @@ struct thermal_cooling_device {
  * @devdata:	private pointer for device private data
  * @trips:	number of trip points the thermal zone supports
  * @trips_disabled;	bitmap for disabled trips
- * @passive_delay:	number of milliseconds to wait between polls when
+ * @passive_delay_ms:	number of milliseconds to wait between polls when
  *			performing passive cooling.
- * @polling_delay:	number of milliseconds to wait between polls when
+ * @polling_delay_ms:	number of milliseconds to wait between polls when
  *			checking whether trip points have been crossed (0 for
  *			interrupt driven systems)
  * @temperature:	current temperature.  This is only for core code,
@@ -159,8 +159,8 @@ struct thermal_zone_device {
 	void *devdata;
 	int trips;
 	unsigned long trips_disabled;	/* bitmap for disabled trips */
-	int passive_delay;
-	int polling_delay;
+	int passive_delay_ms;
+	int polling_delay_ms;
 	int temperature;
 	int last_temperature;
 	int emul_temperature;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 2/4] thermal/core: Precompute the delays from msecs to jiffies
  2020-12-07 19:08 [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units Daniel Lezcano
@ 2020-12-07 19:09 ` Daniel Lezcano
  2020-12-10 15:58   ` Lukasz Luba
  2020-12-07 19:09 ` [PATCH v2 3/4] thermal/core: Use precomputed jiffies for the polling Daniel Lezcano
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 9+ messages in thread
From: Daniel Lezcano @ 2020-12-07 19:09 UTC (permalink / raw)
  To: daniel.lezcano, rui.zhang; +Cc: amitk, linux-kernel, linux-pm

The delays are stored in ms units and when the polling function is
called this delay is converted into jiffies at each call.

Instead of doing the conversion again and again, compute the jiffies
at init time and use the value directly when setting the polling.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
 drivers/thermal/thermal_core.c  |  5 +++--
 drivers/thermal/thermal_core.h  | 18 ++++++++++++++++++
 drivers/thermal/thermal_sysfs.c |  4 ++--
 include/linux/thermal.h         |  7 +++++++
 4 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 5b500d72aab4..08c6e4e36896 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1340,8 +1340,9 @@ thermal_zone_device_register(const char *type, int trips, int mask,
 	tz->device.class = &thermal_class;
 	tz->devdata = devdata;
 	tz->trips = trips;
-	tz->passive_delay_ms = passive_delay;
-	tz->polling_delay_ms = polling_delay;
+
+	thermal_zone_set_passive_delay(tz, passive_delay);
+	thermal_zone_set_polling_delay(tz, polling_delay);
 
 	/* sys I/F */
 	/* Add nodes that are always present via .groups */
diff --git a/drivers/thermal/thermal_core.h b/drivers/thermal/thermal_core.h
index 8df600fa7b79..2c9551ed5ef8 100644
--- a/drivers/thermal/thermal_core.h
+++ b/drivers/thermal/thermal_core.h
@@ -128,6 +128,24 @@ int thermal_build_list_of_policies(char *buf);
 /* Helpers */
 void thermal_zone_set_trips(struct thermal_zone_device *tz);
 
+static inline void thermal_zone_set_passive_delay(
+	struct thermal_zone_device *tz, int delay_ms)
+{
+	tz->passive_delay_ms = delay_ms;
+	tz->passive_delay_jiffies = msecs_to_jiffies(delay_ms);
+	if (delay_ms > 1000)
+		tz->passive_delay_jiffies = round_jiffies(tz->passive_delay_jiffies);
+}
+
+static inline void thermal_zone_set_polling_delay(
+	struct thermal_zone_device *tz, int delay_ms)
+{
+	tz->polling_delay_ms = delay_ms;
+	tz->polling_delay_jiffies = msecs_to_jiffies(delay_ms);
+	if (delay_ms > 1000)
+		tz->polling_delay_jiffies = round_jiffies(tz->polling_delay_jiffies);
+}
+
 /* sysfs I/F */
 int thermal_zone_create_device_groups(struct thermal_zone_device *, int);
 void thermal_zone_destroy_device_groups(struct thermal_zone_device *);
diff --git a/drivers/thermal/thermal_sysfs.c b/drivers/thermal/thermal_sysfs.c
index f465462d8aa1..9598b288a0a1 100644
--- a/drivers/thermal/thermal_sysfs.c
+++ b/drivers/thermal/thermal_sysfs.c
@@ -234,11 +234,11 @@ passive_store(struct device *dev, struct device_attribute *attr,
 
 	if (state && !tz->forced_passive) {
 		if (!tz->passive_delay_ms)
-			tz->passive_delay_ms = 1000;
+			thermal_zone_set_passive_delay(tz, 1000);
 		thermal_zone_device_rebind_exception(tz, "Processor",
 						     sizeof("Processor"));
 	} else if (!state && tz->forced_passive) {
-		tz->passive_delay_ms = 0;
+		thermal_zone_set_passive_delay(tz, 0);
 		thermal_zone_device_unbind_exception(tz, "Processor",
 						     sizeof("Processor"));
 	}
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 230d451bf335..5dd9bdb6c6ad 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -118,9 +118,14 @@ struct thermal_cooling_device {
  * @trips_disabled;	bitmap for disabled trips
  * @passive_delay_ms:	number of milliseconds to wait between polls when
  *			performing passive cooling.
+ * @passive_delay_jiffies: number of jiffies to wait between polls when
+ *			performing passive cooling.
  * @polling_delay_ms:	number of milliseconds to wait between polls when
  *			checking whether trip points have been crossed (0 for
  *			interrupt driven systems)
+ * @polling_delay_jiffies: number of jiffies to wait between polls when
+ *			checking whether trip points have been crossed (0 for
+ *			interrupt driven systems)
  * @temperature:	current temperature.  This is only for core code,
  *			drivers should use thermal_zone_get_temp() to get the
  *			current temperature
@@ -161,6 +166,8 @@ struct thermal_zone_device {
 	unsigned long trips_disabled;	/* bitmap for disabled trips */
 	int passive_delay_ms;
 	int polling_delay_ms;
+	int passive_delay_jiffies;
+	int polling_delay_jiffies;
 	int temperature;
 	int last_temperature;
 	int emul_temperature;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 3/4] thermal/core: Use precomputed jiffies for the polling
  2020-12-07 19:08 [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units Daniel Lezcano
  2020-12-07 19:09 ` [PATCH v2 2/4] thermal/core: Precompute the delays from msecs to jiffies Daniel Lezcano
@ 2020-12-07 19:09 ` Daniel Lezcano
  2020-12-10 16:02   ` Lukasz Luba
  2020-12-07 19:09 ` [PATCH v2 4/4] thermal/core: Remove ms based delay fields Daniel Lezcano
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 9+ messages in thread
From: Daniel Lezcano @ 2020-12-07 19:09 UTC (permalink / raw)
  To: daniel.lezcano, rui.zhang; +Cc: amitk, linux-kernel, linux-pm

The delays are also stored in jiffies based unit. Use them instead of
the ms.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
 drivers/thermal/thermal_core.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 08c6e4e36896..16ef5d652d85 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -291,14 +291,9 @@ static int __init thermal_register_governors(void)
 static void thermal_zone_device_set_polling(struct thermal_zone_device *tz,
 					    int delay)
 {
-	if (delay > 1000)
+	if (delay)
 		mod_delayed_work(system_freezable_power_efficient_wq,
-				 &tz->poll_queue,
-				 round_jiffies(msecs_to_jiffies(delay)));
-	else if (delay)
-		mod_delayed_work(system_freezable_power_efficient_wq,
-				 &tz->poll_queue,
-				 msecs_to_jiffies(delay));
+				 &tz->poll_queue, delay);
 	else
 		cancel_delayed_work(&tz->poll_queue);
 }
@@ -317,9 +312,9 @@ static void monitor_thermal_zone(struct thermal_zone_device *tz)
 	mutex_lock(&tz->lock);
 
 	if (!stop && tz->passive)
-		thermal_zone_device_set_polling(tz, tz->passive_delay_ms);
+		thermal_zone_device_set_polling(tz, tz->passive_delay_jiffies);
 	else if (!stop && tz->polling_delay_ms)
-		thermal_zone_device_set_polling(tz, tz->polling_delay_ms);
+		thermal_zone_device_set_polling(tz, tz->polling_delay_jiffies);
 	else
 		thermal_zone_device_set_polling(tz, 0);
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 4/4] thermal/core: Remove ms based delay fields
  2020-12-07 19:08 [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units Daniel Lezcano
  2020-12-07 19:09 ` [PATCH v2 2/4] thermal/core: Precompute the delays from msecs to jiffies Daniel Lezcano
  2020-12-07 19:09 ` [PATCH v2 3/4] thermal/core: Use precomputed jiffies for the polling Daniel Lezcano
@ 2020-12-07 19:09 ` Daniel Lezcano
  2020-12-10 16:25   ` Lukasz Luba
  2020-12-10 15:33 ` [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units Daniel Lezcano
  2020-12-10 15:49 ` Lukasz Luba
  4 siblings, 1 reply; 9+ messages in thread
From: Daniel Lezcano @ 2020-12-07 19:09 UTC (permalink / raw)
  To: daniel.lezcano, rui.zhang; +Cc: amitk, linux-kernel, linux-pm

The code does no longer use the ms unit based fields to set the
delays as they are replaced by the jiffies.

Remove them and replace their user to use the jiffies version instead.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
 drivers/platform/x86/acerhdf.c                     | 3 ++-
 drivers/thermal/da9062-thermal.c                   | 4 ++--
 drivers/thermal/gov_power_allocator.c              | 2 +-
 drivers/thermal/thermal_core.c                     | 2 +-
 drivers/thermal/thermal_core.h                     | 2 --
 drivers/thermal/thermal_sysfs.c                    | 2 +-
 drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 6 ++++--
 include/linux/thermal.h                            | 7 -------
 8 files changed, 11 insertions(+), 17 deletions(-)

diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c
index 7b26f601b407..b7dbcf6be13e 100644
--- a/drivers/platform/x86/acerhdf.c
+++ b/drivers/platform/x86/acerhdf.c
@@ -336,7 +336,8 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)
 			pr_notice("interval changed to: %d\n", interval);
 
 		if (thermal)
-			thermal->polling_delay_ms = interval*1000;
+			thermal->polling_delay_jiffies =
+				msecs_to_jiffies(interval * 1000);
 
 		prev_interval = interval;
 	}
diff --git a/drivers/thermal/da9062-thermal.c b/drivers/thermal/da9062-thermal.c
index ebb3d0b4a5be..180edec34e07 100644
--- a/drivers/thermal/da9062-thermal.c
+++ b/drivers/thermal/da9062-thermal.c
@@ -95,7 +95,7 @@ static void da9062_thermal_poll_on(struct work_struct *work)
 		thermal_zone_device_update(thermal->zone,
 					   THERMAL_EVENT_UNSPECIFIED);
 
-		delay = msecs_to_jiffies(thermal->zone->passive_delay_ms);
+		delay = thermal->zone->passive_delay_jiffies;
 		queue_delayed_work(system_freezable_wq, &thermal->work, delay);
 		return;
 	}
@@ -245,7 +245,7 @@ static int da9062_thermal_probe(struct platform_device *pdev)
 
 	dev_dbg(&pdev->dev,
 		"TJUNC temperature polling period set at %d ms\n",
-		thermal->zone->passive_delay_ms);
+		jiffies_to_msecs(thermal->zone->passive_delay_jiffies));
 
 	ret = platform_get_irq_byname(pdev, "THERMAL");
 	if (ret < 0) {
diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c
index f7a663f698d4..f8c3d1e40b86 100644
--- a/drivers/thermal/gov_power_allocator.c
+++ b/drivers/thermal/gov_power_allocator.c
@@ -258,7 +258,7 @@ static u32 pid_controller(struct thermal_zone_device *tz,
 	 * power being applied, slowing down the controller)
 	 */
 	d = mul_frac(tz->tzp->k_d, err - params->prev_err);
-	d = div_frac(d, tz->passive_delay_ms);
+	d = div_frac(d, jiffies_to_msecs(tz->passive_delay_jiffies));
 	params->prev_err = err;
 
 	power_range = p + i + d;
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 16ef5d652d85..aff15c6b1c61 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -313,7 +313,7 @@ static void monitor_thermal_zone(struct thermal_zone_device *tz)
 
 	if (!stop && tz->passive)
 		thermal_zone_device_set_polling(tz, tz->passive_delay_jiffies);
-	else if (!stop && tz->polling_delay_ms)
+	else if (!stop && tz->polling_delay_jiffies)
 		thermal_zone_device_set_polling(tz, tz->polling_delay_jiffies);
 	else
 		thermal_zone_device_set_polling(tz, 0);
diff --git a/drivers/thermal/thermal_core.h b/drivers/thermal/thermal_core.h
index 2c9551ed5ef8..5baa308ee7a5 100644
--- a/drivers/thermal/thermal_core.h
+++ b/drivers/thermal/thermal_core.h
@@ -131,7 +131,6 @@ void thermal_zone_set_trips(struct thermal_zone_device *tz);
 static inline void thermal_zone_set_passive_delay(
 	struct thermal_zone_device *tz, int delay_ms)
 {
-	tz->passive_delay_ms = delay_ms;
 	tz->passive_delay_jiffies = msecs_to_jiffies(delay_ms);
 	if (delay_ms > 1000)
 		tz->passive_delay_jiffies = round_jiffies(tz->passive_delay_jiffies);
@@ -140,7 +139,6 @@ static inline void thermal_zone_set_passive_delay(
 static inline void thermal_zone_set_polling_delay(
 	struct thermal_zone_device *tz, int delay_ms)
 {
-	tz->polling_delay_ms = delay_ms;
 	tz->polling_delay_jiffies = msecs_to_jiffies(delay_ms);
 	if (delay_ms > 1000)
 		tz->polling_delay_jiffies = round_jiffies(tz->polling_delay_jiffies);
diff --git a/drivers/thermal/thermal_sysfs.c b/drivers/thermal/thermal_sysfs.c
index 9598b288a0a1..8532b1dd0608 100644
--- a/drivers/thermal/thermal_sysfs.c
+++ b/drivers/thermal/thermal_sysfs.c
@@ -233,7 +233,7 @@ passive_store(struct device *dev, struct device_attribute *attr,
 		return -EINVAL;
 
 	if (state && !tz->forced_passive) {
-		if (!tz->passive_delay_ms)
+		if (!tz->passive_delay_jiffies)
 			thermal_zone_set_passive_delay(tz, 1000);
 		thermal_zone_device_rebind_exception(tz, "Processor",
 						     sizeof("Processor"));
diff --git a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
index 4baff19e1142..f84375865c97 100644
--- a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
+++ b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
@@ -166,6 +166,7 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
 			     char *domain)
 {
 	struct ti_thermal_data *data;
+	int interval;
 
 	data = ti_bandgap_get_sensor_data(bgp, id);
 
@@ -183,9 +184,10 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
 		return PTR_ERR(data->ti_thermal);
 	}
 
+	interval = jiffies_to_msecs(data->ti_thermal->polling_delay_jiffies);
+
 	ti_bandgap_set_sensor_data(bgp, id, data);
-	ti_bandgap_write_update_interval(bgp, data->sensor_id,
-					data->ti_thermal->polling_delay_ms);
+	ti_bandgap_write_update_interval(bgp, data->sensor_id, interval);
 
 	return 0;
 }
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 5dd9bdb6c6ad..f23a388ded15 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -116,13 +116,8 @@ struct thermal_cooling_device {
  * @devdata:	private pointer for device private data
  * @trips:	number of trip points the thermal zone supports
  * @trips_disabled;	bitmap for disabled trips
- * @passive_delay_ms:	number of milliseconds to wait between polls when
- *			performing passive cooling.
  * @passive_delay_jiffies: number of jiffies to wait between polls when
  *			performing passive cooling.
- * @polling_delay_ms:	number of milliseconds to wait between polls when
- *			checking whether trip points have been crossed (0 for
- *			interrupt driven systems)
  * @polling_delay_jiffies: number of jiffies to wait between polls when
  *			checking whether trip points have been crossed (0 for
  *			interrupt driven systems)
@@ -164,8 +159,6 @@ struct thermal_zone_device {
 	void *devdata;
 	int trips;
 	unsigned long trips_disabled;	/* bitmap for disabled trips */
-	int passive_delay_ms;
-	int polling_delay_ms;
 	int passive_delay_jiffies;
 	int polling_delay_jiffies;
 	int temperature;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units
  2020-12-07 19:08 [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units Daniel Lezcano
                   ` (2 preceding siblings ...)
  2020-12-07 19:09 ` [PATCH v2 4/4] thermal/core: Remove ms based delay fields Daniel Lezcano
@ 2020-12-10 15:33 ` Daniel Lezcano
  2020-12-10 15:49 ` Lukasz Luba
  4 siblings, 0 replies; 9+ messages in thread
From: Daniel Lezcano @ 2020-12-10 15:33 UTC (permalink / raw)
  To: rui.zhang
  Cc: amitk, linux-kernel, linux-pm, Lukasz Luba, Peter Kaestle,
	Hans de Goede, Keerthy, Eduardo Valentin


Cc'ing missing persons.

Sorry for the inconvenience, just a head up with those trivial changes
(1/4 and 4/4).


On 07/12/2020 20:08, Daniel Lezcano wrote:
> The input unit used by the thermal framework is the msec but it uses
> the jiffies to set the timers.
> 
> As it is stored in the thermal zone device structure, everytime the
> timer is setup at each polling interval, the msecs to jiffies
> conversion happens. The jiffies is the unit the thermal framework is
> using, so keeping it under the jiffies instead of msecs will save some
> pointless conversion.
> 
> Set the scene to directly store the delays under their jiffies
> form by adding to the variable name the 'ms' suffix.
> 
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---
>  drivers/platform/x86/acerhdf.c                   |  2 +-
>  drivers/thermal/da9062-thermal.c                 |  4 ++--
>  drivers/thermal/gov_power_allocator.c            |  2 +-
>  drivers/thermal/thermal_core.c                   | 10 +++++-----
>  drivers/thermal/thermal_of.c                     | 16 ++++++++--------
>  drivers/thermal/thermal_sysfs.c                  |  6 +++---
>  .../thermal/ti-soc-thermal/ti-thermal-common.c   |  2 +-
>  include/linux/thermal.h                          |  8 ++++----
>  8 files changed, 25 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c
> index b6aa6e5514f4..7b26f601b407 100644
> --- a/drivers/platform/x86/acerhdf.c
> +++ b/drivers/platform/x86/acerhdf.c
> @@ -336,7 +336,7 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)
>  			pr_notice("interval changed to: %d\n", interval);
>  
>  		if (thermal)
> -			thermal->polling_delay = interval*1000;
> +			thermal->polling_delay_ms = interval*1000;
>  
>  		prev_interval = interval;
>  	}
> diff --git a/drivers/thermal/da9062-thermal.c b/drivers/thermal/da9062-thermal.c
> index 4d74994f160a..ebb3d0b4a5be 100644
> --- a/drivers/thermal/da9062-thermal.c
> +++ b/drivers/thermal/da9062-thermal.c
> @@ -95,7 +95,7 @@ static void da9062_thermal_poll_on(struct work_struct *work)
>  		thermal_zone_device_update(thermal->zone,
>  					   THERMAL_EVENT_UNSPECIFIED);
>  
> -		delay = msecs_to_jiffies(thermal->zone->passive_delay);
> +		delay = msecs_to_jiffies(thermal->zone->passive_delay_ms);
>  		queue_delayed_work(system_freezable_wq, &thermal->work, delay);
>  		return;
>  	}
> @@ -245,7 +245,7 @@ static int da9062_thermal_probe(struct platform_device *pdev)
>  
>  	dev_dbg(&pdev->dev,
>  		"TJUNC temperature polling period set at %d ms\n",
> -		thermal->zone->passive_delay);
> +		thermal->zone->passive_delay_ms);
>  
>  	ret = platform_get_irq_byname(pdev, "THERMAL");
>  	if (ret < 0) {
> diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c
> index 7a4170a0b51f..f7a663f698d4 100644
> --- a/drivers/thermal/gov_power_allocator.c
> +++ b/drivers/thermal/gov_power_allocator.c
> @@ -258,7 +258,7 @@ static u32 pid_controller(struct thermal_zone_device *tz,
>  	 * power being applied, slowing down the controller)
>  	 */
>  	d = mul_frac(tz->tzp->k_d, err - params->prev_err);
> -	d = div_frac(d, tz->passive_delay);
> +	d = div_frac(d, tz->passive_delay_ms);
>  	params->prev_err = err;
>  
>  	power_range = p + i + d;
> diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
> index 1bd23ff2247b..5b500d72aab4 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -317,9 +317,9 @@ static void monitor_thermal_zone(struct thermal_zone_device *tz)
>  	mutex_lock(&tz->lock);
>  
>  	if (!stop && tz->passive)
> -		thermal_zone_device_set_polling(tz, tz->passive_delay);
> -	else if (!stop && tz->polling_delay)
> -		thermal_zone_device_set_polling(tz, tz->polling_delay);
> +		thermal_zone_device_set_polling(tz, tz->passive_delay_ms);
> +	else if (!stop && tz->polling_delay_ms)
> +		thermal_zone_device_set_polling(tz, tz->polling_delay_ms);
>  	else
>  		thermal_zone_device_set_polling(tz, 0);
>  
> @@ -1340,8 +1340,8 @@ thermal_zone_device_register(const char *type, int trips, int mask,
>  	tz->device.class = &thermal_class;
>  	tz->devdata = devdata;
>  	tz->trips = trips;
> -	tz->passive_delay = passive_delay;
> -	tz->polling_delay = polling_delay;
> +	tz->passive_delay_ms = passive_delay;
> +	tz->polling_delay_ms = polling_delay;
>  
>  	/* sys I/F */
>  	/* Add nodes that are always present via .groups */
> diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
> index 69ef12f852b7..c01248e48c09 100644
> --- a/drivers/thermal/thermal_of.c
> +++ b/drivers/thermal/thermal_of.c
> @@ -51,8 +51,8 @@ struct __thermal_bind_params {
>  
>  /**
>   * struct __thermal_zone - internal representation of a thermal zone
> - * @passive_delay: polling interval while passive cooling is activated
> - * @polling_delay: zone polling interval
> + * @passive_delay_ms: polling interval while passive cooling is activated
> + * @polling_delay_ms: zone polling interval
>   * @slope: slope of the temperature adjustment curve
>   * @offset: offset of the temperature adjustment curve
>   * @ntrips: number of trip points
> @@ -64,8 +64,8 @@ struct __thermal_bind_params {
>   */
>  
>  struct __thermal_zone {
> -	int passive_delay;
> -	int polling_delay;
> +	int passive_delay_ms;
> +	int polling_delay_ms;
>  	int slope;
>  	int offset;
>  
> @@ -865,14 +865,14 @@ __init *thermal_of_build_thermal_zone(struct device_node *np)
>  		pr_err("%pOFn: missing polling-delay-passive property\n", np);
>  		goto free_tz;
>  	}
> -	tz->passive_delay = prop;
> +	tz->passive_delay_ms = prop;
>  
>  	ret = of_property_read_u32(np, "polling-delay", &prop);
>  	if (ret < 0) {
>  		pr_err("%pOFn: missing polling-delay property\n", np);
>  		goto free_tz;
>  	}
> -	tz->polling_delay = prop;
> +	tz->polling_delay_ms = prop;
>  
>  	/*
>  	 * REVIST: for now, the thermal framework supports only
> @@ -1085,8 +1085,8 @@ int __init of_parse_thermal_zones(void)
>  		zone = thermal_zone_device_register(child->name, tz->ntrips,
>  						    mask, tz,
>  						    ops, tzp,
> -						    tz->passive_delay,
> -						    tz->polling_delay);
> +						    tz->passive_delay_ms,
> +						    tz->polling_delay_ms);
>  		if (IS_ERR(zone)) {
>  			pr_err("Failed to build %pOFn zone %ld\n", child,
>  			       PTR_ERR(zone));
> diff --git a/drivers/thermal/thermal_sysfs.c b/drivers/thermal/thermal_sysfs.c
> index 0866e949339b..f465462d8aa1 100644
> --- a/drivers/thermal/thermal_sysfs.c
> +++ b/drivers/thermal/thermal_sysfs.c
> @@ -233,12 +233,12 @@ passive_store(struct device *dev, struct device_attribute *attr,
>  		return -EINVAL;
>  
>  	if (state && !tz->forced_passive) {
> -		if (!tz->passive_delay)
> -			tz->passive_delay = 1000;
> +		if (!tz->passive_delay_ms)
> +			tz->passive_delay_ms = 1000;
>  		thermal_zone_device_rebind_exception(tz, "Processor",
>  						     sizeof("Processor"));
>  	} else if (!state && tz->forced_passive) {
> -		tz->passive_delay = 0;
> +		tz->passive_delay_ms = 0;
>  		thermal_zone_device_unbind_exception(tz, "Processor",
>  						     sizeof("Processor"));
>  	}
> diff --git a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> index 2ce4b19f312a..4baff19e1142 100644
> --- a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> +++ b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> @@ -185,7 +185,7 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
>  
>  	ti_bandgap_set_sensor_data(bgp, id, data);
>  	ti_bandgap_write_update_interval(bgp, data->sensor_id,
> -					data->ti_thermal->polling_delay);
> +					data->ti_thermal->polling_delay_ms);
>  
>  	return 0;
>  }
> diff --git a/include/linux/thermal.h b/include/linux/thermal.h
> index d07ea27e72a9..230d451bf335 100644
> --- a/include/linux/thermal.h
> +++ b/include/linux/thermal.h
> @@ -116,9 +116,9 @@ struct thermal_cooling_device {
>   * @devdata:	private pointer for device private data
>   * @trips:	number of trip points the thermal zone supports
>   * @trips_disabled;	bitmap for disabled trips
> - * @passive_delay:	number of milliseconds to wait between polls when
> + * @passive_delay_ms:	number of milliseconds to wait between polls when
>   *			performing passive cooling.
> - * @polling_delay:	number of milliseconds to wait between polls when
> + * @polling_delay_ms:	number of milliseconds to wait between polls when
>   *			checking whether trip points have been crossed (0 for
>   *			interrupt driven systems)
>   * @temperature:	current temperature.  This is only for core code,
> @@ -159,8 +159,8 @@ struct thermal_zone_device {
>  	void *devdata;
>  	int trips;
>  	unsigned long trips_disabled;	/* bitmap for disabled trips */
> -	int passive_delay;
> -	int polling_delay;
> +	int passive_delay_ms;
> +	int polling_delay_ms;
>  	int temperature;
>  	int last_temperature;
>  	int emul_temperature;
> 


-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units
  2020-12-07 19:08 [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units Daniel Lezcano
                   ` (3 preceding siblings ...)
  2020-12-10 15:33 ` [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units Daniel Lezcano
@ 2020-12-10 15:49 ` Lukasz Luba
  4 siblings, 0 replies; 9+ messages in thread
From: Lukasz Luba @ 2020-12-10 15:49 UTC (permalink / raw)
  To: Daniel Lezcano; +Cc: rui.zhang, amitk, linux-kernel, linux-pm



On 12/7/20 7:08 PM, Daniel Lezcano wrote:
> The input unit used by the thermal framework is the msec but it uses
> the jiffies to set the timers.
> 
> As it is stored in the thermal zone device structure, everytime the
> timer is setup at each polling interval, the msecs to jiffies
> conversion happens. The jiffies is the unit the thermal framework is
> using, so keeping it under the jiffies instead of msecs will save some
> pointless conversion.

Make sense

> 
> Set the scene to directly store the delays under their jiffies
> form by adding to the variable name the 'ms' suffix.
> 
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---


Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/4] thermal/core: Precompute the delays from msecs to jiffies
  2020-12-07 19:09 ` [PATCH v2 2/4] thermal/core: Precompute the delays from msecs to jiffies Daniel Lezcano
@ 2020-12-10 15:58   ` Lukasz Luba
  0 siblings, 0 replies; 9+ messages in thread
From: Lukasz Luba @ 2020-12-10 15:58 UTC (permalink / raw)
  To: Daniel Lezcano; +Cc: rui.zhang, amitk, linux-kernel, linux-pm



On 12/7/20 7:09 PM, Daniel Lezcano wrote:
> The delays are stored in ms units and when the polling function is
> called this delay is converted into jiffies at each call.
> 
> Instead of doing the conversion again and again, compute the jiffies
> at init time and use the value directly when setting the polling.
> 
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---

Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 3/4] thermal/core: Use precomputed jiffies for the polling
  2020-12-07 19:09 ` [PATCH v2 3/4] thermal/core: Use precomputed jiffies for the polling Daniel Lezcano
@ 2020-12-10 16:02   ` Lukasz Luba
  0 siblings, 0 replies; 9+ messages in thread
From: Lukasz Luba @ 2020-12-10 16:02 UTC (permalink / raw)
  To: Daniel Lezcano; +Cc: rui.zhang, amitk, linux-kernel, linux-pm



On 12/7/20 7:09 PM, Daniel Lezcano wrote:
> The delays are also stored in jiffies based unit. Use them instead of
> the ms.
> 
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---
>   drivers/thermal/thermal_core.c | 13 ++++---------
>   1 file changed, 4 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
> index 08c6e4e36896..16ef5d652d85 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -291,14 +291,9 @@ static int __init thermal_register_governors(void)
>   static void thermal_zone_device_set_polling(struct thermal_zone_device *tz,
>   					    int delay)
>   {
> -	if (delay > 1000)
> +	if (delay)
>   		mod_delayed_work(system_freezable_power_efficient_wq,
> -				 &tz->poll_queue,
> -				 round_jiffies(msecs_to_jiffies(delay)));
> -	else if (delay)
> -		mod_delayed_work(system_freezable_power_efficient_wq,
> -				 &tz->poll_queue,
> -				 msecs_to_jiffies(delay));
> +				 &tz->poll_queue, delay);
>   	else
>   		cancel_delayed_work(&tz->poll_queue);
>   }
> @@ -317,9 +312,9 @@ static void monitor_thermal_zone(struct thermal_zone_device *tz)
>   	mutex_lock(&tz->lock);
>   
>   	if (!stop && tz->passive)
> -		thermal_zone_device_set_polling(tz, tz->passive_delay_ms);
> +		thermal_zone_device_set_polling(tz, tz->passive_delay_jiffies);
>   	else if (!stop && tz->polling_delay_ms)
> -		thermal_zone_device_set_polling(tz, tz->polling_delay_ms);
> +		thermal_zone_device_set_polling(tz, tz->polling_delay_jiffies);
>   	else
>   		thermal_zone_device_set_polling(tz, 0);
>   
> 


Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 4/4] thermal/core: Remove ms based delay fields
  2020-12-07 19:09 ` [PATCH v2 4/4] thermal/core: Remove ms based delay fields Daniel Lezcano
@ 2020-12-10 16:25   ` Lukasz Luba
  0 siblings, 0 replies; 9+ messages in thread
From: Lukasz Luba @ 2020-12-10 16:25 UTC (permalink / raw)
  To: Daniel Lezcano; +Cc: rui.zhang, amitk, linux-kernel, linux-pm



On 12/7/20 7:09 PM, Daniel Lezcano wrote:
> The code does no longer use the ms unit based fields to set the
> delays as they are replaced by the jiffies.
> 
> Remove them and replace their user to use the jiffies version instead.
> 
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---
>   drivers/platform/x86/acerhdf.c                     | 3 ++-
>   drivers/thermal/da9062-thermal.c                   | 4 ++--
>   drivers/thermal/gov_power_allocator.c              | 2 +-
>   drivers/thermal/thermal_core.c                     | 2 +-
>   drivers/thermal/thermal_core.h                     | 2 --
>   drivers/thermal/thermal_sysfs.c                    | 2 +-
>   drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 6 ++++--
>   include/linux/thermal.h                            | 7 -------
>   8 files changed, 11 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c
> index 7b26f601b407..b7dbcf6be13e 100644
> --- a/drivers/platform/x86/acerhdf.c
> +++ b/drivers/platform/x86/acerhdf.c
> @@ -336,7 +336,8 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)
>   			pr_notice("interval changed to: %d\n", interval);
>   
>   		if (thermal)
> -			thermal->polling_delay_ms = interval*1000;
> +			thermal->polling_delay_jiffies =
> +				msecs_to_jiffies(interval * 1000);
>   
>   		prev_interval = interval;
>   	}
> diff --git a/drivers/thermal/da9062-thermal.c b/drivers/thermal/da9062-thermal.c
> index ebb3d0b4a5be..180edec34e07 100644
> --- a/drivers/thermal/da9062-thermal.c
> +++ b/drivers/thermal/da9062-thermal.c
> @@ -95,7 +95,7 @@ static void da9062_thermal_poll_on(struct work_struct *work)
>   		thermal_zone_device_update(thermal->zone,
>   					   THERMAL_EVENT_UNSPECIFIED);
>   
> -		delay = msecs_to_jiffies(thermal->zone->passive_delay_ms);
> +		delay = thermal->zone->passive_delay_jiffies;

We would use rounding down value to full seconds, but I couldn't
find any odd values in DT for this devices. So it should be OK.

>   		queue_delayed_work(system_freezable_wq, &thermal->work, delay);
>   		return;
>   	}
> @@ -245,7 +245,7 @@ static int da9062_thermal_probe(struct platform_device *pdev)
>   
>   	dev_dbg(&pdev->dev,
>   		"TJUNC temperature polling period set at %d ms\n",
> -		thermal->zone->passive_delay_ms);
> +		jiffies_to_msecs(thermal->zone->passive_delay_jiffies));
>   
>   	ret = platform_get_irq_byname(pdev, "THERMAL");
>   	if (ret < 0) {
> diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c
> index f7a663f698d4..f8c3d1e40b86 100644
> --- a/drivers/thermal/gov_power_allocator.c
> +++ b/drivers/thermal/gov_power_allocator.c
> @@ -258,7 +258,7 @@ static u32 pid_controller(struct thermal_zone_device *tz,
>   	 * power being applied, slowing down the controller)
>   	 */
>   	d = mul_frac(tz->tzp->k_d, err - params->prev_err);
> -	d = div_frac(d, tz->passive_delay_ms);
> +	d = div_frac(d, jiffies_to_msecs(tz->passive_delay_jiffies));
>   	params->prev_err = err;
>   
>   	power_range = p + i + d;
> diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
> index 16ef5d652d85..aff15c6b1c61 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -313,7 +313,7 @@ static void monitor_thermal_zone(struct thermal_zone_device *tz)
>   
>   	if (!stop && tz->passive)
>   		thermal_zone_device_set_polling(tz, tz->passive_delay_jiffies);
> -	else if (!stop && tz->polling_delay_ms)
> +	else if (!stop && tz->polling_delay_jiffies)
>   		thermal_zone_device_set_polling(tz, tz->polling_delay_jiffies);
>   	else
>   		thermal_zone_device_set_polling(tz, 0);
> diff --git a/drivers/thermal/thermal_core.h b/drivers/thermal/thermal_core.h
> index 2c9551ed5ef8..5baa308ee7a5 100644
> --- a/drivers/thermal/thermal_core.h
> +++ b/drivers/thermal/thermal_core.h
> @@ -131,7 +131,6 @@ void thermal_zone_set_trips(struct thermal_zone_device *tz);
>   static inline void thermal_zone_set_passive_delay(
>   	struct thermal_zone_device *tz, int delay_ms)
>   {
> -	tz->passive_delay_ms = delay_ms;
>   	tz->passive_delay_jiffies = msecs_to_jiffies(delay_ms);
>   	if (delay_ms > 1000)
>   		tz->passive_delay_jiffies = round_jiffies(tz->passive_delay_jiffies);
> @@ -140,7 +139,6 @@ static inline void thermal_zone_set_passive_delay(
>   static inline void thermal_zone_set_polling_delay(
>   	struct thermal_zone_device *tz, int delay_ms)
>   {
> -	tz->polling_delay_ms = delay_ms;
>   	tz->polling_delay_jiffies = msecs_to_jiffies(delay_ms);
>   	if (delay_ms > 1000)
>   		tz->polling_delay_jiffies = round_jiffies(tz->polling_delay_jiffies);
> diff --git a/drivers/thermal/thermal_sysfs.c b/drivers/thermal/thermal_sysfs.c
> index 9598b288a0a1..8532b1dd0608 100644
> --- a/drivers/thermal/thermal_sysfs.c
> +++ b/drivers/thermal/thermal_sysfs.c
> @@ -233,7 +233,7 @@ passive_store(struct device *dev, struct device_attribute *attr,
>   		return -EINVAL;
>   
>   	if (state && !tz->forced_passive) {
> -		if (!tz->passive_delay_ms)
> +		if (!tz->passive_delay_jiffies)
>   			thermal_zone_set_passive_delay(tz, 1000);
>   		thermal_zone_device_rebind_exception(tz, "Processor",
>   						     sizeof("Processor"));
> diff --git a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> index 4baff19e1142..f84375865c97 100644
> --- a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> +++ b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
> @@ -166,6 +166,7 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
>   			     char *domain)
>   {
>   	struct ti_thermal_data *data;
> +	int interval;
>   
>   	data = ti_bandgap_get_sensor_data(bgp, id);
>   
> @@ -183,9 +184,10 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
>   		return PTR_ERR(data->ti_thermal);
>   	}
>   
> +	interval = jiffies_to_msecs(data->ti_thermal->polling_delay_jiffies);

Same here, so it should be OK.

> +
>   	ti_bandgap_set_sensor_data(bgp, id, data);
> -	ti_bandgap_write_update_interval(bgp, data->sensor_id,
> -					data->ti_thermal->polling_delay_ms);
> +	ti_bandgap_write_update_interval(bgp, data->sensor_id, interval);
>   
>   	return 0;
>   }
> diff --git a/include/linux/thermal.h b/include/linux/thermal.h
> index 5dd9bdb6c6ad..f23a388ded15 100644
> --- a/include/linux/thermal.h
> +++ b/include/linux/thermal.h
> @@ -116,13 +116,8 @@ struct thermal_cooling_device {
>    * @devdata:	private pointer for device private data
>    * @trips:	number of trip points the thermal zone supports
>    * @trips_disabled;	bitmap for disabled trips
> - * @passive_delay_ms:	number of milliseconds to wait between polls when
> - *			performing passive cooling.
>    * @passive_delay_jiffies: number of jiffies to wait between polls when
>    *			performing passive cooling.
> - * @polling_delay_ms:	number of milliseconds to wait between polls when
> - *			checking whether trip points have been crossed (0 for
> - *			interrupt driven systems)
>    * @polling_delay_jiffies: number of jiffies to wait between polls when
>    *			checking whether trip points have been crossed (0 for
>    *			interrupt driven systems)
> @@ -164,8 +159,6 @@ struct thermal_zone_device {
>   	void *devdata;
>   	int trips;
>   	unsigned long trips_disabled;	/* bitmap for disabled trips */
> -	int passive_delay_ms;
> -	int polling_delay_ms;
>   	int passive_delay_jiffies;
>   	int polling_delay_jiffies;
>   	int temperature;
> 

LGTM

Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-12-10 16:27 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-07 19:08 [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units Daniel Lezcano
2020-12-07 19:09 ` [PATCH v2 2/4] thermal/core: Precompute the delays from msecs to jiffies Daniel Lezcano
2020-12-10 15:58   ` Lukasz Luba
2020-12-07 19:09 ` [PATCH v2 3/4] thermal/core: Use precomputed jiffies for the polling Daniel Lezcano
2020-12-10 16:02   ` Lukasz Luba
2020-12-07 19:09 ` [PATCH v2 4/4] thermal/core: Remove ms based delay fields Daniel Lezcano
2020-12-10 16:25   ` Lukasz Luba
2020-12-10 15:33 ` [PATCH v2 1/4] thermal/core: Rename passive_delay and polling_delay with units Daniel Lezcano
2020-12-10 15:49 ` Lukasz Luba

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).