Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1409699 > unrolled thread
| Started by | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| First post | 2016-05-31 00:20 +0200 |
| Last post | 2016-05-31 08:20 +0200 |
| Articles | 20 on this page of 40 — 2 participants |
Back to article view | Back to linux.kernel
[PATCHv3 00/48] thermal: reorganizing thermal core Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:20 +0200
[PATCHv3 41/48] thermal: core: remove FSF address in the GPL notice Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:20 +0200
[PATCHv3 48/48] thermal: sysfs: use kcalloc() instead of kzalloc() Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:20 +0200
[PATCHv3 07/48] thermal: core: move passive attr to tz->device.groups Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:20 +0200
[PATCHv3 31/48] thermal: core: move bind_cdev() to where it is used Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:20 +0200
[PATCHv3 40/48] thermal: sysfs: remove symbols of emul_temp when config is disabled Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:20 +0200
[PATCHv3 19/48] thermal: core: move to_thermal_zone() macro to header file Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 37/48] thermal: core: add a comment describing the main update loop Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 32/48] thermal: core: move bind_tz() to where it is used Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 16/48] thermal: core: split passive_store Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 02/48] thermal: core: group thermal_zone DEVICE_ATTR's declarations Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 06/48] thermal: core: move mode attribute to tz->device.groups Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 27/48] thermal: core: group functions related to governor handling Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 42/48] thermal: core: small style fix when checking for __find_governor() Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 20/48] thermal: core: treat correctly the return value of *scanf calls Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 26/48] thermal: core: introduce thermal_helpers.c Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 23/48] thermal: core: move to_cooling_device macro to header file Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 22/48] thermal: core: move thermal_zone sysfs to thermal_sysfs.c Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 28/48] thermal: core: move idr handling to device management section Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 36/48] thermal: core: move notify to the zone update section Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 25/48] thermal: core: remove a couple of style issues on helpers Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 10/48] thermal: core: remove useless empty line Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 09/48] thermal: core: move power actor code out of sysfs I/F section Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 21/48] thermal: core: match parenthesis on code alignment Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 03/48] thermal: core: group device_create_file() calls that are always created Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 24/48] thermal: core: move cooling device sysfs to thermal_sysfs.c Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 11/48] thermal: core: fix style on remove_trip_attrs() Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 35/48] thermal: core: add inline to print_bind_err_msg() Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 33/48] thermal: core: fix couple of style issues on __bind() helper Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 05/48] thermal: core: move emul_temp creation to tz->device.groups Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 12/48] thermal: core: move the trip attrs to the tz sysfs I/F section Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 14/48] thermal: core: move trips attributes to tz->device.groups Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 08/48] thermal: core: improve power actor documentation Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 30/48] thermal: core: move __unbind() helper to where it is used Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 29/48] thermal: core: small style fix on __unbind() helper Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 38/48] thermal: core: add a comment describing the power actor section Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 18/48] thermal: core: split available_policies_show() Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
[PATCHv3 15/48] thermal: core: remove unnecessary device_remove() calls Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 00:30 +0200
Re: [PATCHv3 00/48] thermal: reorganizing thermal core Keerthy <a0393675@ti.com> - 2016-05-31 06:30 +0200
Re: [PATCHv3 00/48] thermal: reorganizing thermal core Eduardo Valentin <edubezval@gmail.com> - 2016-05-31 08:20 +0200
Page 2 of 2 — ← Prev page 1 [2]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 25/48] thermal: core: remove a couple of style issues on helpers |
| Message-ID | <rEDR8-1Zm-51@gated-at.bofh.it> |
| In reply to | #1409699 |
Reorganizing the code of helper functions to improve
readability and style, as recommended by checkpatch.pl.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 4c4f1b4..37d29f3 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -248,8 +248,9 @@ int get_tz_trend(struct thermal_zone_device *tz, int trip)
}
EXPORT_SYMBOL(get_tz_trend);
-struct thermal_instance *get_thermal_instance(struct thermal_zone_device *tz,
- struct thermal_cooling_device *cdev, int trip)
+struct thermal_instance *
+get_thermal_instance(struct thermal_zone_device *tz,
+ struct thermal_cooling_device *cdev, int trip)
{
struct thermal_instance *pos = NULL;
struct thermal_instance *target_instance = NULL;
@@ -513,7 +514,7 @@ int thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp)
if (!ret && *temp < crit_temp)
*temp = tz->emul_temperature;
}
-
+
mutex_unlock(&tz->lock);
exit:
return ret;
@@ -1132,7 +1133,7 @@ void thermal_cdev_update(struct thermal_cooling_device *cdev)
/* Make sure cdev enters the deepest cooling state */
list_for_each_entry(instance, &cdev->thermal_instances, cdev_node) {
dev_dbg(&cdev->device, "zone%d->target=%lu\n",
- instance->tz->id, instance->target);
+ instance->tz->id, instance->target);
if (instance->target == THERMAL_NO_TARGET)
continue;
if (instance->target > target)
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 10/48] thermal: core: remove useless empty line |
| Message-ID | <rEDR8-1Zm-33@gated-at.bofh.it> |
| In reply to | #1409699 |
Fix style problem on create_trip_attrs();
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index d6595b1..e04e443 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1764,7 +1764,6 @@ static int create_trip_attrs(struct thermal_zone_device *tz, int mask)
}
}
-
for (indx = 0; indx < tz->trips; indx++) {
/* create trip type attribute */
snprintf(tz->trip_type_attrs[indx].name, THERMAL_NAME_LENGTH,
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 09/48] thermal: core: move power actor code out of sysfs I/F section |
| Message-ID | <rEDR8-1Zm-53@gated-at.bofh.it> |
| In reply to | #1409699 |
Simply reorganize code to keep only functions of sysfs interface
of thermal zone device together. Therefore, move the power actor code
out of the sysfs I/F section.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 162 ++++++++++++++++++++---------------------
1 file changed, 81 insertions(+), 81 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 12427cc..d6595b1 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -582,6 +582,87 @@ static void thermal_zone_device_check(struct work_struct *work)
thermal_zone_device_update(tz);
}
+/**
+ * power_actor_get_max_power() - get the maximum power that a cdev can consume
+ * @cdev: pointer to &thermal_cooling_device
+ * @tz: a valid thermal zone device pointer
+ * @max_power: pointer in which to store the maximum power
+ *
+ * Calculate the maximum power consumption in milliwats that the
+ * cooling device can currently consume and store it in @max_power.
+ *
+ * Return: 0 on success, -EINVAL if @cdev doesn't support the
+ * power_actor API or -E* on other error.
+ */
+int power_actor_get_max_power(struct thermal_cooling_device *cdev,
+ struct thermal_zone_device *tz, u32 *max_power)
+{
+ if (!cdev_is_power_actor(cdev))
+ return -EINVAL;
+
+ return cdev->ops->state2power(cdev, tz, 0, max_power);
+}
+
+/**
+ * power_actor_get_min_power() - get the mainimum power that a cdev can consume
+ * @cdev: pointer to &thermal_cooling_device
+ * @tz: a valid thermal zone device pointer
+ * @min_power: pointer in which to store the minimum power
+ *
+ * Calculate the minimum power consumption in milliwatts that the
+ * cooling device can currently consume and store it in @min_power.
+ *
+ * Return: 0 on success, -EINVAL if @cdev doesn't support the
+ * power_actor API or -E* on other error.
+ */
+int power_actor_get_min_power(struct thermal_cooling_device *cdev,
+ struct thermal_zone_device *tz, u32 *min_power)
+{
+ unsigned long max_state;
+ int ret;
+
+ if (!cdev_is_power_actor(cdev))
+ return -EINVAL;
+
+ ret = cdev->ops->get_max_state(cdev, &max_state);
+ if (ret)
+ return ret;
+
+ return cdev->ops->state2power(cdev, tz, max_state, min_power);
+}
+
+/**
+ * power_actor_set_power() - limit the maximum power a cooling device consumes
+ * @cdev: pointer to &thermal_cooling_device
+ * @instance: thermal instance to update
+ * @power: the power in milliwatts
+ *
+ * Set the cooling device to consume at most @power milliwatts. The limit is
+ * expected to be a cap at the maximum power consumption.
+ *
+ * Return: 0 on success, -EINVAL if the cooling device does not
+ * implement the power actor API or -E* for other failures.
+ */
+int power_actor_set_power(struct thermal_cooling_device *cdev,
+ struct thermal_instance *instance, u32 power)
+{
+ unsigned long state;
+ int ret;
+
+ if (!cdev_is_power_actor(cdev))
+ return -EINVAL;
+
+ ret = cdev->ops->power2state(cdev, instance->tz, power, &state);
+ if (ret)
+ return ret;
+
+ instance->target = state;
+ cdev->updated = false;
+ thermal_cdev_update(cdev);
+
+ return 0;
+}
+
/* sys I/F for thermal zone */
#define to_thermal_zone(_dev) \
@@ -1092,87 +1173,6 @@ static const struct attribute_group *thermal_zone_attribute_groups[] = {
NULL
};
-/**
- * power_actor_get_max_power() - get the maximum power that a cdev can consume
- * @cdev: pointer to &thermal_cooling_device
- * @tz: a valid thermal zone device pointer
- * @max_power: pointer in which to store the maximum power
- *
- * Calculate the maximum power consumption in milliwats that the
- * cooling device can currently consume and store it in @max_power.
- *
- * Return: 0 on success, -EINVAL if @cdev doesn't support the
- * power_actor API or -E* on other error.
- */
-int power_actor_get_max_power(struct thermal_cooling_device *cdev,
- struct thermal_zone_device *tz, u32 *max_power)
-{
- if (!cdev_is_power_actor(cdev))
- return -EINVAL;
-
- return cdev->ops->state2power(cdev, tz, 0, max_power);
-}
-
-/**
- * power_actor_get_min_power() - get the mainimum power that a cdev can consume
- * @cdev: pointer to &thermal_cooling_device
- * @tz: a valid thermal zone device pointer
- * @min_power: pointer in which to store the minimum power
- *
- * Calculate the minimum power consumption in milliwatts that the
- * cooling device can currently consume and store it in @min_power.
- *
- * Return: 0 on success, -EINVAL if @cdev doesn't support the
- * power_actor API or -E* on other error.
- */
-int power_actor_get_min_power(struct thermal_cooling_device *cdev,
- struct thermal_zone_device *tz, u32 *min_power)
-{
- unsigned long max_state;
- int ret;
-
- if (!cdev_is_power_actor(cdev))
- return -EINVAL;
-
- ret = cdev->ops->get_max_state(cdev, &max_state);
- if (ret)
- return ret;
-
- return cdev->ops->state2power(cdev, tz, max_state, min_power);
-}
-
-/**
- * power_actor_set_power() - limit the maximum power a cooling device consumes
- * @cdev: pointer to &thermal_cooling_device
- * @instance: thermal instance to update
- * @power: the power in milliwatts
- *
- * Set the cooling device to consume at most @power milliwatts. The limit is
- * expected to be a cap at the maximum power consumption.
- *
- * Return: 0 on success, -EINVAL if the cooling device does not
- * implement the power actor API or -E* for other failures.
- */
-int power_actor_set_power(struct thermal_cooling_device *cdev,
- struct thermal_instance *instance, u32 power)
-{
- unsigned long state;
- int ret;
-
- if (!cdev_is_power_actor(cdev))
- return -EINVAL;
-
- ret = cdev->ops->power2state(cdev, instance->tz, power, &state);
- if (ret)
- return ret;
-
- instance->target = state;
- cdev->updated = false;
- thermal_cdev_update(cdev);
-
- return 0;
-}
-
/* sys I/F for cooling device */
#define to_cooling_device(_dev) \
container_of(_dev, struct thermal_cooling_device, device)
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 21/48] thermal: core: match parenthesis on code alignment |
| Message-ID | <rEDR8-1Zm-55@gated-at.bofh.it> |
| In reply to | #1409699 |
Cosmetic change in the sysfs handling functions, as
recommended by checkpatch.pl.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 98aa7d5..f22fd7e 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -840,7 +840,7 @@ trip_point_type_show(struct device *dev, struct device_attribute *attr,
static ssize_t
trip_point_temp_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
struct thermal_zone_device *tz = to_thermal_zone(dev);
int trip, ret;
@@ -888,7 +888,7 @@ trip_point_temp_show(struct device *dev, struct device_attribute *attr,
static ssize_t
trip_point_hyst_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
struct thermal_zone_device *tz = to_thermal_zone(dev);
int trip, ret;
@@ -915,7 +915,7 @@ trip_point_hyst_store(struct device *dev, struct device_attribute *attr,
static ssize_t
trip_point_hyst_show(struct device *dev, struct device_attribute *attr,
- char *buf)
+ char *buf)
{
struct thermal_zone_device *tz = to_thermal_zone(dev);
int trip, ret;
@@ -934,7 +934,7 @@ trip_point_hyst_show(struct device *dev, struct device_attribute *attr,
static ssize_t
passive_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
struct thermal_zone_device *tz = to_thermal_zone(dev);
int state;
@@ -968,7 +968,7 @@ passive_store(struct device *dev, struct device_attribute *attr,
static ssize_t
passive_show(struct device *dev, struct device_attribute *attr,
- char *buf)
+ char *buf)
{
struct thermal_zone_device *tz = to_thermal_zone(dev);
@@ -977,7 +977,7 @@ passive_show(struct device *dev, struct device_attribute *attr,
static ssize_t
policy_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
struct thermal_zone_device *tz = to_thermal_zone(dev);
char name[THERMAL_NAME_LENGTH];
@@ -1009,7 +1009,7 @@ available_policies_show(struct device *dev, struct device_attribute *devattr,
static ssize_t
emul_temp_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
struct thermal_zone_device *tz = to_thermal_zone(dev);
int ret = 0;
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 03/48] thermal: core: group device_create_file() calls that are always created |
| Message-ID | <rEDR8-1Zm-57@gated-at.bofh.it> |
| In reply to | #1409699 |
Simple code reorganization to group files that are always created
when registering a thermal zone.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 956e7e1..3ce7882 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1858,14 +1858,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
}
/* sys I/F */
- result = device_create_file(&tz->device, &dev_attr_type);
- if (result)
- goto unregister;
-
- result = device_create_file(&tz->device, &dev_attr_temp);
- if (result)
- goto unregister;
-
if (ops->get_mode) {
result = device_create_file(&tz->device, &dev_attr_mode);
if (result)
@@ -1900,13 +1892,16 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
goto unregister;
}
- /* Create policy attribute */
- result = device_create_file(&tz->device, &dev_attr_policy);
+ result = device_create_file(&tz->device, &dev_attr_type);
if (result)
goto unregister;
- /* Add thermal zone params */
- result = create_tzp_attrs(&tz->device);
+ result = device_create_file(&tz->device, &dev_attr_temp);
+ if (result)
+ goto unregister;
+
+ /* Create policy attribute */
+ result = device_create_file(&tz->device, &dev_attr_policy);
if (result)
goto unregister;
@@ -1915,6 +1910,11 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
if (result)
goto unregister;
+ /* Add thermal zone params */
+ result = create_tzp_attrs(&tz->device);
+ if (result)
+ goto unregister;
+
/* Update 'this' zone's governor information */
mutex_lock(&thermal_governor_lock);
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 24/48] thermal: core: move cooling device sysfs to thermal_sysfs.c |
| Message-ID | <rEDR8-1Zm-37@gated-at.bofh.it> |
| In reply to | #1409699 |
This is a code reorganization, simply to concentrate
the sysfs handling functions in thermal_sysfs.c.
This patch moves the cooling device handling functions.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 128 +-------------------------------------
drivers/thermal/thermal_core.h | 11 ++++
drivers/thermal/thermal_sysfs.c | 133 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 145 insertions(+), 127 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index a81faef..4c4f1b4 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -741,132 +741,6 @@ int thermal_build_list_of_policies(char *buf)
return count;
}
-/* sys I/F for cooling device */
-static ssize_t
-thermal_cooling_device_type_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- struct thermal_cooling_device *cdev = to_cooling_device(dev);
-
- return sprintf(buf, "%s\n", cdev->type);
-}
-
-static ssize_t
-thermal_cooling_device_max_state_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- struct thermal_cooling_device *cdev = to_cooling_device(dev);
- unsigned long state;
- int ret;
-
- ret = cdev->ops->get_max_state(cdev, &state);
- if (ret)
- return ret;
- return sprintf(buf, "%ld\n", state);
-}
-
-static ssize_t
-thermal_cooling_device_cur_state_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- struct thermal_cooling_device *cdev = to_cooling_device(dev);
- unsigned long state;
- int ret;
-
- ret = cdev->ops->get_cur_state(cdev, &state);
- if (ret)
- return ret;
- return sprintf(buf, "%ld\n", state);
-}
-
-static ssize_t
-thermal_cooling_device_cur_state_store(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t count)
-{
- struct thermal_cooling_device *cdev = to_cooling_device(dev);
- unsigned long state;
- int result;
-
- if (sscanf(buf, "%ld\n", &state) != 1)
- return -EINVAL;
-
- if ((long)state < 0)
- return -EINVAL;
-
- result = cdev->ops->set_cur_state(cdev, state);
- if (result)
- return result;
- return count;
-}
-
-static struct device_attribute dev_attr_cdev_type =
-__ATTR(type, 0444, thermal_cooling_device_type_show, NULL);
-static DEVICE_ATTR(max_state, 0444,
- thermal_cooling_device_max_state_show, NULL);
-static DEVICE_ATTR(cur_state, 0644,
- thermal_cooling_device_cur_state_show,
- thermal_cooling_device_cur_state_store);
-
-static ssize_t
-thermal_cooling_device_trip_point_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- struct thermal_instance *instance;
-
- instance =
- container_of(attr, struct thermal_instance, attr);
-
- if (instance->trip == THERMAL_TRIPS_NONE)
- return sprintf(buf, "-1\n");
- else
- return sprintf(buf, "%d\n", instance->trip);
-}
-
-static struct attribute *cooling_device_attrs[] = {
- &dev_attr_cdev_type.attr,
- &dev_attr_max_state.attr,
- &dev_attr_cur_state.attr,
- NULL,
-};
-
-static const struct attribute_group cooling_device_attr_group = {
- .attrs = cooling_device_attrs,
-};
-
-static const struct attribute_group *cooling_device_attr_groups[] = {
- &cooling_device_attr_group,
- NULL,
-};
-
-static ssize_t
-thermal_cooling_device_weight_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- struct thermal_instance *instance;
-
- instance = container_of(attr, struct thermal_instance, weight_attr);
-
- return sprintf(buf, "%d\n", instance->weight);
-}
-
-static ssize_t
-thermal_cooling_device_weight_store(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t count)
-{
- struct thermal_instance *instance;
- int ret, weight;
-
- ret = kstrtoint(buf, 0, &weight);
- if (ret)
- return ret;
-
- instance = container_of(attr, struct thermal_instance, weight_attr);
- instance->weight = weight;
-
- return count;
-}
/* Device management */
/**
@@ -1118,7 +992,7 @@ __thermal_cooling_device_register(struct device_node *np,
cdev->ops = ops;
cdev->updated = false;
cdev->device.class = &thermal_class;
- cdev->device.groups = cooling_device_attr_groups;
+ thermal_cooling_device_setup_sysfs(cdev);
cdev->devdata = devdata;
dev_set_name(&cdev->device, "cooling_device%d", cdev->id);
result = device_register(&cdev->device);
diff --git a/drivers/thermal/thermal_core.h b/drivers/thermal/thermal_core.h
index 5619243..2412b37 100644
--- a/drivers/thermal/thermal_core.h
+++ b/drivers/thermal/thermal_core.h
@@ -71,6 +71,17 @@ int thermal_build_list_of_policies(char *buf);
/* sysfs I/F */
int thermal_zone_create_device_groups(struct thermal_zone_device *, int);
+void thermal_cooling_device_setup_sysfs(struct thermal_cooling_device *);
+/* used only at binding time */
+ssize_t
+thermal_cooling_device_trip_point_show(struct device *,
+ struct device_attribute *, char *);
+ssize_t thermal_cooling_device_weight_show(struct device *,
+ struct device_attribute *, char *);
+
+ssize_t thermal_cooling_device_weight_store(struct device *,
+ struct device_attribute *,
+ const char *, size_t);
#ifdef CONFIG_THERMAL_GOV_STEP_WISE
int thermal_gov_step_wise_register(void);
diff --git a/drivers/thermal/thermal_sysfs.c b/drivers/thermal/thermal_sysfs.c
index 60122a2..111ec71 100644
--- a/drivers/thermal/thermal_sysfs.c
+++ b/drivers/thermal/thermal_sysfs.c
@@ -612,3 +612,136 @@ int thermal_zone_create_device_groups(struct thermal_zone_device *tz,
return 0;
}
+
+/* sys I/F for cooling device */
+static ssize_t
+thermal_cooling_device_type_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct thermal_cooling_device *cdev = to_cooling_device(dev);
+
+ return sprintf(buf, "%s\n", cdev->type);
+}
+
+static ssize_t
+thermal_cooling_device_max_state_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct thermal_cooling_device *cdev = to_cooling_device(dev);
+ unsigned long state;
+ int ret;
+
+ ret = cdev->ops->get_max_state(cdev, &state);
+ if (ret)
+ return ret;
+ return sprintf(buf, "%ld\n", state);
+}
+
+static ssize_t
+thermal_cooling_device_cur_state_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct thermal_cooling_device *cdev = to_cooling_device(dev);
+ unsigned long state;
+ int ret;
+
+ ret = cdev->ops->get_cur_state(cdev, &state);
+ if (ret)
+ return ret;
+ return sprintf(buf, "%ld\n", state);
+}
+
+static ssize_t
+thermal_cooling_device_cur_state_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct thermal_cooling_device *cdev = to_cooling_device(dev);
+ unsigned long state;
+ int result;
+
+ if (sscanf(buf, "%ld\n", &state) != 1)
+ return -EINVAL;
+
+ if ((long)state < 0)
+ return -EINVAL;
+
+ result = cdev->ops->set_cur_state(cdev, state);
+ if (result)
+ return result;
+ return count;
+}
+
+static struct device_attribute dev_attr_cdev_type =
+__ATTR(type, 0444, thermal_cooling_device_type_show, NULL);
+static DEVICE_ATTR(max_state, 0444,
+ thermal_cooling_device_max_state_show, NULL);
+static DEVICE_ATTR(cur_state, 0644,
+ thermal_cooling_device_cur_state_show,
+ thermal_cooling_device_cur_state_store);
+
+static struct attribute *cooling_device_attrs[] = {
+ &dev_attr_cdev_type.attr,
+ &dev_attr_max_state.attr,
+ &dev_attr_cur_state.attr,
+ NULL,
+};
+
+static const struct attribute_group cooling_device_attr_group = {
+ .attrs = cooling_device_attrs,
+};
+
+static const struct attribute_group *cooling_device_attr_groups[] = {
+ &cooling_device_attr_group,
+ NULL,
+};
+
+void thermal_cooling_device_setup_sysfs(struct thermal_cooling_device *cdev)
+{
+ cdev->device.groups = cooling_device_attr_groups;
+}
+
+/* these helper will be used only at the time of bindig */
+ssize_t
+thermal_cooling_device_trip_point_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct thermal_instance *instance;
+
+ instance =
+ container_of(attr, struct thermal_instance, attr);
+
+ if (instance->trip == THERMAL_TRIPS_NONE)
+ return sprintf(buf, "-1\n");
+ else
+ return sprintf(buf, "%d\n", instance->trip);
+}
+
+ssize_t
+thermal_cooling_device_weight_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct thermal_instance *instance;
+
+ instance = container_of(attr, struct thermal_instance, weight_attr);
+
+ return sprintf(buf, "%d\n", instance->weight);
+}
+
+ssize_t
+thermal_cooling_device_weight_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct thermal_instance *instance;
+ int ret, weight;
+
+ ret = kstrtoint(buf, 0, &weight);
+ if (ret)
+ return ret;
+
+ instance = container_of(attr, struct thermal_instance, weight_attr);
+ instance->weight = weight;
+
+ return count;
+}
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 11/48] thermal: core: fix style on remove_trip_attrs() |
| Message-ID | <rEDR9-1Zm-61@gated-at.bofh.it> |
| In reply to | #1409699 |
Align to parentheses, removing checkpatch warning. Cc: Zhang Rui <rui.zhang@intel.com> Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Eduardo Valentin <edubezval@gmail.com> --- drivers/thermal/thermal_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index e04e443..bd6b144 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -1831,7 +1831,7 @@ static void remove_trip_attrs(struct thermal_zone_device *tz) &tz->trip_temp_attrs[indx].attr); if (tz->ops->get_trip_hyst) device_remove_file(&tz->device, - &tz->trip_hyst_attrs[indx].attr); + &tz->trip_hyst_attrs[indx].attr); } kfree(tz->trip_type_attrs); kfree(tz->trip_temp_attrs); -- 2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 35/48] thermal: core: add inline to print_bind_err_msg() |
| Message-ID | <rEDR9-1Zm-63@gated-at.bofh.it> |
| In reply to | #1409699 |
Given that this is simple wrapper, adding the inline flag.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 460220c..c1908c4 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -771,8 +771,9 @@ static struct class thermal_class = {
.dev_release = thermal_release,
};
-static void print_bind_err_msg(struct thermal_zone_device *tz,
- struct thermal_cooling_device *cdev, int ret)
+static inline
+void print_bind_err_msg(struct thermal_zone_device *tz,
+ struct thermal_cooling_device *cdev, int ret)
{
dev_err(&tz->device, "binding zone %s with cdev %s failed:%d\n",
tz->type, cdev->type, ret);
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 33/48] thermal: core: fix couple of style issues on __bind() helper |
| Message-ID | <rEDR9-1Zm-73@gated-at.bofh.it> |
| In reply to | #1409699 |
Removing style issues on __bind() and its helpers.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index b71f4ea..59fe92d 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -287,16 +287,16 @@ static void thermal_unregister_governors(void)
}
static void print_bind_err_msg(struct thermal_zone_device *tz,
- struct thermal_cooling_device *cdev, int ret)
+ struct thermal_cooling_device *cdev, int ret)
{
dev_err(&tz->device, "binding zone %s with cdev %s failed:%d\n",
- tz->type, cdev->type, ret);
+ tz->type, cdev->type, ret);
}
static void __bind(struct thermal_zone_device *tz, int mask,
- struct thermal_cooling_device *cdev,
- unsigned long *limits,
- unsigned int weight)
+ struct thermal_cooling_device *cdev,
+ unsigned long *limits,
+ unsigned int weight)
{
int i, ret;
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 05/48] thermal: core: move emul_temp creation to tz->device.groups |
| Message-ID | <rEDR9-1Zm-67@gated-at.bofh.it> |
| In reply to | #1409699 |
emul_temp creation is dependent on a compile time
condition. Moving to tz->device.groups.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 926442e..1398c9d 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -996,6 +996,7 @@ create_s32_tzp_attr(offset);
*/
static DEVICE_ATTR(type, 0444, type_show, NULL);
static DEVICE_ATTR(temp, 0444, temp_show, NULL);
+static DEVICE_ATTR(emul_temp, S_IWUSR, NULL, emul_temp_store);
static DEVICE_ATTR(policy, S_IRUGO | S_IWUSR, policy_show, policy_store);
static DEVICE_ATTR(available_policies, S_IRUGO, available_policies_show, NULL);
static DEVICE_ATTR(sustainable_power, S_IWUSR | S_IRUGO, sustainable_power_show,
@@ -1004,11 +1005,13 @@ static DEVICE_ATTR(sustainable_power, S_IWUSR | S_IRUGO, sustainable_power_show,
/* These thermal zone device attributes are created based on conditions */
static DEVICE_ATTR(mode, 0644, mode_show, mode_store);
static DEVICE_ATTR(passive, S_IRUGO | S_IWUSR, passive_show, passive_store);
-static DEVICE_ATTR(emul_temp, S_IWUSR, NULL, emul_temp_store);
static struct attribute *thermal_zone_dev_attrs[] = {
&dev_attr_type.attr,
&dev_attr_temp.attr,
+#if (IS_ENABLED(CONFIG_THERMAL_EMULATION))
+ &dev_attr_emul_temp.attr,
+#endif
&dev_attr_policy.attr,
&dev_attr_available_policies.attr,
&dev_attr_sustainable_power.attr,
@@ -1893,12 +1896,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
goto unregister;
}
- if (IS_ENABLED(CONFIG_THERMAL_EMULATION)) {
- result = device_create_file(&tz->device, &dev_attr_emul_temp);
- if (result)
- goto unregister;
- }
-
/* Update 'this' zone's governor information */
mutex_lock(&thermal_governor_lock);
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 12/48] thermal: core: move the trip attrs to the tz sysfs I/F section |
| Message-ID | <rEDR9-1Zm-71@gated-at.bofh.it> |
| In reply to | #1409699 |
Code reorganization to keep all the sysfs I/F of a thermal zone in the
same section.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 216 ++++++++++++++++++++---------------------
1 file changed, 108 insertions(+), 108 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index bd6b144..8f1a16e 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1173,6 +1173,114 @@ static const struct attribute_group *thermal_zone_attribute_groups[] = {
NULL
};
+/**
+ * create_trip_attrs() - create attributes for trip points
+ * @tz: the thermal zone device
+ * @mask: Writeable trip point bitmap.
+ *
+ * helper function to instantiate sysfs entries for every trip
+ * point and its properties of a struct thermal_zone_device.
+ *
+ * Return: 0 on success, the proper error value otherwise.
+ */
+static int create_trip_attrs(struct thermal_zone_device *tz, int mask)
+{
+ int indx;
+ int size = sizeof(struct thermal_attr) * tz->trips;
+
+ tz->trip_type_attrs = kzalloc(size, GFP_KERNEL);
+ if (!tz->trip_type_attrs)
+ return -ENOMEM;
+
+ tz->trip_temp_attrs = kzalloc(size, GFP_KERNEL);
+ if (!tz->trip_temp_attrs) {
+ kfree(tz->trip_type_attrs);
+ return -ENOMEM;
+ }
+
+ if (tz->ops->get_trip_hyst) {
+ tz->trip_hyst_attrs = kzalloc(size, GFP_KERNEL);
+ if (!tz->trip_hyst_attrs) {
+ kfree(tz->trip_type_attrs);
+ kfree(tz->trip_temp_attrs);
+ return -ENOMEM;
+ }
+ }
+
+ for (indx = 0; indx < tz->trips; indx++) {
+ /* create trip type attribute */
+ snprintf(tz->trip_type_attrs[indx].name, THERMAL_NAME_LENGTH,
+ "trip_point_%d_type", indx);
+
+ sysfs_attr_init(&tz->trip_type_attrs[indx].attr.attr);
+ tz->trip_type_attrs[indx].attr.attr.name =
+ tz->trip_type_attrs[indx].name;
+ tz->trip_type_attrs[indx].attr.attr.mode = S_IRUGO;
+ tz->trip_type_attrs[indx].attr.show = trip_point_type_show;
+
+ device_create_file(&tz->device,
+ &tz->trip_type_attrs[indx].attr);
+
+ /* create trip temp attribute */
+ snprintf(tz->trip_temp_attrs[indx].name, THERMAL_NAME_LENGTH,
+ "trip_point_%d_temp", indx);
+
+ sysfs_attr_init(&tz->trip_temp_attrs[indx].attr.attr);
+ tz->trip_temp_attrs[indx].attr.attr.name =
+ tz->trip_temp_attrs[indx].name;
+ tz->trip_temp_attrs[indx].attr.attr.mode = S_IRUGO;
+ tz->trip_temp_attrs[indx].attr.show = trip_point_temp_show;
+ if (IS_ENABLED(CONFIG_THERMAL_WRITABLE_TRIPS) &&
+ mask & (1 << indx)) {
+ tz->trip_temp_attrs[indx].attr.attr.mode |= S_IWUSR;
+ tz->trip_temp_attrs[indx].attr.store =
+ trip_point_temp_store;
+ }
+
+ device_create_file(&tz->device,
+ &tz->trip_temp_attrs[indx].attr);
+
+ /* create Optional trip hyst attribute */
+ if (!tz->ops->get_trip_hyst)
+ continue;
+ snprintf(tz->trip_hyst_attrs[indx].name, THERMAL_NAME_LENGTH,
+ "trip_point_%d_hyst", indx);
+
+ sysfs_attr_init(&tz->trip_hyst_attrs[indx].attr.attr);
+ tz->trip_hyst_attrs[indx].attr.attr.name =
+ tz->trip_hyst_attrs[indx].name;
+ tz->trip_hyst_attrs[indx].attr.attr.mode = S_IRUGO;
+ tz->trip_hyst_attrs[indx].attr.show = trip_point_hyst_show;
+ if (tz->ops->set_trip_hyst) {
+ tz->trip_hyst_attrs[indx].attr.attr.mode |= S_IWUSR;
+ tz->trip_hyst_attrs[indx].attr.store =
+ trip_point_hyst_store;
+ }
+
+ device_create_file(&tz->device,
+ &tz->trip_hyst_attrs[indx].attr);
+ }
+ return 0;
+}
+
+static void remove_trip_attrs(struct thermal_zone_device *tz)
+{
+ int indx;
+
+ for (indx = 0; indx < tz->trips; indx++) {
+ device_remove_file(&tz->device,
+ &tz->trip_type_attrs[indx].attr);
+ device_remove_file(&tz->device,
+ &tz->trip_temp_attrs[indx].attr);
+ if (tz->ops->get_trip_hyst)
+ device_remove_file(&tz->device,
+ &tz->trip_hyst_attrs[indx].attr);
+ }
+ kfree(tz->trip_type_attrs);
+ kfree(tz->trip_temp_attrs);
+ kfree(tz->trip_hyst_attrs);
+}
+
/* sys I/F for cooling device */
#define to_cooling_device(_dev) \
container_of(_dev, struct thermal_cooling_device, device)
@@ -1731,114 +1839,6 @@ void thermal_notify_framework(struct thermal_zone_device *tz, int trip)
EXPORT_SYMBOL_GPL(thermal_notify_framework);
/**
- * create_trip_attrs() - create attributes for trip points
- * @tz: the thermal zone device
- * @mask: Writeable trip point bitmap.
- *
- * helper function to instantiate sysfs entries for every trip
- * point and its properties of a struct thermal_zone_device.
- *
- * Return: 0 on success, the proper error value otherwise.
- */
-static int create_trip_attrs(struct thermal_zone_device *tz, int mask)
-{
- int indx;
- int size = sizeof(struct thermal_attr) * tz->trips;
-
- tz->trip_type_attrs = kzalloc(size, GFP_KERNEL);
- if (!tz->trip_type_attrs)
- return -ENOMEM;
-
- tz->trip_temp_attrs = kzalloc(size, GFP_KERNEL);
- if (!tz->trip_temp_attrs) {
- kfree(tz->trip_type_attrs);
- return -ENOMEM;
- }
-
- if (tz->ops->get_trip_hyst) {
- tz->trip_hyst_attrs = kzalloc(size, GFP_KERNEL);
- if (!tz->trip_hyst_attrs) {
- kfree(tz->trip_type_attrs);
- kfree(tz->trip_temp_attrs);
- return -ENOMEM;
- }
- }
-
- for (indx = 0; indx < tz->trips; indx++) {
- /* create trip type attribute */
- snprintf(tz->trip_type_attrs[indx].name, THERMAL_NAME_LENGTH,
- "trip_point_%d_type", indx);
-
- sysfs_attr_init(&tz->trip_type_attrs[indx].attr.attr);
- tz->trip_type_attrs[indx].attr.attr.name =
- tz->trip_type_attrs[indx].name;
- tz->trip_type_attrs[indx].attr.attr.mode = S_IRUGO;
- tz->trip_type_attrs[indx].attr.show = trip_point_type_show;
-
- device_create_file(&tz->device,
- &tz->trip_type_attrs[indx].attr);
-
- /* create trip temp attribute */
- snprintf(tz->trip_temp_attrs[indx].name, THERMAL_NAME_LENGTH,
- "trip_point_%d_temp", indx);
-
- sysfs_attr_init(&tz->trip_temp_attrs[indx].attr.attr);
- tz->trip_temp_attrs[indx].attr.attr.name =
- tz->trip_temp_attrs[indx].name;
- tz->trip_temp_attrs[indx].attr.attr.mode = S_IRUGO;
- tz->trip_temp_attrs[indx].attr.show = trip_point_temp_show;
- if (IS_ENABLED(CONFIG_THERMAL_WRITABLE_TRIPS) &&
- mask & (1 << indx)) {
- tz->trip_temp_attrs[indx].attr.attr.mode |= S_IWUSR;
- tz->trip_temp_attrs[indx].attr.store =
- trip_point_temp_store;
- }
-
- device_create_file(&tz->device,
- &tz->trip_temp_attrs[indx].attr);
-
- /* create Optional trip hyst attribute */
- if (!tz->ops->get_trip_hyst)
- continue;
- snprintf(tz->trip_hyst_attrs[indx].name, THERMAL_NAME_LENGTH,
- "trip_point_%d_hyst", indx);
-
- sysfs_attr_init(&tz->trip_hyst_attrs[indx].attr.attr);
- tz->trip_hyst_attrs[indx].attr.attr.name =
- tz->trip_hyst_attrs[indx].name;
- tz->trip_hyst_attrs[indx].attr.attr.mode = S_IRUGO;
- tz->trip_hyst_attrs[indx].attr.show = trip_point_hyst_show;
- if (tz->ops->set_trip_hyst) {
- tz->trip_hyst_attrs[indx].attr.attr.mode |= S_IWUSR;
- tz->trip_hyst_attrs[indx].attr.store =
- trip_point_hyst_store;
- }
-
- device_create_file(&tz->device,
- &tz->trip_hyst_attrs[indx].attr);
- }
- return 0;
-}
-
-static void remove_trip_attrs(struct thermal_zone_device *tz)
-{
- int indx;
-
- for (indx = 0; indx < tz->trips; indx++) {
- device_remove_file(&tz->device,
- &tz->trip_type_attrs[indx].attr);
- device_remove_file(&tz->device,
- &tz->trip_temp_attrs[indx].attr);
- if (tz->ops->get_trip_hyst)
- device_remove_file(&tz->device,
- &tz->trip_hyst_attrs[indx].attr);
- }
- kfree(tz->trip_type_attrs);
- kfree(tz->trip_temp_attrs);
- kfree(tz->trip_hyst_attrs);
-}
-
-/**
* thermal_zone_device_register() - register a new thermal zone device
* @type: the thermal zone device type
* @trips: the number of trip points the thermal zone support
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 14/48] thermal: core: move trips attributes to tz->device.groups |
| Message-ID | <rEDR9-1Zm-81@gated-at.bofh.it> |
| In reply to | #1409699 |
Finally, move the last thermal zone sysfs attributes to
tz->device.groups: trips attributes. This requires adding a
attribute_group to thermal_zone_device, creating it dynamically, and
then setting all trips attributes in it. The trips attribute is then
added to the tz->device.groups.
As the removal of all attributes are handled by device core, the device
remove calls are not needed anymore.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 76 +++++++++++++++++++++---------------------
include/linux/thermal.h | 2 ++
2 files changed, 40 insertions(+), 38 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 7a30863..0156a6b 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1185,8 +1185,9 @@ static const struct attribute_group *thermal_zone_attribute_groups[] = {
*/
static int create_trip_attrs(struct thermal_zone_device *tz, int mask)
{
- int indx;
int size = sizeof(struct thermal_attr) * tz->trips;
+ struct attribute **attrs;
+ int indx;
tz->trip_type_attrs = kzalloc(size, GFP_KERNEL);
if (!tz->trip_type_attrs)
@@ -1207,6 +1208,15 @@ static int create_trip_attrs(struct thermal_zone_device *tz, int mask)
}
}
+ attrs = kzalloc(sizeof(*attrs) * tz->trips * 3, GFP_KERNEL);
+ if (!attrs) {
+ kfree(tz->trip_type_attrs);
+ kfree(tz->trip_temp_attrs);
+ if (tz->ops->get_trip_hyst)
+ kfree(tz->trip_hyst_attrs);
+ return -ENOMEM;
+ }
+
for (indx = 0; indx < tz->trips; indx++) {
/* create trip type attribute */
snprintf(tz->trip_type_attrs[indx].name, THERMAL_NAME_LENGTH,
@@ -1217,9 +1227,7 @@ static int create_trip_attrs(struct thermal_zone_device *tz, int mask)
tz->trip_type_attrs[indx].name;
tz->trip_type_attrs[indx].attr.attr.mode = S_IRUGO;
tz->trip_type_attrs[indx].attr.show = trip_point_type_show;
-
- device_create_file(&tz->device,
- &tz->trip_type_attrs[indx].attr);
+ attrs[indx] = &tz->trip_type_attrs[indx].attr.attr;
/* create trip temp attribute */
snprintf(tz->trip_temp_attrs[indx].name, THERMAL_NAME_LENGTH,
@@ -1236,9 +1244,7 @@ static int create_trip_attrs(struct thermal_zone_device *tz, int mask)
tz->trip_temp_attrs[indx].attr.store =
trip_point_temp_store;
}
-
- device_create_file(&tz->device,
- &tz->trip_temp_attrs[indx].attr);
+ attrs[indx + tz->trips] = &tz->trip_type_attrs[indx].attr.attr;
/* create Optional trip hyst attribute */
if (!tz->ops->get_trip_hyst)
@@ -1256,45 +1262,37 @@ static int create_trip_attrs(struct thermal_zone_device *tz, int mask)
tz->trip_hyst_attrs[indx].attr.store =
trip_point_hyst_store;
}
-
- device_create_file(&tz->device,
- &tz->trip_hyst_attrs[indx].attr);
+ attrs[indx + tz->trips * 2] =
+ &tz->trip_type_attrs[indx].attr.attr;
}
- return 0;
-}
-static void remove_trip_attrs(struct thermal_zone_device *tz)
-{
- int indx;
+ tz->trips_attribute_group.attrs = attrs;
- for (indx = 0; indx < tz->trips; indx++) {
- device_remove_file(&tz->device,
- &tz->trip_type_attrs[indx].attr);
- device_remove_file(&tz->device,
- &tz->trip_temp_attrs[indx].attr);
- if (tz->ops->get_trip_hyst)
- device_remove_file(&tz->device,
- &tz->trip_hyst_attrs[indx].attr);
- }
- kfree(tz->trip_type_attrs);
- kfree(tz->trip_temp_attrs);
- kfree(tz->trip_hyst_attrs);
+ return 0;
}
-static int thermal_zone_create_device_groups(struct thermal_zone_device *tz)
+static int thermal_zone_create_device_groups(struct thermal_zone_device *tz,
+ int mask)
{
const struct attribute_group **groups;
- int i, size;
+ int i, size, result;
+
+ result = create_trip_attrs(tz, mask);
+ if (result)
+ return result;
- size = ARRAY_SIZE(thermal_zone_attribute_groups) + 1;
+ /* we need one extra for trips and the NULL to terminate the array */
+ size = ARRAY_SIZE(thermal_zone_attribute_groups) + 2;
/* This also takes care of API requirement to be NULL terminated */
groups = kcalloc(size, sizeof(*groups), GFP_KERNEL);
if (!groups)
return -ENOMEM;
- for (i = 0; i < size - 1; i++)
+ for (i = 0; i < size - 2; i++)
groups[i] = thermal_zone_attribute_groups[i];
+ groups[size - 2] = &tz->trips_attribute_group;
+
tz->device.groups = groups;
return 0;
@@ -1931,8 +1929,12 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
tz->passive_delay = passive_delay;
tz->polling_delay = polling_delay;
+ /* sys I/F */
/* Add nodes that are always present via .groups */
- thermal_zone_create_device_groups(tz);
+ result = thermal_zone_create_device_groups(tz, mask);
+ if (result)
+ goto unregister;
+
/* A new thermal zone needs to be updated anyway. */
atomic_set(&tz->need_update, 1);
@@ -1944,11 +1946,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
return ERR_PTR(result);
}
- /* sys I/F */
- result = create_trip_attrs(tz, mask);
- if (result)
- goto unregister;
-
for (count = 0; count < trips; count++) {
if (tz->ops->get_trip_type(tz, count, &trip_type))
set_bit(count, &tz->trips_disabled);
@@ -2053,7 +2050,10 @@ void thermal_zone_device_unregister(struct thermal_zone_device *tz)
thermal_zone_device_set_polling(tz, 0);
- remove_trip_attrs(tz);
+ kfree(tz->trip_type_attrs);
+ kfree(tz->trip_temp_attrs);
+ kfree(tz->trip_hyst_attrs);
+ kfree(tz->trips_attribute_group.attrs);
thermal_set_governor(tz, NULL);
thermal_remove_hwmon_sysfs(tz);
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index e45abe7..fa2c2be 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -28,6 +28,7 @@
#include <linux/of.h>
#include <linux/idr.h>
#include <linux/device.h>
+#include <linux/sysfs.h>
#include <linux/workqueue.h>
#include <uapi/linux/thermal.h>
@@ -187,6 +188,7 @@ struct thermal_zone_device {
int id;
char type[THERMAL_NAME_LENGTH];
struct device device;
+ struct attribute_group trips_attribute_group;
struct thermal_attr *trip_temp_attrs;
struct thermal_attr *trip_type_attrs;
struct thermal_attr *trip_hyst_attrs;
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 08/48] thermal: core: improve power actor documentation |
| Message-ID | <rEDR9-1Zm-75@gated-at.bofh.it> |
| In reply to | #1409699 |
Simple improvement on clarity and removal of checkpatch warning in the documentation of power actor kernel doc. Cc: Zhang Rui <rui.zhang@intel.com> Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Eduardo Valentin <edubezval@gmail.com> --- drivers/thermal/thermal_core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 3cbb208..12427cc 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -1142,12 +1142,13 @@ int power_actor_get_min_power(struct thermal_cooling_device *cdev, } /** - * power_actor_set_power() - limit the maximum power that a cooling device can consume + * power_actor_set_power() - limit the maximum power a cooling device consumes * @cdev: pointer to &thermal_cooling_device * @instance: thermal instance to update * @power: the power in milliwatts * - * Set the cooling device to consume at most @power milliwatts. + * Set the cooling device to consume at most @power milliwatts. The limit is + * expected to be a cap at the maximum power consumption. * * Return: 0 on success, -EINVAL if the cooling device does not * implement the power actor API or -E* for other failures. -- 2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 30/48] thermal: core: move __unbind() helper to where it is used |
| Message-ID | <rEDRa-1Zm-87@gated-at.bofh.it> |
| In reply to | #1409699 |
Simply moving the helper to closer where it is actually used.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 261cc16..75b7854 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -319,16 +319,6 @@ static void __bind(struct thermal_zone_device *tz, int mask,
}
}
-static void __unbind(struct thermal_zone_device *tz, int mask,
- struct thermal_cooling_device *cdev)
-{
- int i;
-
- for (i = 0; i < tz->trips; i++)
- if (mask & (1 << i))
- thermal_zone_unbind_cooling_device(tz, i, cdev);
-}
-
static void bind_cdev(struct thermal_cooling_device *cdev)
{
int i, ret;
@@ -1013,6 +1003,16 @@ thermal_of_cooling_device_register(struct device_node *np,
}
EXPORT_SYMBOL_GPL(thermal_of_cooling_device_register);
+static void __unbind(struct thermal_zone_device *tz, int mask,
+ struct thermal_cooling_device *cdev)
+{
+ int i;
+
+ for (i = 0; i < tz->trips; i++)
+ if (mask & (1 << i))
+ thermal_zone_unbind_cooling_device(tz, i, cdev);
+}
+
/**
* thermal_cooling_device_unregister - removes the registered thermal cooling device
* @cdev: the thermal cooling device to remove.
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 29/48] thermal: core: small style fix on __unbind() helper |
| Message-ID | <rEDR9-1Zm-79@gated-at.bofh.it> |
| In reply to | #1409699 |
Simply aligning to parenthesis.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index e77e6d1..261cc16 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -320,7 +320,7 @@ static void __bind(struct thermal_zone_device *tz, int mask,
}
static void __unbind(struct thermal_zone_device *tz, int mask,
- struct thermal_cooling_device *cdev)
+ struct thermal_cooling_device *cdev)
{
int i;
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 38/48] thermal: core: add a comment describing the power actor section |
| Message-ID | <rEDRa-1Zm-91@gated-at.bofh.it> |
| In reply to | #1409699 |
Simply marking the power actor section and adding a comment describing it. Cc: Zhang Rui <rui.zhang@intel.com> Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Eduardo Valentin <edubezval@gmail.com> --- drivers/thermal/thermal_core.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 063fb15..5ce6504 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -456,6 +456,13 @@ static void thermal_zone_device_check(struct work_struct *work) thermal_zone_device_update(tz); } +/* + * Power actor section: interface to power actors to estimate power + * + * Set of functions used to interact to cooling devices that know + * how to estimate their devices power consumption. + */ + /** * power_actor_get_max_power() - get the maximum power that a cdev can consume * @cdev: pointer to &thermal_cooling_device -- 2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 18/48] thermal: core: split available_policies_show() |
| Message-ID | <rEDR9-1Zm-83@gated-at.bofh.it> |
| In reply to | #1409699 |
This patch creates a helper to build a list of available governors.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
drivers/thermal/thermal_core.c | 35 ++++++++++++++++++++---------------
drivers/thermal/thermal_core.h | 1 +
2 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 078b260..d3f7124 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -722,6 +722,25 @@ exit:
return ret;
}
+int thermal_build_list_of_policies(char *buf)
+{
+ struct thermal_governor *pos;
+ ssize_t count = 0;
+ ssize_t size = PAGE_SIZE;
+
+ mutex_lock(&thermal_governor_lock);
+
+ list_for_each_entry(pos, &thermal_governor_list, governor_list) {
+ size = PAGE_SIZE - count;
+ count += scnprintf(buf + count, size, "%s ", pos->name);
+ }
+ count += scnprintf(buf + count, size, "\n");
+
+ mutex_unlock(&thermal_governor_lock);
+
+ return count;
+}
+
/* sys I/F for thermal zone */
#define to_thermal_zone(_dev) \
@@ -988,21 +1007,7 @@ static ssize_t
available_policies_show(struct device *dev, struct device_attribute *devattr,
char *buf)
{
- struct thermal_governor *pos;
- ssize_t count = 0;
- ssize_t size = PAGE_SIZE;
-
- mutex_lock(&thermal_governor_lock);
-
- list_for_each_entry(pos, &thermal_governor_list, governor_list) {
- size = PAGE_SIZE - count;
- count += scnprintf(buf + count, size, "%s ", pos->name);
- }
- count += scnprintf(buf + count, size, "\n");
-
- mutex_unlock(&thermal_governor_lock);
-
- return count;
+ return thermal_build_list_of_policies(buf);
}
static ssize_t
diff --git a/drivers/thermal/thermal_core.h b/drivers/thermal/thermal_core.h
index db65d3b..8994d2a 100644
--- a/drivers/thermal/thermal_core.h
+++ b/drivers/thermal/thermal_core.h
@@ -61,6 +61,7 @@ void thermal_zone_device_rebind_exception(struct thermal_zone_device *,
void thermal_zone_device_unbind_exception(struct thermal_zone_device *,
const char *, size_t);
int thermal_zone_device_set_policy(struct thermal_zone_device *, char *);
+int thermal_build_list_of_policies(char *buf);
#ifdef CONFIG_THERMAL_GOV_STEP_WISE
int thermal_gov_step_wise_register(void);
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 00:30 +0200 |
| Subject | [PATCHv3 15/48] thermal: core: remove unnecessary device_remove() calls |
| Message-ID | <rEDRa-1Zm-93@gated-at.bofh.it> |
| In reply to | #1409699 |
Given that cdevs sysfs properties are already registered using the dev.groups, there is no need to explicitly call device_remove() for each property. Cc: Zhang Rui <rui.zhang@intel.com> Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Eduardo Valentin <edubezval@gmail.com> --- drivers/thermal/thermal_core.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 0156a6b..61410c3 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -1799,11 +1799,6 @@ void thermal_cooling_device_unregister(struct thermal_cooling_device *cdev) mutex_unlock(&thermal_list_lock); - if (cdev->type[0]) - device_remove_file(&cdev->device, &dev_attr_cdev_type); - device_remove_file(&cdev->device, &dev_attr_max_state); - device_remove_file(&cdev->device, &dev_attr_cur_state); - release_idr(&thermal_cdev_idr, &thermal_idr_lock, cdev->id); device_unregister(&cdev->device); return; -- 2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Keerthy <a0393675@ti.com> |
|---|---|
| Date | 2016-05-31 06:30 +0200 |
| Message-ID | <rEJtv-61m-15@gated-at.bofh.it> |
| In reply to | #1409699 |
Hi Eduardo, On Tuesday 31 May 2016 03:45 AM, Eduardo Valentin wrote: > Folks, > > This is V3 of a patch series to improve thermal core. The idea > here is to reorganize the code and improve the way we > handle sysfs entries. > > The change in behavior is that now, thermal zones with empty > .type will not be allowed to be registered. Also, the way > we handle scanf's return code is now checking for > number of successful inputs. > > After this series, thermal core is split into the following files: > - thermal_sysfs.c: contains the functions handling the sysfs nodes > - thermal_helpers.c: groups functions that do not need to touch thermal > core internal data structures, such as internal lists, and list locks. > - thermal_core.c: functions to handle the lifecycle of the subsystem, > its governors, cooling devices, thermal zone devices, and their > interactions. > > I don't expect any impact on userspace. > I applied the whole 48 patch series on top of mainline kernel. I see boot crash when i have thermal modules built in kernel for dra7/dra72 boards. dra7 bootlog: http://pastebin.ubuntu.com/16859184/ Regards, Keerthy > Please give your inputs. > > V2->V3: > - Included 8 extra patches to remove style issues on > (new) thermal core. > > V1->V2: > - Removed all checkpatch issues in the existing code that was > moved/changed. > > Rui, it would be great if you could review these earlier. I will be > sending two extra patch series on top of this one. > > BR, > > Eduardo Valentin (48): > thermal: core: prevent zones with no types to be registered > thermal: core: group thermal_zone DEVICE_ATTR's declarations > thermal: core: group device_create_file() calls that are always > created > thermal: core: use dev.groups to manage always present tz attributes > thermal: core: move emul_temp creation to tz->device.groups > thermal: core: move mode attribute to tz->device.groups > thermal: core: move passive attr to tz->device.groups > thermal: core: improve power actor documentation > thermal: core: move power actor code out of sysfs I/F section > thermal: core: remove useless empty line > thermal: core: fix style on remove_trip_attrs() > thermal: core: move the trip attrs to the tz sysfs I/F section > thermal: core: create tz->device.groups dynamically > thermal: core: move trips attributes to tz->device.groups > thermal: core: remove unnecessary device_remove() calls > thermal: core: split passive_store > thermal: core: split policy_store > thermal: core: split available_policies_show() > thermal: core: move to_thermal_zone() macro to header file > thermal: core: treat correctly the return value of *scanf calls > thermal: core: match parenthesis on code alignment > thermal: core: move thermal_zone sysfs to thermal_sysfs.c > thermal: core: move to_cooling_device macro to header file > thermal: core: move cooling device sysfs to thermal_sysfs.c > thermal: core: remove a couple of style issues on helpers > thermal: core: introduce thermal_helpers.c > thermal: core: group functions related to governor handling > thermal: core: move idr handling to device management section > thermal: core: small style fix on __unbind() helper > thermal: core: move __unbind() helper to where it is used > thermal: core: move bind_cdev() to where it is used > thermal: core: move bind_tz() to where it is used > thermal: core: fix couple of style issues on __bind() helper > thermal: core: move __bind() to where it is used > thermal: core: add inline to print_bind_err_msg() > thermal: core: move notify to the zone update section > thermal: core: add a comment describing the main update loop > thermal: core: add a comment describing the power actor section > thermal: core: add a comment describing the device management section > thermal: sysfs: remove symbols of emul_temp when config is disabled > thermal: core: remove FSF address in the GPL notice > thermal: core: small style fix when checking for __find_governor() > thermal: core: standardize line breaking alignment > thermal: core: remove void function return statements > thermal: core: remove style warnings and checks > thermal: core: improve kerneldoc entry of > thermal_cooling_device_unregister > thermal: core: use kzalloc(sizeof(*ptr),...) > thermal: sysfs: use kcalloc() instead of kzalloc() > > drivers/thermal/Makefile | 3 +- > drivers/thermal/thermal_core.c | 1363 +++++++++---------------------------- > drivers/thermal/thermal_core.h | 26 + > drivers/thermal/thermal_helpers.c | 144 ++++ > drivers/thermal/thermal_sysfs.c | 752 ++++++++++++++++++++ > include/linux/thermal.h | 2 + > 6 files changed, 1234 insertions(+), 1056 deletions(-) > create mode 100644 drivers/thermal/thermal_helpers.c > create mode 100644 drivers/thermal/thermal_sysfs.c >
[toc] | [prev] | [next] | [standalone]
| From | Eduardo Valentin <edubezval@gmail.com> |
|---|---|
| Date | 2016-05-31 08:20 +0200 |
| Message-ID | <rELbX-79h-1@gated-at.bofh.it> |
| In reply to | #1409799 |
On Tue, May 31, 2016 at 09:54:08AM +0530, Keerthy wrote: > Hi Eduardo, > > On Tuesday 31 May 2016 03:45 AM, Eduardo Valentin wrote: > >Folks, > > > >This is V3 of a patch series to improve thermal core. The idea > >here is to reorganize the code and improve the way we > >handle sysfs entries. > > > >The change in behavior is that now, thermal zones with empty > >.type will not be allowed to be registered. Also, the way > >we handle scanf's return code is now checking for > >number of successful inputs. > > > >After this series, thermal core is split into the following files: > >- thermal_sysfs.c: contains the functions handling the sysfs nodes > >- thermal_helpers.c: groups functions that do not need to touch thermal > >core internal data structures, such as internal lists, and list locks. > >- thermal_core.c: functions to handle the lifecycle of the subsystem, > >its governors, cooling devices, thermal zone devices, and their > >interactions. > > > >I don't expect any impact on userspace. > > > > I applied the whole 48 patch series on top of mainline kernel. > > I see boot crash when i have thermal modules built in kernel for dra7/dra72 > boards. > > dra7 bootlog: http://pastebin.ubuntu.com/16859184/ I will be sending a v4 soon. I will also push to a branch.
[toc] | [prev] | [standalone]
Page 2 of 2 — ← Prev page 1 [2]
Back to top | Article view | linux.kernel
csiph-web