On 13-12-2013 12:38, Lukasz Majewski wrote: > This patch provides auto disable/enable operation for boost. It uses already > present thermal infrastructure to provide boost hysteresis. > The TMU data has been modified to work properly with or without boost. > > Signed-off-by: Lukasz Majewski > Signed-off-by: Myungjoo Ham Acked-by: Eduardo Valentin Looks better to me now. You might consider refactoring this driver to be frequency independent, if possible. But that is a different subject other than this patch. > > --- > Changes for v11: > - Use only one thermal data set > - Adjust Exynos4412 thermal data to work with or without BOOST > > Changes for v10: > - Remove boost related code from thermal_core.c > - Use already present thermal infrastructure to provide thermal hysteresis > - Introduce special set of TMU data for BOOST > > Changes for v9: > - None > > Changes for v8: > - Move cpufreq_boost_* stub functions definition (needed when cpufreq > is not compiled in) to cpufreq.h at cpufreq core support commit > > Changes for v7: > - None > > Changes for v6: > - Disable boost only when supported and enabled > - Protect boost related thermal_zone_device struct fields with mutex > - Evaluate temperature trend during boost enable decision > - Create separate methods to handle boost enable/disable > (thermal_boost_{enable|disable}) operations > - Boost is disabled at any trip point passage (not only the non critical one) > - Add stub definitions for cpufreq boost functions used when > CONFIG_CPU_FREQ is NOT defined. > > Changes for v5: > - Move boost disable code from cpu_cooling.c to thermal_core.c > (to handle_non_critical_trips) > - Extent struct thermal_zone_device by adding overheated bool flag > - Implement auto enable of boost after device cools down > - Introduce boost_polling flag, which indicates if thermal uses it's predefined > pool delay or has woken up thermal workqueue only to wait until device > cools down. > > Changes for v4: > - New patch > > drivers/thermal/samsung/exynos_tmu_data.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/thermal/samsung/exynos_tmu_data.c b/drivers/thermal/samsung/exynos_tmu_data.c > index 073c292..476b768 100644 > --- a/drivers/thermal/samsung/exynos_tmu_data.c > +++ b/drivers/thermal/samsung/exynos_tmu_data.c > @@ -131,8 +131,8 @@ static const struct exynos_tmu_registers exynos4412_tmu_registers = { > > #define EXYNOS4412_TMU_DATA \ > .threshold_falling = 10, \ > - .trigger_levels[0] = 85, \ > - .trigger_levels[1] = 103, \ > + .trigger_levels[0] = 70, \ > + .trigger_levels[1] = 95, \ > .trigger_levels[2] = 110, \ > .trigger_levels[3] = 120, \ > .trigger_enable[0] = true, \ > @@ -155,12 +155,12 @@ static const struct exynos_tmu_registers exynos4412_tmu_registers = { > .second_point_trim = 85, \ > .default_temp_offset = 50, \ > .freq_tab[0] = { \ > - .freq_clip_max = 800 * 1000, \ > - .temp_level = 85, \ > + .freq_clip_max = 1400 * 1000, \ > + .temp_level = 70, \ > }, \ > .freq_tab[1] = { \ > - .freq_clip_max = 200 * 1000, \ > - .temp_level = 103, \ > + .freq_clip_max = 400 * 1000, \ > + .temp_level = 95, \ > }, \ > .freq_tab_count = 2, \ > .registers = &exynos4412_tmu_registers, \ > -- You have got to be excited about what you are doing. (L. Lamport) Eduardo Valentin