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: 2594541 Change-Id: I87adbab25b84d74162a6a8ce2db1412a6d9058d0 Signed-off-by: Rishabh Jain <risjai@codeaurora.org> Signed-off-by: Trishansh Bhardwaj <tbhardwa@codeaurora.org>
Tento commit je obsažen v:

odevzdal
Karthik Jayakumar

rodič
a46b9bff7a
revize
41533c5eb2
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
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;
|
||||
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 +=
|
||||
|
@@ -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:
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele