]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: Add VC for VESA Aux Backlight Control
authorIswara Nagulendran <Iswara.Nagulendran@amd.com>
Wed, 11 Dec 2024 22:19:42 +0000 (17:19 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 6 Jan 2025 19:44:28 +0000 (14:44 -0500)
[WHY]
There is no way to distinguish
the static backlight control type
being used and the VABC support
without the use of a debugger or
reading DPCD registers.

[HOW]
Add Visual Confirm support
for VESA Aux-based Backlight Control.

Reviewed-by: Harry Vanzylldejong <harry.vanzylldejong@amd.com>
Signed-off-by: Iswara Nagulendran <Iswara.Nagulendran@amd.com>
Signed-off-by: Roman Li <roman.li@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c
drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c
drivers/gpu/drm/amd/display/dc/dc.h
drivers/gpu/drm/amd/display/dc/hwss/hw_sequencer.h

index 08d35d9da4431875d94fb82ee0567764bd15ef46..76c36374de6714a2f406e0df0e211835dcd27ca7 100644 (file)
@@ -1236,6 +1236,8 @@ static void dc_update_visual_confirm_color(struct dc *dc, struct dc_state *conte
                                get_mclk_switch_visual_confirm_color(pipe_ctx, &(pipe_ctx->visual_confirm_color));
                        else if (dc->debug.visual_confirm == VISUAL_CONFIRM_FAMS2)
                                get_fams2_visual_confirm_color(dc, context, pipe_ctx, &(pipe_ctx->visual_confirm_color));
+                       else if (dc->debug.visual_confirm == VISUAL_CONFIRM_VABC)
+                               get_vabc_visual_confirm_color(pipe_ctx, &(pipe_ctx->visual_confirm_color));
                }
        }
 }
index 252af83e34a530b876f61825302332129bd92617..6eb9bae3af9127b85eef7f5be0de7a1730a4ec8f 100644 (file)
@@ -425,6 +425,44 @@ void get_hdr_visual_confirm_color(
        }
 }
 
+/* Visual Confirm color definition for VABC */
+void get_vabc_visual_confirm_color(
+       struct pipe_ctx *pipe_ctx,
+       struct tg_color *color)
+{
+       uint32_t color_value = MAX_TG_COLOR_VALUE;
+       struct dc_link *edp_link = NULL;
+
+       if (pipe_ctx && pipe_ctx->stream && pipe_ctx->stream->link) {
+               if (pipe_ctx->stream->link->connector_signal == SIGNAL_TYPE_EDP)
+                       edp_link = pipe_ctx->stream->link;
+       }
+
+       if (edp_link) {
+               switch (edp_link->backlight_control_type) {
+               case BACKLIGHT_CONTROL_PWM:
+                       color->color_r_cr = color_value;
+                       color->color_g_y = 0;
+                       color->color_b_cb = 0;
+                       break;
+               case BACKLIGHT_CONTROL_AMD_AUX:
+                       color->color_r_cr = 0;
+                       color->color_g_y = color_value;
+                       color->color_b_cb = 0;
+                       break;
+               case BACKLIGHT_CONTROL_VESA_AUX:
+                       color->color_r_cr = 0;
+                       color->color_g_y = 0;
+                       color->color_b_cb = color_value;
+                       break;
+               }
+       } else {
+               color->color_r_cr = 0;
+               color->color_g_y = 0;
+               color->color_b_cb = 0;
+       }
+}
+
 void get_subvp_visual_confirm_color(
                struct pipe_ctx *pipe_ctx,
                struct tg_color *color)
index 2e4200d5145f7c23cbd3630c4c379df44443dbfb..5b32c447da98c9e225f0fdf7b6b2c13d89e43965 100644 (file)
@@ -489,6 +489,7 @@ enum visual_confirm {
        VISUAL_CONFIRM_MCLK_SWITCH = 16,
        VISUAL_CONFIRM_FAMS2 = 19,
        VISUAL_CONFIRM_HW_CURSOR = 20,
+       VISUAL_CONFIRM_VABC = 21,
 };
 
 enum dc_psr_power_opts {
index a5bb10d7b16032ff3dc84539e05ab4f6c651c68b..98d85c7ab3fa5c09374804c1f97214417b0ef33a 100644 (file)
@@ -194,7 +194,6 @@ enum block_sequence_func {
        DMUB_SUBVP_SAVE_SURF_ADDR,
        HUBP_WAIT_FOR_DCC_META_PROP,
        DMUB_FAMS2_GLOBAL_CONTROL_LOCK_FAST,
-
 };
 
 struct block_sequence {
@@ -485,11 +484,12 @@ void get_hdr_visual_confirm_color(
 void get_mpctree_visual_confirm_color(
                struct pipe_ctx *pipe_ctx,
                struct tg_color *color);
-
+void get_vabc_visual_confirm_color(
+       struct pipe_ctx *pipe_ctx,
+       struct tg_color *color);
 void get_subvp_visual_confirm_color(
        struct pipe_ctx *pipe_ctx,
        struct tg_color *color);
-
 void get_fams2_visual_confirm_color(
        struct dc *dc,
        struct dc_state *context,