Commit 276f1ede authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

thermal: gov_fair_share: Rearrange get_trip_level()



Make get_trip_level() use for_each_trip() to iterate over trip points
and make it call thermal_zone_trip_id() to obtain the integer ID of a
given trip point so as to avoid relying on the knowledge of struct
thermal_zone_device internals.

The general functionality is not expected to be changed.

This change causes the governor to use trip pointers instead of trip
indices everywhere except for the fair_share_throttle() second argument
that will be modified subsequently along with the definition of the
governor .throttle() callback.

Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
parent 234ed6f5
Loading
Loading
Loading
Loading
+14 −16
Original line number Diff line number Diff line
@@ -15,29 +15,27 @@

#include "thermal_core.h"

/**
 * get_trip_level: - obtains the current trip level for a zone
 * @tz:		thermal zone device
 */
static int get_trip_level(struct thermal_zone_device *tz)
{
	struct thermal_trip trip;
	int count;
	const struct thermal_trip *trip, *level_trip = NULL;
	int trip_level;

	for (count = 0; count < tz->num_trips; count++) {
		__thermal_zone_get_trip(tz, count, &trip);
		if (tz->temperature < trip.temperature)
	for_each_trip(tz, trip) {
		if (trip->temperature >= tz->temperature)
			break;

		level_trip = trip;
	}

	/*
	 * count > 0 only if temperature is greater than first trip
	 * point, in which case, trip_point = count - 1
	 */
	if (count > 0)
		trace_thermal_zone_trip(tz, count - 1, trip.type);
	/*  Bail out if the temperature is not greater than any trips. */
	if (!level_trip)
		return 0;

	trip_level = thermal_zone_trip_id(tz, level_trip);

	trace_thermal_zone_trip(tz, trip_level, level_trip->type);

	return count;
	return trip_level;
}

static long get_target_state(struct thermal_zone_device *tz,