Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08aec2f7 authored by Harsh Shah's avatar Harsh Shah Committed by Gerrit - the friendly Code Review server
Browse files

msm: camera: isp: Update active flag for RDI for start/stop AXI



RDI stream active flag was not set on start_stream. Hence stop_stream
was returning without wait for stop WM. On return the buffer is
released causing IOMMU page fault. Update the active flag correctly
on start and stop to fix this.

Change-Id: I3872e82df4458f4d30db4845301109f0ae9a9ab7
Signed-off-by: default avatarHarsh Shah <harshs@codeaurora.org>
parent 4c951261
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -1228,8 +1228,8 @@ static int msm_isp_buf_mgr_debug(struct msm_isp_buf_mgr *buf_mgr)
{
	struct msm_isp_buffer *bufs = NULL;
	uint32_t i = 0, j = 0, k = 0, rc = 0;
	char *print_buf = NULL, temp_buf[512];
	uint32_t start_addr = 0, end_addr = 0, print_buf_size = 2500;
	char *print_buf = NULL, temp_buf[100];
	uint32_t start_addr = 0, end_addr = 0, print_buf_size = 2000;
	if (!buf_mgr) {
		pr_err_ratelimited("%s: %d] NULL buf_mgr\n",
			__func__, __LINE__);
@@ -1242,6 +1242,10 @@ static int msm_isp_buf_mgr_debug(struct msm_isp_buf_mgr *buf_mgr)
	}
	snprintf(print_buf, print_buf_size, "%s\n", __func__);
	for (i = 0; i < BUF_MGR_NUM_BUF_Q; i++) {
		if (i % 2 == 0 && i > 0) {
			pr_err("%s\n", print_buf);
			print_buf[0] = 0;
		}
		if (buf_mgr->bufq[i].bufq_handle != 0) {
			snprintf(temp_buf, sizeof(temp_buf),
				"handle %x stream %x num_bufs %d\n",
@@ -1252,7 +1256,7 @@ static int msm_isp_buf_mgr_debug(struct msm_isp_buf_mgr *buf_mgr)
			for (j = 0; j < buf_mgr->bufq[i].num_bufs; j++) {
				bufs = &buf_mgr->bufq[i].bufs[j];
				if (!bufs) {
					break;
					continue;
				}
				for (k = 0; k < bufs->num_planes; k++) {
					start_addr = bufs->
+1 −1
Original line number Diff line number Diff line
@@ -1611,7 +1611,7 @@ static void msm_vfe40_read_wm_ping_pong_addr(
	struct vfe_device *vfe_dev)
{
	msm_camera_io_dump_2(vfe_dev->vfe_base +
		(VFE40_WM_BASE(0) & 0xFFFFFFF0), 0x100);
		(VFE40_WM_BASE(0) & 0xFFFFFFF0), 0x200);
}

static void msm_vfe40_update_ping_pong_addr(
+1 −1
Original line number Diff line number Diff line
@@ -1368,7 +1368,7 @@ static void msm_vfe44_read_wm_ping_pong_addr(
	struct vfe_device *vfe_dev)
{
	msm_camera_io_dump_2(vfe_dev->vfe_base +
		(VFE44_WM_BASE(0) & 0xFFFFFFF0), 0x100);
		(VFE44_WM_BASE(0) & 0xFFFFFFF0), 0x200);
}

static void msm_vfe44_update_ping_pong_addr(
+1 −1
Original line number Diff line number Diff line
@@ -1429,7 +1429,7 @@ static void msm_vfe46_read_wm_ping_pong_addr(
	struct vfe_device *vfe_dev)
{
	msm_camera_io_dump_2(vfe_dev->vfe_base +
		(VFE46_WM_BASE(0) & 0xFFFFFFF0), 0x100);
		(VFE46_WM_BASE(0) & 0xFFFFFFF0), 0x200);
}

static void msm_vfe46_update_ping_pong_addr(
+1 −1
Original line number Diff line number Diff line
@@ -1576,7 +1576,7 @@ static void msm_vfe47_read_wm_ping_pong_addr(
	struct vfe_device *vfe_dev)
{
	msm_camera_io_dump_2(vfe_dev->vfe_base +
		(VFE47_WM_BASE(0) & 0xFFFFFFF0), 0x100);
		(VFE47_WM_BASE(0) & 0xFFFFFFF0), 0x200);
}

static void msm_vfe47_update_ping_pong_addr(
Loading