]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Fix dsc eDP issue
authorCharlene Liu <Charlene.Liu@amd.com>
Wed, 10 Dec 2025 22:01:17 +0000 (17:01 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 5 Jan 2026 21:59:59 +0000 (16:59 -0500)
[why]
Need to add function hook check before use

Reviewed-by: Mohit Bawa <mohit.bawa@amd.com>
Signed-off-by: Charlene Liu <Charlene.Liu@amd.com>
Signed-off-by: Chenyu Chen <chen-yu.chen@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/hwss/dce110/dce110_hwseq.c

index ebdb885826aaa05878c04e4a6431b6dcbf6a55e5..c5761f3ed0ae4a469df2ee3266ab313e1aff029b 100644 (file)
@@ -1846,6 +1846,9 @@ static void disable_vga_and_power_gate_all_controllers(
        struct timing_generator *tg;
        struct dc_context *ctx = dc->ctx;
 
+       if (dc->caps.ips_support)
+               return;
+
        for (i = 0; i < dc->res_pool->timing_generator_count; i++) {
                tg = dc->res_pool->timing_generators[i];
 
@@ -1922,13 +1925,16 @@ static void clean_up_dsc_blocks(struct dc *dc)
                        /* disable DSC in OPTC */
                        if (i < dc->res_pool->timing_generator_count) {
                                tg = dc->res_pool->timing_generators[i];
-                               tg->funcs->set_dsc_config(tg, OPTC_DSC_DISABLED, 0, 0);
+                               if (tg->funcs->set_dsc_config)
+                                       tg->funcs->set_dsc_config(tg, OPTC_DSC_DISABLED, 0, 0);
                        }
                        /* disable DSC in stream encoder */
                        if (i < dc->res_pool->stream_enc_count) {
                                se = dc->res_pool->stream_enc[i];
-                               se->funcs->dp_set_dsc_config(se, OPTC_DSC_DISABLED, 0, 0);
-                               se->funcs->dp_set_dsc_pps_info_packet(se, false, NULL, true);
+                               if (se->funcs->dp_set_dsc_config)
+                                       se->funcs->dp_set_dsc_config(se, OPTC_DSC_DISABLED, 0, 0);
+                               if (se->funcs->dp_set_dsc_pps_info_packet)
+                                       se->funcs->dp_set_dsc_pps_info_packet(se, false, NULL, true);
                        }
                        /* disable DSC block */
                        if (dccg->funcs->set_ref_dscclk)