struct output_pixel_processor *opp = NULL;
        uint32_t num_opps, opp_id_src0, opp_id_src1;
        uint32_t otg_active_width, otg_active_height;
+       uint32_t i;
 
        /* program opp dpg blank color */
        color_space = COLOR_SPACE_SRGB;
        /* get the OPTC source */
        tg->funcs->get_optc_source(tg, &num_opps, &opp_id_src0, &opp_id_src1);
        ASSERT(opp_id_src0 < dc->res_pool->res_cap->num_opp);
-       opp = dc->res_pool->opps[opp_id_src0];
-
-       opp->funcs->opp_set_disp_pattern_generator(
-                       opp,
-                       CONTROLLER_DP_TEST_PATTERN_SOLID_COLOR,
-                       CONTROLLER_DP_COLOR_SPACE_UDEFINED,
-                       COLOR_DEPTH_UNDEFINED,
-                       &black_color,
-                       otg_active_width,
-                       otg_active_height,
-                       0);
+
+       for (i = 0; i < dc->res_pool->res_cap->num_opp; i++) {
+               if (dc->res_pool->opps[i] != NULL && dc->res_pool->opps[i]->inst == opp_id_src0) {
+                       opp = dc->res_pool->opps[i];
+                       break;
+               }
+       }
+
+       if (opp && opp->funcs->opp_set_disp_pattern_generator)
+               opp->funcs->opp_set_disp_pattern_generator(
+                               opp,
+                               CONTROLLER_DP_TEST_PATTERN_SOLID_COLOR,
+                               CONTROLLER_DP_COLOR_SPACE_UDEFINED,
+                               COLOR_DEPTH_UNDEFINED,
+                               &black_color,
+                               otg_active_width,
+                               otg_active_height,
+                               0);
 
        if (tg->funcs->is_tg_enabled(tg))
                hws->funcs.wait_for_blank_complete(opp);
 
        pipe_data->pipe_config.subvp_data.main_vblank_end =
                        main_timing->v_total - main_timing->v_front_porch - main_timing->v_addressable;
        pipe_data->pipe_config.subvp_data.mall_region_lines = phantom_timing->v_addressable;
-       pipe_data->pipe_config.subvp_data.main_pipe_index = subvp_pipe->pipe_idx;
+       pipe_data->pipe_config.subvp_data.main_pipe_index = subvp_pipe->stream_res.tg->inst;
        pipe_data->pipe_config.subvp_data.is_drr = subvp_pipe->stream->ignore_msa_timing_param;
 
        /* Calculate the scaling factor from the src and dst height.
                struct pipe_ctx *phantom_pipe = &context->res_ctx.pipe_ctx[j];
 
                if (phantom_pipe->stream == subvp_pipe->stream->mall_stream_config.paired_stream) {
-                       pipe_data->pipe_config.subvp_data.phantom_pipe_index = phantom_pipe->pipe_idx;
+                       pipe_data->pipe_config.subvp_data.phantom_pipe_index = phantom_pipe->stream_res.tg->inst;
                        if (phantom_pipe->bottom_pipe) {
-                               pipe_data->pipe_config.subvp_data.phantom_split_pipe_index = phantom_pipe->bottom_pipe->pipe_idx;
+                               pipe_data->pipe_config.subvp_data.phantom_split_pipe_index = phantom_pipe->bottom_pipe->plane_res.hubp->inst;
                        } else if (phantom_pipe->next_odm_pipe) {
-                               pipe_data->pipe_config.subvp_data.phantom_split_pipe_index = phantom_pipe->next_odm_pipe->pipe_idx;
+                               pipe_data->pipe_config.subvp_data.phantom_split_pipe_index = phantom_pipe->next_odm_pipe->plane_res.hubp->inst;
                        } else {
                                pipe_data->pipe_config.subvp_data.phantom_split_pipe_index = 0;
                        }