aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-09-13 05:02:41 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-09-13 05:02:43 -0700
commit3bcf35f91e68e33cc706e1e3e148afe9f0ce5a5a (patch)
tree5dc7ca86a9944d31f0cae18a6388b538e87b04d8
parentf22a43dcbb8bc955091af893c4b241eac25d60ec (diff)
parentd688857dba287d5dee2603e7e34d8a1387ade1d4 (diff)
Merge "ARM: qcom: disable power collapse when camera is working" into LE.UM.2.3.1.r1.3LE.UM.2.3.1.r1-02900-8x09.0
-rw-r--r--drivers/media/platform/msm/camera_v2/camera/camera.c5
-rw-r--r--drivers/media/platform/msm/camera_v2/msm.c9
2 files changed, 10 insertions, 4 deletions
diff --git a/drivers/media/platform/msm/camera_v2/camera/camera.c b/drivers/media/platform/msm/camera_v2/camera/camera.c
index 7af8a690ac53..1da62e23e098 100644
--- a/drivers/media/platform/msm/camera_v2/camera/camera.c
+++ b/drivers/media/platform/msm/camera_v2/camera/camera.c
@@ -688,8 +688,6 @@ static int camera_v4l2_open(struct file *filep)
if (rc < 0)
goto post_fail;
}
- /* Enable power collapse latency */
- msm_pm_qos_update_request(CAMERA_ENABLE_PC_LATENCY);
} else {
rc = msm_create_command_ack_q(pvdev->vdev->num,
find_first_zero_bit((const unsigned long *)&opn_idx,
@@ -713,6 +711,7 @@ post_fail:
command_ack_q_fail:
msm_destroy_session(pvdev->vdev->num);
session_fail:
+ msm_pm_qos_update_request(CAMERA_ENABLE_PC_LATENCY);
pm_relax(&pvdev->vdev->dev);
stream_fail:
camera_v4l2_vb2_q_release(filep);
@@ -786,6 +785,8 @@ static int camera_v4l2_close(struct file *filep)
camera_v4l2_vb2_q_release(filep);
msm_destroy_session(pvdev->vdev->num);
+ /* Enable power collapse latency */
+ msm_pm_qos_update_request(CAMERA_ENABLE_PC_LATENCY);
pm_relax(&pvdev->vdev->dev);
} else {
msm_delete_command_ack_q(pvdev->vdev->num,
diff --git a/drivers/media/platform/msm/camera_v2/msm.c b/drivers/media/platform/msm/camera_v2/msm.c
index d52d8bc4b96a..9b49b68702dd 100644
--- a/drivers/media/platform/msm/camera_v2/msm.c
+++ b/drivers/media/platform/msm/camera_v2/msm.c
@@ -238,8 +238,13 @@ static void msm_pm_qos_remove_request(void)
void msm_pm_qos_update_request(int val)
{
- pr_info("%s: update request %d", __func__, val);
- pm_qos_update_request(&msm_v4l2_pm_qos_request, val);
+ /* update just before creating the first session,
+ * or after destroying the last session.
+ */
+ if (msm_session_q->len == 0) {
+ pr_info("%s: update request %d", __func__, val);
+ pm_qos_update_request(&msm_v4l2_pm_qos_request, val);
+ }
}
struct msm_session *msm_session_find(unsigned int session_id)