diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3587-drm-amd-display-add-Cursor-Degamma-logic-for-DCN2.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3587-drm-amd-display-add-Cursor-Degamma-logic-for-DCN2.patch | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3587-drm-amd-display-add-Cursor-Degamma-logic-for-DCN2.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3587-drm-amd-display-add-Cursor-Degamma-logic-for-DCN2.patch new file mode 100644 index 00000000..5e015d41 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3587-drm-amd-display-add-Cursor-Degamma-logic-for-DCN2.patch @@ -0,0 +1,135 @@ +From b7517e55ceac4631bdb32256fbf8daa158228186 Mon Sep 17 00:00:00 2001 +From: Bayan Zabihiyan <bayan.zabihiyan@amd.com> +Date: Fri, 26 Jul 2019 11:10:11 -0400 +Subject: [PATCH 3587/4256] drm/amd/display: add Cursor Degamma logic for DCN2 + +[Why] +We need to have the ability to to tell us set degamma on the cursor. + +[How] +Pass a flag down to register programming that tells us if the +current surface format needs cursor degamma. + +Signed-off-by: Bayan Zabihiyan <bayan.zabihiyan@amd.com> +Reviewed-by: Krunoslav Kovac <Krunoslav.Kovac@amd.com> +Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> +--- + drivers/gpu/drm/amd/display/dc/dc_hw_types.h | 3 ++- + drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.c | 3 ++- + drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h | 2 +- + .../gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 2 +- + drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.c | 10 +++++++--- + drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.h | 2 +- + drivers/gpu/drm/amd/display/dc/inc/hw/dpp.h | 2 +- + 7 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/dc_hw_types.h b/drivers/gpu/drm/amd/display/dc/dc_hw_types.h +index 929c4eadc1dc..f35826d5d1e5 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc_hw_types.h ++++ b/drivers/gpu/drm/amd/display/dc/dc_hw_types.h +@@ -516,7 +516,8 @@ union dc_cursor_attribute_flags { + uint32_t INVERT_PIXEL_DATA:1; + uint32_t ZERO_EXPANSION:1; + uint32_t MIN_MAX_INVERT:1; +- uint32_t RESERVED:25; ++ uint32_t ENABLE_CURSOR_DEGAMMA:1; ++ uint32_t RESERVED:24; + } bits; + uint32_t value; + }; +diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.c +index b95ec73fcae3..23b2361cec62 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.c +@@ -426,8 +426,9 @@ void dpp1_cnv_setup ( + + void dpp1_set_cursor_attributes( + struct dpp *dpp_base, +- enum dc_cursor_color_format color_format) ++ struct dc_cursor_attributes *cursor_attributes) + { ++ enum dc_cursor_color_format color_format = cursor_attributes->color_format; + struct dcn10_dpp *dpp = TO_DCN10_DPP(dpp_base); + + REG_UPDATE_2(CURSOR0_CONTROL, +diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h +index 8a5517eebb7c..e2c613611ac9 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h ++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h +@@ -1368,7 +1368,7 @@ enum dcn10_input_csc_select { + + void dpp1_set_cursor_attributes( + struct dpp *dpp_base, +- enum dc_cursor_color_format color_format); ++ struct dc_cursor_attributes *cursor_attributes); + + void dpp1_set_cursor_position( + struct dpp *dpp_base, +diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +index 0cbd344ca447..808a31c197d2 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +@@ -2985,7 +2985,7 @@ static void dcn10_set_cursor_attribute(struct pipe_ctx *pipe_ctx) + pipe_ctx->plane_res.hubp->funcs->set_cursor_attributes( + pipe_ctx->plane_res.hubp, attributes); + pipe_ctx->plane_res.dpp->funcs->set_cursor_attributes( +- pipe_ctx->plane_res.dpp, attributes->color_format); ++ pipe_ctx->plane_res.dpp, attributes); + } + + static void dcn10_set_cursor_sdr_white_level(struct pipe_ctx *pipe_ctx) +diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.c +index db311574f42f..2f5aade1e882 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.c +@@ -342,14 +342,18 @@ void dpp2_cnv_set_alpha_keyer( + + void dpp2_set_cursor_attributes( + struct dpp *dpp_base, +- enum dc_cursor_color_format color_format) ++ struct dc_cursor_attributes *cursor_attributes) + { ++ enum dc_cursor_color_format color_format = cursor_attributes->color_format; + struct dcn20_dpp *dpp = TO_DCN20_DPP(dpp_base); + int cur_rom_en = 0; + + if (color_format == CURSOR_MODE_COLOR_PRE_MULTIPLIED_ALPHA || +- color_format == CURSOR_MODE_COLOR_UN_PRE_MULTIPLIED_ALPHA) +- cur_rom_en = 1; ++ color_format == CURSOR_MODE_COLOR_UN_PRE_MULTIPLIED_ALPHA) { ++ if (cursor_attributes->attribute_flags.bits.ENABLE_CURSOR_DEGAMMA) { ++ cur_rom_en = 1; ++ } ++ } + + REG_UPDATE_3(CURSOR0_CONTROL, + CUR0_MODE, color_format, +diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.h b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.h +index 1f5d99a6d240..290b2854bd2c 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.h ++++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_dpp.h +@@ -676,7 +676,7 @@ void dscl2_calc_lb_num_partitions( + + void dpp2_set_cursor_attributes( + struct dpp *dpp_base, +- enum dc_cursor_color_format color_format); ++ struct dc_cursor_attributes *cursor_attributes); + + void dpp2_dummy_program_input_lut( + struct dpp *dpp_base, +diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/dpp.h b/drivers/gpu/drm/amd/display/dc/inc/hw/dpp.h +index 9b69a06ab46f..474c7194a9f8 100644 +--- a/drivers/gpu/drm/amd/display/dc/inc/hw/dpp.h ++++ b/drivers/gpu/drm/amd/display/dc/inc/hw/dpp.h +@@ -201,7 +201,7 @@ struct dpp_funcs { + + void (*set_cursor_attributes)( + struct dpp *dpp_base, +- enum dc_cursor_color_format color_format); ++ struct dc_cursor_attributes *cursor_attributes); + + void (*set_cursor_position)( + struct dpp *dpp_base, +-- +2.17.1 + |