Pass the correct enum values as expected by the VBIOS.
Previously the actual bit depth integer value was passed,
which was a mistake.

Fixes: 523aabc65da0 ("drm/amd/display: Add SelectCRTC_Source to BIOS parser")
Signed-off-by: Timur Kristóf <[email protected]>
---
 .../drm/amd/display/dc/bios/command_table.c   | 25 ++++++++++++++++-
 .../amd/display/dc/hwss/dce110/dce110_hwseq.c | 28 +------------------
 .../amd/display/include/bios_parser_types.h   |  2 +-
 3 files changed, 26 insertions(+), 29 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/bios/command_table.c 
b/drivers/gpu/drm/amd/display/dc/bios/command_table.c
index 22457f417e65..d56c0d3763dd 100644
--- a/drivers/gpu/drm/amd/display/dc/bios/command_table.c
+++ b/drivers/gpu/drm/amd/display/dc/bios/command_table.c
@@ -1797,7 +1797,30 @@ static enum bp_result select_crtc_source_v3(
                &params.ucEncodeMode))
                return BP_RESULT_BADINPUT;
 
-       params.ucDstBpc = bp_params->bit_depth;
+       switch (bp_params->color_depth) {
+       case COLOR_DEPTH_UNDEFINED:
+               params.ucDstBpc = PANEL_BPC_UNDEFINE;
+               break;
+       case COLOR_DEPTH_666:
+               params.ucDstBpc = PANEL_6BIT_PER_COLOR;
+               break;
+       default:
+       case COLOR_DEPTH_888:
+               params.ucDstBpc = PANEL_8BIT_PER_COLOR;
+               break;
+       case COLOR_DEPTH_101010:
+               params.ucDstBpc = PANEL_10BIT_PER_COLOR;
+               break;
+       case COLOR_DEPTH_121212:
+               params.ucDstBpc = PANEL_12BIT_PER_COLOR;
+               break;
+       case COLOR_DEPTH_141414:
+               dm_error("14-bit color not supported by SelectCRTC_Source 
v3\n");
+               break;
+       case COLOR_DEPTH_161616:
+               params.ucDstBpc = PANEL_16BIT_PER_COLOR;
+               break;
+       }
 
        if (EXEC_BIOS_CMD_TABLE(SelectCRTC_Source, params))
                result = BP_RESULT_OK;
diff --git a/drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c 
b/drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c
index 94e66d96c403..6f6eacf62b5f 100644
--- a/drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c
@@ -1611,38 +1611,12 @@ dce110_select_crtc_source(struct pipe_ctx *pipe_ctx)
        struct dc_bios *bios = link->ctx->dc_bios;
        struct bp_crtc_source_select crtc_source_select = {0};
        enum engine_id engine_id = link->link_enc->preferred_engine;
-       uint8_t bit_depth;
 
        if (dc_is_rgb_signal(pipe_ctx->stream->signal))
                engine_id = link->link_enc->analog_engine;
 
-       switch (pipe_ctx->stream->timing.display_color_depth) {
-       case COLOR_DEPTH_UNDEFINED:
-               bit_depth = 0;
-               break;
-       case COLOR_DEPTH_666:
-               bit_depth = 6;
-               break;
-       default:
-       case COLOR_DEPTH_888:
-               bit_depth = 8;
-               break;
-       case COLOR_DEPTH_101010:
-               bit_depth = 10;
-               break;
-       case COLOR_DEPTH_121212:
-               bit_depth = 12;
-               break;
-       case COLOR_DEPTH_141414:
-               bit_depth = 14;
-               break;
-       case COLOR_DEPTH_161616:
-               bit_depth = 16;
-               break;
-       }
-
        crtc_source_select.controller_id = CONTROLLER_ID_D0 + 
pipe_ctx->stream_res.tg->inst;
-       crtc_source_select.bit_depth = bit_depth;
+       crtc_source_select.color_depth = 
pipe_ctx->stream->timing.display_color_depth;
        crtc_source_select.engine_id = engine_id;
        crtc_source_select.sink_signal = pipe_ctx->stream->signal;
 
diff --git a/drivers/gpu/drm/amd/display/include/bios_parser_types.h 
b/drivers/gpu/drm/amd/display/include/bios_parser_types.h
index 973b6bdbac63..f40dc612ec73 100644
--- a/drivers/gpu/drm/amd/display/include/bios_parser_types.h
+++ b/drivers/gpu/drm/amd/display/include/bios_parser_types.h
@@ -136,7 +136,7 @@ struct bp_crtc_source_select {
        enum engine_id engine_id;
        enum controller_id controller_id;
        enum signal_type sink_signal;
-       uint8_t bit_depth;
+       enum dc_color_depth color_depth;
 };
 
 struct bp_transmitter_control {
-- 
2.52.0

Reply via email to