Loading drivers/cam_isp/cam_isp_context.c +3 −0 Original line number Diff line number Diff line Loading @@ -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; Loading drivers/cam_isp/isp_hw_mgr/cam_tfe_hw_mgr.c +13 −27 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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"); Loading @@ -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]; Loading @@ -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); Loading drivers/cam_isp/isp_hw_mgr/cam_tfe_hw_mgr.h +2 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; }; /** Loading drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_hw/cam_tfe_bus.c +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
drivers/cam_isp/cam_isp_context.c +3 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
drivers/cam_isp/isp_hw_mgr/cam_tfe_hw_mgr.c +13 −27 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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"); Loading @@ -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]; Loading @@ -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); Loading
drivers/cam_isp/isp_hw_mgr/cam_tfe_hw_mgr.h +2 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; }; /** Loading
drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_hw/cam_tfe_bus.c +1 −0 Original line number Diff line number Diff line Loading @@ -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