Commit 4bd0dc68 authored by Joshua Aberback's avatar Joshua Aberback Committed by Alex Deucher

drm/amd/display: Fix missing hwss function for dce

[Why]
The driver will crash on dce hardware due to a null function pointer.

[How]
- bring back "program_csc_matrix" functionality as "program_output_csc" for
dce110
- dce110 doesn't use the "opp_id" parameter, so use 0 when there's no hubp
Signed-off-by: default avatarJoshua Aberback <joshua.aberback@amd.com>
Reviewed-by: default avatarAnthony Koo <Anthony.Koo@amd.com>
Acked-by: default avatarJun Lei <Jun.Lei@amd.com>
Acked-by: default avatarLeo Li <sunpeng.li@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 887c549d
...@@ -451,7 +451,7 @@ bool dc_stream_program_csc_matrix(struct dc *dc, struct dc_stream_state *stream) ...@@ -451,7 +451,7 @@ bool dc_stream_program_csc_matrix(struct dc *dc, struct dc_stream_state *stream)
pipes, pipes,
stream->output_color_space, stream->output_color_space,
stream->csc_color_matrix.matrix, stream->csc_color_matrix.matrix,
pipes->plane_res.hubp->opp_id); pipes->plane_res.hubp ? pipes->plane_res.hubp->opp_id : 0);
ret = true; ret = true;
} }
} }
......
...@@ -2616,6 +2616,28 @@ static void dce110_wait_for_mpcc_disconnect( ...@@ -2616,6 +2616,28 @@ static void dce110_wait_for_mpcc_disconnect(
/* do nothing*/ /* do nothing*/
} }
static void program_output_csc(struct dc *dc,
struct pipe_ctx *pipe_ctx,
enum dc_color_space colorspace,
uint16_t *matrix,
int opp_id)
{
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;
for (i = 0; i < 12; i++)
tbl_entry.regval[i] = pipe_ctx->stream->csc_color_matrix.matrix[i];
tbl_entry.color_space = color_space;
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) void dce110_set_cursor_position(struct pipe_ctx *pipe_ctx)
{ {
struct dc_cursor_position pos_cpy = pipe_ctx->stream->cursor_position; struct dc_cursor_position pos_cpy = pipe_ctx->stream->cursor_position;
...@@ -2666,6 +2688,7 @@ void dce110_set_cursor_attribute(struct pipe_ctx *pipe_ctx) ...@@ -2666,6 +2688,7 @@ void dce110_set_cursor_attribute(struct pipe_ctx *pipe_ctx)
static const struct hw_sequencer_funcs dce110_funcs = { static const struct hw_sequencer_funcs dce110_funcs = {
.program_gamut_remap = program_gamut_remap, .program_gamut_remap = program_gamut_remap,
.program_output_csc = program_output_csc,
.init_hw = init_hw, .init_hw = init_hw,
.apply_ctx_to_hw = dce110_apply_ctx_to_hw, .apply_ctx_to_hw = dce110_apply_ctx_to_hw,
.apply_ctx_for_surface = dce110_apply_ctx_for_surface, .apply_ctx_for_surface = dce110_apply_ctx_for_surface,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment