== stream) {
 
                        pipes = &dc->current_state->res_ctx.pipe_ctx[i];
-                       dc->hwss.program_csc_matrix(pipes,
-                       stream->output_color_space,
-                       stream->csc_color_matrix.matrix);
+                       dc->hwss.program_output_csc(dc,
+                                       pipes,
+                                       stream->output_color_space,
+                                       stream->csc_color_matrix.matrix,
+                                       pipes->plane_res.hubp->opp_id);
                        ret = true;
                }
        }
 
        /* do nothing*/
 }
 
-static void program_csc_matrix(struct pipe_ctx *pipe_ctx,
-               enum dc_color_space colorspace,
-               uint16_t *matrix)
-{
-       int i;
-       struct out_csc_color_matrix tbl_entry;
-
-       if (pipe_ctx->stream->csc_color_matrix.enable_adjustment
-                               == true) {
-                       enum dc_color_space color_space =
-                               pipe_ctx->stream->output_color_space;
-
-                       //uint16_t matrix[12];
-                       for (i = 0; i < 12; i++)
-                               tbl_entry.regval[i] = pipe_ctx->stream->csc_color_matrix.matrix[i];
-
-                       tbl_entry.color_space = color_space;
-                       //tbl_entry.regval = matrix;
-                       pipe_ctx->plane_res.xfm->funcs->opp_set_csc_adjustment(pipe_ctx->plane_res.xfm, &tbl_entry);
-       }
-}
-
 void dce110_set_cursor_position(struct pipe_ctx *pipe_ctx)
 {
        struct dc_cursor_position pos_cpy = pipe_ctx->stream->cursor_position;
 
 static const struct hw_sequencer_funcs dce110_funcs = {
        .program_gamut_remap = program_gamut_remap,
-       .program_csc_matrix = program_csc_matrix,
        .init_hw = init_hw,
        .apply_ctx_to_hw = dce110_apply_ctx_to_hw,
        .apply_ctx_for_surface = dce110_apply_ctx_for_surface,
 
        pipe_ctx->plane_res.dpp->funcs->dpp_set_gamut_remap(pipe_ctx->plane_res.dpp, &adjust);
 }
 
-
-static void program_csc_matrix(struct pipe_ctx *pipe_ctx,
+static void dcn10_program_output_csc(struct dc *dc,
+               struct pipe_ctx *pipe_ctx,
                enum dc_color_space colorspace,
-               uint16_t *matrix)
+               uint16_t *matrix,
+               int opp_id)
 {
        if (pipe_ctx->stream->csc_color_matrix.enable_adjustment == true) {
-                       if (pipe_ctx->plane_res.dpp->funcs->dpp_set_csc_adjustment != NULL)
-                               pipe_ctx->plane_res.dpp->funcs->dpp_set_csc_adjustment(pipe_ctx->plane_res.dpp, matrix);
+               if (pipe_ctx->plane_res.dpp->funcs->dpp_set_csc_adjustment != NULL)
+                       pipe_ctx->plane_res.dpp->funcs->dpp_set_csc_adjustment(pipe_ctx->plane_res.dpp, matrix);
        } else {
                if (pipe_ctx->plane_res.dpp->funcs->dpp_set_csc_default != NULL)
                        pipe_ctx->plane_res.dpp->funcs->dpp_set_csc_default(pipe_ctx->plane_res.dpp, colorspace);
        }
 }
 
-static void dcn10_program_output_csc(struct dc *dc,
-               struct pipe_ctx *pipe_ctx,
-               enum dc_color_space colorspace,
-               uint16_t *matrix,
-               int opp_id)
-{
-       if (pipe_ctx->plane_res.dpp->funcs->dpp_set_csc_adjustment != NULL)
-               program_csc_matrix(pipe_ctx,
-                               colorspace,
-                               matrix);
-}
-
 bool is_lower_pipe_tree_visible(struct pipe_ctx *pipe_ctx)
 {
        if (pipe_ctx->plane_state->visible)
 
 static const struct hw_sequencer_funcs dcn10_funcs = {
        .program_gamut_remap = program_gamut_remap,
-       .program_csc_matrix = program_csc_matrix,
        .init_hw = dcn10_init_hw,
        .apply_ctx_to_hw = dce110_apply_ctx_to_hw,
        .apply_ctx_for_surface = dcn10_apply_ctx_for_surface,
 
        void (*program_gamut_remap)(
                        struct pipe_ctx *pipe_ctx);
 
-       void (*program_csc_matrix)(
-                       struct pipe_ctx *pipe_ctx,
-                       enum dc_color_space colorspace,
-                       uint16_t *matrix);
-
        void (*program_output_csc)(struct dc *dc,
                        struct pipe_ctx *pipe_ctx,
                        enum dc_color_space colorspace,