Camera:fix cdm timeout issue in camera concurrency

For the firest request, The cdm is timeout because the completion
is not return.

Issue-Id: task82581

Change-Id: Ibb98b53e4d7eb0583e5ed2891e2af927c0de4336
This commit is contained in:
wangxy0702
2019-06-03 21:05:43 +08:00
committed by Zhang Lei
parent a8143e3fcc
commit 3666be0923
2 changed files with 15 additions and 2 deletions

View File

@@ -110,7 +110,7 @@ struct cam_cdm_bl_cb_request_entry *cam_cdm_find_request_by_bl_tag(
if (node->bl_tag == tag)
return node;
}
CAM_ERR(CAM_CDM, "Could not find the bl request for tag=%x", tag);
CAM_DBG(CAM_CDM, "Could not find the bl request for tag=%x", tag);
return NULL;
}

View File

@@ -342,7 +342,7 @@ bool cam_hw_cdm_commit_bl_write(struct cam_hw_info *cdm_hw)
int cam_hw_cdm_submit_gen_irq(struct cam_hw_info *cdm_hw,
struct cam_cdm_hw_intf_cmd_submit_bl *req)
{
struct cam_cdm_bl_cb_request_entry *node;
struct cam_cdm_bl_cb_request_entry *node = NULL;
struct cam_cdm *core = (struct cam_cdm *)cdm_hw->core_info;
uint32_t len;
int rc;
@@ -354,6 +354,19 @@ int cam_hw_cdm_submit_gen_irq(struct cam_hw_info *cdm_hw,
}
CAM_DBG(CAM_CDM, "CDM write BL last cmd tag=%x total=%d cookie=%d",
core->bl_tag, req->data->cmd_arrary_count, req->data->cookie);
// remove the last node which is the same core->bl_tag
node = cam_cdm_find_request_by_bl_tag(core->bl_tag,
&core->bl_request_list);
if (node) {
CAM_ERR(CAM_CDM, "cdm test remove bl tag %d old ctx %p"
" cookie %d new ctx %p cookie %d",
core->bl_tag, node->userdata, node->cookie,
req->data->userdata, req->data->cookie);
list_del_init(&node->entry);
kfree(node);
node = NULL;
}
node = kzalloc(sizeof(struct cam_cdm_bl_cb_request_entry),
GFP_KERNEL);
if (!node) {