summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJayant Shekhar <jshekhar@codeaurora.org>2015-12-21 10:21:16 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:14:29 -0700
commitf63539528dee1f20a13e9a4bfbfeedea40927b85 (patch)
tree8b47c65cc0f11ea6374dbeb24e6766502816e450
parentf7bad5e06ae0f69a5a40dbe0d183b269b1fbde5c (diff)
msm: mdss: ensure rotator clocks on for entire rotator session
Rotator clock and BW votes are updated on each rotator request during same session. This is not required because rotator source and destination does not change during session. Ensure that rotator clocks are on throughout session such that extra overhead of rpm calls are avoided. Change-Id: I7a74aa2b8d8556b1d8ee4c52f871b9ebb149764a Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_rotator.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/video/fbdev/msm/mdss_rotator.c b/drivers/video/fbdev/msm/mdss_rotator.c
index d7fdafd21640..9a7569815a95 100644
--- a/drivers/video/fbdev/msm/mdss_rotator.c
+++ b/drivers/video/fbdev/msm/mdss_rotator.c
@@ -1841,7 +1841,6 @@ static void mdss_rotator_wq_handler(struct work_struct *work)
return;
}
- mdss_rotator_clk_ctrl(rot_mgr, true);
hw = mdss_rotator_get_hw_resource(entry->queue, entry);
if (!hw) {
pr_err("no hw for the queue\n");
@@ -1865,7 +1864,6 @@ static void mdss_rotator_wq_handler(struct work_struct *work)
get_hw_res_err:
mdss_rotator_signal_output(entry);
- mdss_rotator_clk_ctrl(rot_mgr, false);
mdss_rotator_release_entry(rot_mgr, entry);
atomic_dec(&request->pending_count);
}
@@ -1962,6 +1960,7 @@ static int mdss_rotator_open_session(struct mdss_rot_mgr *mgr,
goto resource_err;
}
+ mdss_rotator_clk_ctrl(rot_mgr, true);
ret = mdss_rotator_update_perf(mgr);
if (ret) {
pr_err("fail to open session, not enough clk/bw\n");
@@ -1974,6 +1973,7 @@ static int mdss_rotator_open_session(struct mdss_rot_mgr *mgr,
goto done;
perf_err:
+ mdss_rotator_clk_ctrl(rot_mgr, false);
mdss_rotator_resource_ctrl(mgr, false);
resource_err:
mutex_lock(&private->perf_lock);
@@ -2027,6 +2027,7 @@ static int mdss_rotator_close_session(struct mdss_rot_mgr *mgr,
devm_kfree(&mgr->pdev->dev, perf->work_distribution);
devm_kfree(&mgr->pdev->dev, perf);
mdss_rotator_update_perf(mgr);
+ mdss_rotator_clk_ctrl(rot_mgr, false);
done:
pr_debug("Closed session id:%u", id);
ATRACE_END(__func__);