mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 06:09:23 -04:00
Merge "msm: camera: tfe: Add support last consumed address for tfe" into camera-kernel.lnx.4.0
This commit is contained in:
commit
e27a2769e6
4 changed files with 19 additions and 27 deletions
|
|
@ -4534,6 +4534,9 @@ static int __cam_isp_ctx_acquire_hw_v1(struct cam_context *ctx,
|
|||
goto free_res;
|
||||
}
|
||||
|
||||
ctx_isp->support_consumed_addr =
|
||||
param.support_consumed_addr;
|
||||
|
||||
/* Query the context has rdi only resource */
|
||||
hw_cmd_args.ctxt_to_hw_map = param.ctxt_to_hw_map;
|
||||
hw_cmd_args.cmd_type = CAM_HW_MGR_CMD_INTERNAL;
|
||||
|
|
|
|||
|
|
@ -1775,32 +1775,6 @@ void cam_tfe_cam_cdm_callback(uint32_t handle, void *userdata,
|
|||
}
|
||||
}
|
||||
|
||||
static bool cam_tfe_mgr_is_consumed_addr_supported(
|
||||
struct cam_tfe_hw_mgr_ctx *ctx)
|
||||
{
|
||||
bool support_consumed_addr = false;
|
||||
struct cam_isp_hw_mgr_res *isp_hw_res = NULL;
|
||||
struct cam_hw_intf *hw_intf = NULL;
|
||||
|
||||
isp_hw_res = &ctx->res_list_tfe_out[0];
|
||||
|
||||
if (!isp_hw_res || !isp_hw_res->hw_res[0]) {
|
||||
CAM_ERR(CAM_ISP, "Invalid ife out res.");
|
||||
goto end;
|
||||
}
|
||||
|
||||
hw_intf = isp_hw_res->hw_res[0]->hw_intf;
|
||||
if (hw_intf && hw_intf->hw_ops.process_cmd) {
|
||||
hw_intf->hw_ops.process_cmd(hw_intf->hw_priv,
|
||||
CAM_ISP_HW_CMD_IS_CONSUMED_ADDR_SUPPORT,
|
||||
&support_consumed_addr,
|
||||
sizeof(support_consumed_addr));
|
||||
}
|
||||
|
||||
end:
|
||||
return support_consumed_addr;
|
||||
}
|
||||
|
||||
/* entry function: acquire_hw */
|
||||
static int cam_tfe_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args)
|
||||
{
|
||||
|
|
@ -2011,7 +1985,7 @@ static int cam_tfe_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args)
|
|||
tfe_ctx->num_reg_dump_buf = 0;
|
||||
|
||||
acquire_args->support_consumed_addr =
|
||||
cam_tfe_mgr_is_consumed_addr_supported(tfe_ctx);
|
||||
g_tfe_hw_mgr.support_consumed_addr;
|
||||
|
||||
cam_tfe_hw_mgr_put_ctx(&tfe_hw_mgr->used_ctx_list, &tfe_ctx);
|
||||
|
||||
|
|
@ -5361,6 +5335,7 @@ static int cam_tfe_hw_mgr_handle_hw_buf_done(
|
|||
|
||||
buf_done_event_data.num_handles = 1;
|
||||
buf_done_event_data.resource_handle[0] = event_info->res_id;
|
||||
buf_done_event_data.last_consumed_addr[0] = event_info->reg_val;
|
||||
|
||||
if (atomic_read(&tfe_hw_mgr_ctx->overflow_pending))
|
||||
return 0;
|
||||
|
|
@ -5560,6 +5535,7 @@ int cam_tfe_hw_mgr_init(struct cam_hw_mgr_intf *hw_mgr_intf, int *iommu_hdl)
|
|||
struct cam_iommu_handle cdm_handles;
|
||||
struct cam_tfe_hw_mgr_ctx *ctx_pool;
|
||||
struct cam_isp_hw_mgr_res *res_list_tfe_out;
|
||||
bool support_consumed_addr = false;
|
||||
|
||||
CAM_DBG(CAM_ISP, "Enter");
|
||||
|
||||
|
|
@ -5576,10 +5552,19 @@ int cam_tfe_hw_mgr_init(struct cam_hw_mgr_intf *hw_mgr_intf, int *iommu_hdl)
|
|||
for (i = 0, j = 0; i < CAM_TFE_HW_NUM_MAX; i++) {
|
||||
rc = cam_tfe_hw_init(&g_tfe_hw_mgr.tfe_devices[i], i);
|
||||
if (!rc) {
|
||||
struct cam_hw_intf *tfe_device =
|
||||
g_tfe_hw_mgr.tfe_devices[i]->hw_intf;
|
||||
struct cam_hw_info *tfe_hw = (struct cam_hw_info *)
|
||||
g_tfe_hw_mgr.tfe_devices[i]->hw_intf->hw_priv;
|
||||
struct cam_hw_soc_info *soc_info = &tfe_hw->soc_info;
|
||||
|
||||
if (j == 0)
|
||||
tfe_device->hw_ops.process_cmd(
|
||||
tfe_hw,
|
||||
CAM_ISP_HW_CMD_IS_CONSUMED_ADDR_SUPPORT,
|
||||
&support_consumed_addr,
|
||||
sizeof(support_consumed_addr));
|
||||
|
||||
j++;
|
||||
|
||||
g_tfe_hw_mgr.cdm_reg_map[i] = &soc_info->reg_map[0];
|
||||
|
|
@ -5596,6 +5581,7 @@ int cam_tfe_hw_mgr_init(struct cam_hw_mgr_intf *hw_mgr_intf, int *iommu_hdl)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
g_tfe_hw_mgr.support_consumed_addr = support_consumed_addr;
|
||||
/* fill csid hw intf information */
|
||||
for (i = 0, j = 0; i < CAM_TFE_CSID_HW_NUM_MAX; i++) {
|
||||
rc = cam_tfe_csid_hw_init(&g_tfe_hw_mgr.csid_devices[i], i);
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ struct cam_tfe_hw_mgr_ctx {
|
|||
* @tfe_dev_caps tfe device capability per core
|
||||
* @work q work queue for TFE hw manager
|
||||
* @debug_cfg debug configuration
|
||||
* @support_consumed_addr indicate whether hw supports last consumed address
|
||||
*/
|
||||
struct cam_tfe_hw_mgr {
|
||||
struct cam_isp_hw_mgr mgr_common;
|
||||
|
|
@ -165,6 +166,7 @@ struct cam_tfe_hw_mgr {
|
|||
struct cam_tfe_hw_get_hw_cap tfe_dev_caps[CAM_TFE_HW_NUM_MAX];
|
||||
struct cam_req_mgr_core_workq *workq;
|
||||
struct cam_tfe_hw_mgr_debug debug_cfg;
|
||||
bool support_consumed_addr;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1947,6 +1947,7 @@ static int cam_tfe_bus_update_wm(void *priv, void *cmd_args,
|
|||
update_buf->wm_update->image_buf[i]);
|
||||
CAM_DBG(CAM_ISP, "WM %d image address 0x%x",
|
||||
wm_data->index, reg_val_pair[j-1]);
|
||||
update_buf->wm_update->image_buf_offset[i] = 0;
|
||||
|
||||
CAM_TFE_ADD_REG_VAL_PAIR(reg_val_pair, j,
|
||||
wm_data->hw_regs->frame_incr, frame_inc);
|
||||
|
|
|
|||
Loading…
Reference in a new issue