summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbdulla Anam <abdullahanam@codeaurora.org>2016-06-09 13:48:01 +0530
committerKyle Yan <kyan@codeaurora.org>2016-06-29 15:01:53 -0700
commita0605c537e7d114081dd726fef625840df517812 (patch)
treecf3e58fdd66d26b7d63510343462f3b361e8da3f
parent9a3382024f60947b407d01fd0100faca503f5bee (diff)
msm: vidc: ensure venus is in power on before scaling clocks
It is to be ensured that venus is in power on state before scaling clocks. When venus goes to power collapse, a resume can happen either when driver writes some command to the command queue or any response comes from firmware. So when client requests a particular perf_level, venus is not resumed and scale clocks is called. CRs-Fixed: 1000809 Change-Id: I2ac46c481065ada2b62a5eb248fbdf18f2b1a91f Signed-off-by: Abdulla Anam <abdullahanam@codeaurora.org>
-rw-r--r--drivers/media/platform/msm/vidc/venus_hfi.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/media/platform/msm/vidc/venus_hfi.c b/drivers/media/platform/msm/vidc/venus_hfi.c
index fada1490dcfe..5525e35a029f 100644
--- a/drivers/media/platform/msm/vidc/venus_hfi.c
+++ b/drivers/media/platform/msm/vidc/venus_hfi.c
@@ -1531,9 +1531,16 @@ static int venus_hfi_scale_clocks(void *dev, int load,
}
mutex_lock(&device->lock);
+
+ if (__resume(device)) {
+ dprintk(VIDC_ERR, "Resume from power collapse failed\n");
+ rc = -ENODEV;
+ goto exit;
+ }
+
rc = __scale_clocks(device, load, data, instant_bitrate);
+exit:
mutex_unlock(&device->lock);
-
return rc;
}