mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-08 15:04:45 +00:00
thermal: intel: intel_soc_dts_iosf: Use struct thermal_trip
Because the number of trip points in each thermal zone and their types are known to intel_soc_dts_iosf_init() prior to the registration of the thermal zones, make it create an array of struct thermal_trip entries in each struct intel_soc_dts_sensor_entry object and make add_dts_thermal_zone() use thermal_zone_device_register_with_trips() for thermal zone registration and pass that array as its second argument. Drop the sys_get_trip_temp() and sys_get_trip_type() callback functions along with the respective callback pointers in tzone_ops, because they are not necessary any more. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
This commit is contained in:
parent
02a49aacef
commit
4effd28e61
@ -40,32 +40,6 @@
|
||||
/* Mask for two trips in status bits */
|
||||
#define SOC_DTS_TRIP_MASK 0x03
|
||||
|
||||
static int sys_get_trip_temp(struct thermal_zone_device *tzd, int trip,
|
||||
int *temp)
|
||||
{
|
||||
int status;
|
||||
u32 out;
|
||||
struct intel_soc_dts_sensor_entry *dts;
|
||||
struct intel_soc_dts_sensors *sensors;
|
||||
|
||||
dts = thermal_zone_device_priv(tzd);
|
||||
sensors = dts->sensors;
|
||||
mutex_lock(&sensors->dts_update_lock);
|
||||
status = iosf_mbi_read(BT_MBI_UNIT_PMC, MBI_REG_READ,
|
||||
SOC_DTS_OFFSET_PTPS, &out);
|
||||
mutex_unlock(&sensors->dts_update_lock);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
out = (out >> (trip * 8)) & SOC_DTS_TJMAX_ENCODING;
|
||||
if (!out)
|
||||
*temp = 0;
|
||||
else
|
||||
*temp = sensors->tj_max - out * 1000;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int update_trip_temp(struct intel_soc_dts_sensors *sensors,
|
||||
int thres_index, int temp)
|
||||
{
|
||||
@ -165,7 +139,8 @@ static int configure_trip(struct intel_soc_dts_sensor_entry *dts,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
dts->trip_types[thres_index] = trip_type;
|
||||
dts->trips[thres_index].temperature = temp;
|
||||
dts->trips[thres_index].type = trip_type;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -187,16 +162,6 @@ static int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip,
|
||||
return status;
|
||||
}
|
||||
|
||||
static int sys_get_trip_type(struct thermal_zone_device *tzd,
|
||||
int trip, enum thermal_trip_type *type)
|
||||
{
|
||||
struct intel_soc_dts_sensor_entry *dts = thermal_zone_device_priv(tzd);
|
||||
|
||||
*type = dts->trip_types[trip];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sys_get_curr_temp(struct thermal_zone_device *tzd,
|
||||
int *temp)
|
||||
{
|
||||
@ -221,8 +186,6 @@ static int sys_get_curr_temp(struct thermal_zone_device *tzd,
|
||||
|
||||
static struct thermal_zone_device_ops tzone_ops = {
|
||||
.get_temp = sys_get_curr_temp,
|
||||
.get_trip_temp = sys_get_trip_temp,
|
||||
.get_trip_type = sys_get_trip_type,
|
||||
.set_trip_temp = sys_set_trip_temp,
|
||||
};
|
||||
|
||||
@ -293,11 +256,11 @@ static int add_dts_thermal_zone(int id, struct intel_soc_dts_sensor_entry *dts,
|
||||
}
|
||||
dts->trip_mask = trip_mask;
|
||||
snprintf(name, sizeof(name), "soc_dts%d", id);
|
||||
dts->tzone = thermal_zone_device_register(name,
|
||||
SOC_MAX_DTS_TRIPS,
|
||||
trip_mask,
|
||||
dts, &tzone_ops,
|
||||
NULL, 0, 0);
|
||||
dts->tzone = thermal_zone_device_register_with_trips(name, dts->trips,
|
||||
SOC_MAX_DTS_TRIPS,
|
||||
trip_mask,
|
||||
dts, &tzone_ops,
|
||||
NULL, 0, 0);
|
||||
if (IS_ERR(dts->tzone)) {
|
||||
ret = PTR_ERR(dts->tzone);
|
||||
goto err_ret;
|
||||
|
@ -29,7 +29,7 @@ struct intel_soc_dts_sensor_entry {
|
||||
int id;
|
||||
u32 store_status;
|
||||
u32 trip_mask;
|
||||
enum thermal_trip_type trip_types[SOC_MAX_DTS_TRIPS];
|
||||
struct thermal_trip trips[SOC_MAX_DTS_TRIPS];
|
||||
struct thermal_zone_device *tzone;
|
||||
struct intel_soc_dts_sensors *sensors;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user