// SPDX-License-Identifier: GPL-2.0-only /* * gov_bang_bang.c - A simple thermal throttling governor using hysteresis * * Copyright (C) 2014 Peter Kaestle <[email protected]> * * Based on step_wise.c with following Copyrights: * Copyright (C) 2012 Intel Corp * Copyright (C) 2012 Durgadoss R <[email protected]> */ #include <linux/thermal.h> #include "thermal_core.h" /** * bang_bang_control - controls devices associated with the given zone * @tz: thermal_zone_device * @trip: the trip point * @crossed_up: whether or not the trip has been crossed on the way up * * Regulation Logic: a two point regulation, deliver cooling state depending * on the previous state shown in this diagram: * * Fan: OFF ON * * | * | * trip_temp: +---->+ * | | ^ * | | | * | | Temperature * (trip_temp - hyst): +<----+ * | * | * | * * * If the fan is not running and temperature exceeds trip_temp, the fan * gets turned on. * * In case the fan is running, temperature must fall below * (trip_temp - hyst) so that the fan gets turned off again. * */ static void bang_bang_control(struct thermal_zone_device *tz, const struct thermal_trip *trip, bool crossed_up) { … } static struct thermal_governor thermal_gov_bang_bang = …; THERMAL_GOVERNOR_DECLARE(…) …;