]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: Make dcn401_initialize_min_clocks() available to other compilation...
authorKarthi Kandasamy <karthi.kandasamy@amd.com>
Wed, 11 Jun 2025 13:46:27 +0000 (15:46 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 15 Jul 2025 18:07:51 +0000 (14:07 -0400)
[Why & How]
Expose dcn401_initialize_min_clocks() for future use and add additional
check for IP register.

Reviewed-by: Nevenko Stupar <nevenko.stupar@amd.com>
Signed-off-by: Karthi Kandasamy <karthi.kandasamy@amd.com>
Signed-off-by: Ivan Lipski <ivan.lipski@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/dsc/dsc.h
drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c
drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.h

index 1ebce5426a58d277d559c1126bbbb1234488a2b6..b0bd1f9425b5c31c1bb9643d8684e7be55d69b26 100644 (file)
@@ -108,6 +108,7 @@ struct dsc_funcs {
        void (*dsc_disable)(struct display_stream_compressor *dsc);
        void (*dsc_disconnect)(struct display_stream_compressor *dsc);
        void (*dsc_wait_disconnect_pending_clear)(struct display_stream_compressor *dsc);
+       void (*dsc_get_single_enc_caps)(struct dsc_enc_caps *dsc_enc_caps, unsigned int max_dscclk_khz);
 };
 
 #endif
index a0d61df07f22a6c6f22ab6b057bc82aa70a98465..cc9f40d97af2fb7a454b3a764b27993d30a41297 100644 (file)
@@ -51,7 +51,7 @@
 #define FN(reg_name, field_name) \
        hws->shifts->field_name, hws->masks->field_name
 
-static void dcn401_initialize_min_clocks(struct dc *dc)
+void dcn401_initialize_min_clocks(struct dc *dc)
 {
        struct dc_clocks *clocks = &dc->current_state->bw_ctx.bw.dcn.clk;
 
@@ -2632,10 +2632,12 @@ void dcn401_plane_atomic_power_down(struct dc *dc,
 
        DC_LOGGER_INIT(dc->ctx->logger);
 
-       REG_GET(DC_IP_REQUEST_CNTL, IP_REQUEST_EN, &org_ip_request_cntl);
-       if (org_ip_request_cntl == 0)
-               REG_SET(DC_IP_REQUEST_CNTL, 0,
-                       IP_REQUEST_EN, 1);
+       if (REG(DC_IP_REQUEST_CNTL)) {
+               REG_GET(DC_IP_REQUEST_CNTL, IP_REQUEST_EN, &org_ip_request_cntl);
+               if (org_ip_request_cntl == 0)
+                       REG_SET(DC_IP_REQUEST_CNTL, 0,
+                               IP_REQUEST_EN, 1);
+       }
 
        if (hws->funcs.dpp_pg_control)
                hws->funcs.dpp_pg_control(hws, dpp->inst, false);
@@ -2646,7 +2648,7 @@ void dcn401_plane_atomic_power_down(struct dc *dc,
        hubp->funcs->hubp_reset(hubp);
        dpp->funcs->dpp_reset(dpp);
 
-       if (org_ip_request_cntl == 0)
+       if (org_ip_request_cntl == 0 && REG(DC_IP_REQUEST_CNTL))
                REG_SET(DC_IP_REQUEST_CNTL, 0,
                        IP_REQUEST_EN, 0);
 
index 781cf0efccc6cdf395c971fade567691242623ac..2621b7725267edaef56cc4a2e539c33733e98639 100644 (file)
@@ -109,4 +109,5 @@ void dcn401_detect_pipe_changes(
 void dcn401_plane_atomic_power_down(struct dc *dc,
                struct dpp *dpp,
                struct hubp *hubp);
+void dcn401_initialize_min_clocks(struct dc *dc);
 #endif /* __DC_HWSS_DCN401_H__ */