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

Commit fefda431 authored by Rishabh Jain's avatar Rishabh Jain Committed by Ravikishore Pampana
Browse files

msm: camera: ope: Corrected batch mode and stripe for ope



Corrected the striping creation for non real time device.
Disabled the ope stripe base bus. Corrected the batch mode
creation for ope bus read.

CRs-Fixed: 2520602
Change-Id: I87adbab25b84d74162a6a8ce2db1412a6d9058d0
Signed-off-by: default avatarRishabh Jain <risjai@codeaurora.org>
parent 5ee1d6bd
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1504,6 +1504,8 @@ static int cam_ope_mgr_process_cmd_io_buf_req(struct cam_ope_hw_mgr *hw_mgr,
					stripe_info->pack_format = pack_format;
					stripe_info->unpack_format =
						unpack_format;
					stripe_info->disable_bus =
						in_stripe_info->disable_bus;
					cam_ope_mgr_print_stripe_info(i, j,
						k, l, stripe_info, iova_addr);
				}
+9 −5
Original line number Diff line number Diff line
@@ -346,11 +346,15 @@ static int cam_ope_bus_rd_prepare(struct ope_hw *ope_hw_info,

	header_size =
	cdm_ops->cdm_get_cmd_header_size(CAM_CDM_CMD_REG_RANDOM);
	for (i = 0; i < ope_request->num_batch; i++) {
		io_port_cdm =
			&bus_rd_ctx->io_port_cdm_batch.io_port_cdm[i];
		io_port_cdm->go_cmd_addr = kmd_buf;
		io_port_cdm->go_cmd_len =
			sizeof(temp) * (count + header_size);
		io_port_cdm->go_cmd_offset =
			prepare->kmd_buf_offset;
	}
	kmd_buf = cdm_ops->cdm_write_regrandom(
		kmd_buf, count/2, temp_reg);
	prepare->kmd_buf_offset +=
+10 −13
Original line number Diff line number Diff line
@@ -772,7 +772,7 @@ static uint32_t *ope_create_frame_cmd(struct cam_ope_hw_mgr *hw_mgr,
					hw_mgr->iommu_hdl);
				return NULL;
			}
			iova_addr = iova_addr + frm_proc->cmd_buf[j][i].offset;
			iova_addr = iova_addr + frm_proc->cmd_buf[i][j].offset;

			rc = cam_mem_get_cpu_buf(
				frm_proc->cmd_buf[i][j].mem_handle,
@@ -1123,7 +1123,7 @@ static uint32_t *ope_create_stripes_nrt(struct cam_ope_hw_mgr *hw_mgr,
	struct cam_ope_ctx *ctx_data, uint32_t req_idx,
	uint32_t *kmd_buf,
	struct cam_ope_dev_prepare_req *ope_dev_prepare_req,
	uint32_t kmd_buf_offset)
	uint32_t *kmd_buf_offset, uint32_t **cdm_kmd_start_addr)
{
	int i, j;
	struct cam_ope_request *ope_request;
@@ -1133,13 +1133,10 @@ static uint32_t *ope_create_stripes_nrt(struct cam_ope_hw_mgr *hw_mgr,
	uint32_t stripe_idx = 0;
	struct cam_cdm_utils_ops *cdm_ops;
	uint32_t len;
	uint32_t *cdm_kmd_start_addr;
	int num_nrt_stripes, num_arb;

	frm_proc = ope_dev_prepare_req->frame_process;
	ope_request = ctx_data->req_list[req_idx];
	cdm_kmd_start_addr = (uint32_t *)ope_request->ope_kmd_buf.cpu_addr +
		(kmd_buf_offset / sizeof(len));
	num_nrt_stripes = ctx_data->ope_acquire.nrt_stripes_for_arb;
	num_arb = ope_request->num_stripes[0] /
		ctx_data->ope_acquire.nrt_stripes_for_arb;
@@ -1162,17 +1159,17 @@ static uint32_t *ope_create_stripes_nrt(struct cam_ope_hw_mgr *hw_mgr,
				kmd_buf = cdm_ops->cdm_write_wait_comp_event(
					kmd_buf,
					OPE_WAIT_COMP_IDLE, 0x0);
				len = (kmd_buf - cdm_kmd_start_addr) *
				len = (kmd_buf - *cdm_kmd_start_addr) *
					sizeof(uint32_t);
				cam_ope_dev_prepare_cdm_request(
					ope_dev_prepare_req->hw_mgr,
					ope_dev_prepare_req->prepare_args,
					ope_dev_prepare_req->ctx_data,
					ope_dev_prepare_req->req_idx,
					kmd_buf_offset, ope_dev_prepare_req,
					*kmd_buf_offset, ope_dev_prepare_req,
					len, true);
				cdm_kmd_start_addr = kmd_buf;
				kmd_buf_offset += len;
				*cdm_kmd_start_addr = kmd_buf;
				*kmd_buf_offset += len;
			}
			/* cmd buffer stripes */
			kmd_buf = ope_create_stripe_cmd(hw_mgr, ctx_data,
@@ -1317,7 +1314,7 @@ static int cam_ope_dev_create_kmd_buf_nrt(struct cam_ope_hw_mgr *hw_mgr,

	/* Stripes */
	kmd_buf = ope_create_stripes_nrt(hw_mgr, ctx_data, req_idx, kmd_buf,
		ope_dev_prepare_req, kmd_buf_offset);
		ope_dev_prepare_req, &kmd_buf_offset, &cdm_kmd_start_addr);
	if (!kmd_buf) {
		rc = -EINVAL;
		goto end;
@@ -1358,7 +1355,7 @@ static int cam_ope_dev_create_kmd_buf_batch(struct cam_ope_hw_mgr *hw_mgr,
	frm_proc = ope_dev_prepare_req->frame_process;
	ope_request = ctx_data->req_list[req_idx];
	kmd_buf = (uint32_t *)ope_request->ope_kmd_buf.cpu_addr +
		kmd_buf_offset;
		(kmd_buf_offset / sizeof(len));
	cdm_kmd_start_addr = kmd_buf;
	cdm_ops = ctx_data->ope_cdm.cdm_ops;

@@ -1436,11 +1433,11 @@ static int cam_ope_dev_create_kmd_buf_batch(struct cam_ope_hw_mgr *hw_mgr,
			OPE_WAIT_COMP_IDLE, 0x0);

	/* prepare CDM submit packet */
	len = (cdm_kmd_start_addr - kmd_buf) * sizeof(uint32_t);
	len = (kmd_buf - cdm_kmd_start_addr) * sizeof(uint32_t);
	cam_ope_dev_prepare_cdm_request(ope_dev_prepare_req->hw_mgr,
		ope_dev_prepare_req->prepare_args,
		ope_dev_prepare_req->ctx_data, ope_dev_prepare_req->req_idx,
		ope_dev_prepare_req->kmd_buf_offset, ope_dev_prepare_req,
		kmd_buf_offset, ope_dev_prepare_req,
		len, false);

end: