mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 02:50:43 +00:00
thermal: core: move the trip attrs to the tz sysfs I/F section
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> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
This commit is contained in:
parent
3bafb5e2a6
commit
0a9de81907
1 changed files with 108 additions and 108 deletions
|
@ -1239,6 +1239,114 @@ static const struct attribute_group *thermal_zone_attribute_groups[] = {
|
||||||
NULL
|
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 */
|
/* sys I/F for cooling device */
|
||||||
#define to_cooling_device(_dev) \
|
#define to_cooling_device(_dev) \
|
||||||
container_of(_dev, struct thermal_cooling_device, device)
|
container_of(_dev, struct thermal_cooling_device, device)
|
||||||
|
@ -1799,114 +1907,6 @@ void thermal_notify_framework(struct thermal_zone_device *tz, int trip)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(thermal_notify_framework);
|
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
|
* thermal_zone_device_register() - register a new thermal zone device
|
||||||
* @type: the thermal zone device type
|
* @type: the thermal zone device type
|
||||||
|
|
Loading…
Reference in a new issue