|
@@ -335,8 +335,6 @@ static int cam_ife_hw_mgr_start_hw_res(
|
|
|
continue;
|
|
|
hw_intf = isp_hw_res->hw_res[i]->hw_intf;
|
|
|
if (hw_intf->hw_ops.start) {
|
|
|
- isp_hw_res->hw_res[i]->rdi_only_ctx =
|
|
|
- ctx->is_rdi_only_context;
|
|
|
rc = hw_intf->hw_ops.start(hw_intf->hw_priv,
|
|
|
isp_hw_res->hw_res[i],
|
|
|
sizeof(struct cam_isp_resource_node));
|
|
@@ -3843,6 +3841,7 @@ static int cam_ife_mgr_start_hw(void *hw_mgr_priv, void *start_hw_args)
|
|
|
struct cam_ife_hw_mgr_res *hw_mgr_res;
|
|
|
struct cam_isp_resource_node *rsrc_node = NULL;
|
|
|
uint32_t i, camif_debug;
|
|
|
+ bool res_rdi_context_set = false;
|
|
|
|
|
|
if (!hw_mgr_priv || !start_isp) {
|
|
|
CAM_ERR(CAM_ISP, "Invalid arguments");
|
|
@@ -3967,6 +3966,21 @@ start_only:
|
|
|
ctx->ctx_index);
|
|
|
/* Start the IFE mux in devices */
|
|
|
list_for_each_entry(hw_mgr_res, &ctx->res_list_ife_src, list) {
|
|
|
+ switch (hw_mgr_res->res_id) {
|
|
|
+ case CAM_ISP_HW_VFE_IN_RDI0:
|
|
|
+ case CAM_ISP_HW_VFE_IN_RDI1:
|
|
|
+ case CAM_ISP_HW_VFE_IN_RDI2:
|
|
|
+ case CAM_ISP_HW_VFE_IN_RDI3:
|
|
|
+ if (!res_rdi_context_set) {
|
|
|
+ hw_mgr_res->hw_res[0]->rdi_only_ctx =
|
|
|
+ ctx->is_rdi_only_context;
|
|
|
+ res_rdi_context_set = true;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
rc = cam_ife_hw_mgr_start_hw_res(hw_mgr_res, ctx);
|
|
|
if (rc) {
|
|
|
CAM_ERR(CAM_ISP, "Can not start IFE MUX (%d)",
|