drm/amd/display: Add Z8 watermarks for DML2 bbox overrides
authorNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Tue, 7 Nov 2023 16:12:45 +0000 (11:12 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 29 Nov 2023 22:56:40 +0000 (17:56 -0500)
[Why]
We can override SR watermarks but not Z8 ones.

[How]
Add new parameters for Z8 matching the SR ones and feed them into the
states.

These also weren't being applied to every state, so make sure that
we loop over and update all SOC states if given an override.

Reviewed-by: Jun Lei <jun.lei@amd.com>
Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c
drivers/gpu/drm/amd/display/dc/dml2/dml2_wrapper.h

index 75171bee6f7164a9a93b9e2e8e4c2a34690ffddc..2b9638c6d9b00fdac12c8177d610dec5d63d78a6 100644 (file)
@@ -341,25 +341,42 @@ void dml2_init_soc_states(struct dml2_context *dml2, const struct dc *in_dc,
                break;
        }
 
-       /* Override from passed values, mainly for debugging purposes, if available */
-       if (dml2->config.bbox_overrides.sr_exit_latency_us) {
-               p->in_states->state_array[0].sr_exit_time_us = dml2->config.bbox_overrides.sr_exit_latency_us;
-       }
+       /* Override from passed values, if available */
+       for (i = 0; i < p->in_states->num_states; i++) {
+               if (dml2->config.bbox_overrides.sr_exit_latency_us) {
+                       p->in_states->state_array[i].sr_exit_time_us =
+                               dml2->config.bbox_overrides.sr_exit_latency_us;
+               }
 
-       if (dml2->config.bbox_overrides.sr_enter_plus_exit_latency_us) {
-               p->in_states->state_array[0].sr_enter_plus_exit_time_us = dml2->config.bbox_overrides.sr_enter_plus_exit_latency_us;
-       }
+               if (dml2->config.bbox_overrides.sr_enter_plus_exit_latency_us) {
+                       p->in_states->state_array[i].sr_enter_plus_exit_time_us =
+                               dml2->config.bbox_overrides.sr_enter_plus_exit_latency_us;
+               }
 
-       if (dml2->config.bbox_overrides.urgent_latency_us) {
-               p->in_states->state_array[0].urgent_latency_pixel_data_only_us = dml2->config.bbox_overrides.urgent_latency_us;
-       }
+               if (dml2->config.bbox_overrides.sr_exit_z8_time_us) {
+                       p->in_states->state_array[i].sr_exit_z8_time_us =
+                               dml2->config.bbox_overrides.sr_exit_z8_time_us;
+               }
 
-       if (dml2->config.bbox_overrides.dram_clock_change_latency_us) {
-               p->in_states->state_array[0].dram_clock_change_latency_us = dml2->config.bbox_overrides.dram_clock_change_latency_us;
-       }
+               if (dml2->config.bbox_overrides.sr_enter_plus_exit_z8_time_us) {
+                       p->in_states->state_array[i].sr_enter_plus_exit_z8_time_us =
+                               dml2->config.bbox_overrides.sr_enter_plus_exit_z8_time_us;
+               }
+
+               if (dml2->config.bbox_overrides.urgent_latency_us) {
+                       p->in_states->state_array[i].urgent_latency_pixel_data_only_us =
+                               dml2->config.bbox_overrides.urgent_latency_us;
+               }
 
-       if (dml2->config.bbox_overrides.fclk_change_latency_us) {
-               p->in_states->state_array[0].fclk_change_latency_us = dml2->config.bbox_overrides.fclk_change_latency_us;
+               if (dml2->config.bbox_overrides.dram_clock_change_latency_us) {
+                       p->in_states->state_array[i].dram_clock_change_latency_us =
+                               dml2->config.bbox_overrides.dram_clock_change_latency_us;
+               }
+
+               if (dml2->config.bbox_overrides.fclk_change_latency_us) {
+                       p->in_states->state_array[i].fclk_change_latency_us =
+                               dml2->config.bbox_overrides.fclk_change_latency_us;
+               }
        }
 
        /* DCFCLK stas values are project specific */
index 317f90776d972ec4a30785e5f08aecbb80125aab..fe15baa4bf094828ee9f74d8e104889e67500b7d 100644 (file)
@@ -139,6 +139,8 @@ struct dml2_soc_bbox_overrides {
        double urgent_latency_us;
        double sr_exit_latency_us;
        double sr_enter_plus_exit_latency_us;
+       double sr_exit_z8_time_us;
+       double sr_enter_plus_exit_z8_time_us;
        double dram_clock_change_latency_us;
        double fclk_change_latency_us;
        unsigned int dram_num_chan;