summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShubhraprakash Das <sadas@codeaurora.org>2016-12-19 14:52:16 -0800
committerShubhraprakash Das <sadas@codeaurora.org>2017-02-21 17:36:42 -0800
commitbfa2ff657cf73af692a151f324445f80c9765893 (patch)
tree7ac2a2a96124a691ca7088b231605598bd4c1e29
parent3294e91ec6ee553a754fe6d7f6b03b60d86dcc2c (diff)
msm: camera: isp: Do not wait w/o interruptible
While waiting for h/w to reset there is no need to hold the CPU while waiting, so allow interrupts during wait. CRs-Fixed: 1104786 Change-Id: Iebdf18d58ed959a152276e57d583c50868806a33 Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_isp47.c4
-rw-r--r--drivers/media/platform/msm/camera_v2/ispif/msm_ispif.c10
2 files changed, 7 insertions, 7 deletions
diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp47.c b/drivers/media/platform/msm/camera_v2/isp/msm_isp47.c
index c7f3b97c83c9..efad8b740a3b 100644
--- a/drivers/media/platform/msm/camera_v2/isp/msm_isp47.c
+++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp47.c
@@ -763,7 +763,7 @@ long msm_vfe47_reset_hardware(struct vfe_device *vfe_dev,
}
if (blocking_call) {
- rc = wait_for_completion_timeout(
+ rc = wait_for_completion_interruptible_timeout(
&vfe_dev->reset_complete, msecs_to_jiffies(100));
if (rc <= 0) {
pr_err("%s:%d failed: reset timeout\n", __func__,
@@ -1930,7 +1930,7 @@ int msm_vfe47_axi_halt(struct vfe_device *vfe_dev,
init_completion(&vfe_dev->halt_complete);
/* Halt AXI Bus Bridge */
msm_camera_io_w_mb(0x1, vfe_dev->vfe_base + 0x400);
- rc = wait_for_completion_timeout(
+ rc = wait_for_completion_interruptible_timeout(
&vfe_dev->halt_complete, msecs_to_jiffies(500));
if (rc <= 0)
pr_err("%s:VFE%d halt timeout rc=%d\n", __func__,
diff --git a/drivers/media/platform/msm/camera_v2/ispif/msm_ispif.c b/drivers/media/platform/msm/camera_v2/ispif/msm_ispif.c
index 5264bba57c8d..5aa8a59128a8 100644
--- a/drivers/media/platform/msm/camera_v2/ispif/msm_ispif.c
+++ b/drivers/media/platform/msm/camera_v2/ispif/msm_ispif.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -443,7 +443,7 @@ static int msm_ispif_reset_hw(struct ispif_device *ispif)
msm_camera_io_w(ISPIF_RST_CMD_MASK,
ispif->base + ISPIF_RST_CMD_ADDR);
- timeout = wait_for_completion_timeout(
+ timeout = wait_for_completion_interruptible_timeout(
&ispif->reset_complete[VFE0], msecs_to_jiffies(500));
CDBG("%s: VFE0 done\n", __func__);
@@ -457,7 +457,7 @@ static int msm_ispif_reset_hw(struct ispif_device *ispif)
atomic_set(&ispif->reset_trig[VFE1], 1);
msm_camera_io_w(ISPIF_RST_CMD_1_MASK,
ispif->base + ISPIF_RST_CMD_1_ADDR);
- timeout = wait_for_completion_timeout(
+ timeout = wait_for_completion_interruptible_timeout(
&ispif->reset_complete[VFE1],
msecs_to_jiffies(500));
CDBG("%s: VFE1 done\n", __func__);
@@ -1120,7 +1120,7 @@ static int msm_ispif_restart_frame_boundary(struct ispif_device *ispif,
/* initiate reset of ISPIF */
msm_camera_io_w(ISPIF_RST_CMD_MASK_RESTART,
ispif->base + ISPIF_RST_CMD_ADDR);
- timeout = wait_for_completion_timeout(
+ timeout = wait_for_completion_interruptible_timeout(
&ispif->reset_complete[VFE0], msecs_to_jiffies(500));
if (timeout <= 0) {
pr_err("%s: VFE0 reset wait timeout\n", __func__);
@@ -1133,7 +1133,7 @@ static int msm_ispif_restart_frame_boundary(struct ispif_device *ispif,
atomic_set(&ispif->reset_trig[VFE1], 1);
msm_camera_io_w(ISPIF_RST_CMD_1_MASK_RESTART,
ispif->base + ISPIF_RST_CMD_1_ADDR);
- timeout = wait_for_completion_timeout(
+ timeout = wait_for_completion_interruptible_timeout(
&ispif->reset_complete[VFE1],
msecs_to_jiffies(500));
if (timeout <= 0) {