From a55c8f34e2d6709e559dc5240de2365a0cc32bdf Mon Sep 17 00:00:00 2001 From: Shridhar Rasal Date: Sat, 23 Jan 2016 15:37:03 +0530 Subject: [PATCH] devfreq: wmark: active: init average target freq - initializes average target freq parameter of active watermark governor parameter to current frequency set during start and resume from suspend. Bug 200165367 Change-Id: I56b43ea371c77e95285944433615660400da94ea Reviewed-on: http://git-master/r/936632 Signed-off-by: Shridhar Rasal Reviewed-on: http://git-master/r/1160862 (cherry picked from linux-4.9 commit 331b1f92e097209b3afd9ab92fe5337152c604e2) Reviewed-on: https://git-master.nvidia.com/r/1770143 Reviewed-by: Mikko Perttunen GVS: Gerrit_Virtual_Submit Reviewed-by: Timo Alho Tested-by: Timo Alho Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/devfreq/governor_wmark_active.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/devfreq/governor_wmark_active.c b/drivers/devfreq/governor_wmark_active.c index f96349d5..48433e66 100644 --- a/drivers/devfreq/governor_wmark_active.c +++ b/drivers/devfreq/governor_wmark_active.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2014-2016, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -278,6 +278,7 @@ static int devfreq_watermark_start(struct devfreq *df) static int devfreq_watermark_event_handler(struct devfreq *df, unsigned int event, void *wmark_type) { + struct wmark_gov_info *wmarkinfo; int ret = 0; switch (event) { @@ -292,6 +293,10 @@ static int devfreq_watermark_event_handler(struct devfreq *df, if (ret < 0) break; + /* initialize average target freq */ + wmarkinfo = df->data; + wmarkinfo->average_target_freq = dev_stat.current_frequency; + update_watermarks(df, dev_stat.current_frequency, dev_stat.current_frequency); break; @@ -309,6 +314,10 @@ static int devfreq_watermark_event_handler(struct devfreq *df, if (ret < 0) break; + /* reset average target freq to current freq */ + wmarkinfo = df->data; + wmarkinfo->average_target_freq = dev_stat.current_frequency; + update_watermarks(df, dev_stat.current_frequency, dev_stat.current_frequency); devfreq_monitor_resume(df);