drm/amd/display: [FW Promotion] Release 0.0.130.0
authorAnthony Koo <Anthony.Koo@amd.com>
Mon, 8 Aug 2022 03:38:56 +0000 (23:38 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 25 Aug 2022 17:19:29 +0000 (13:19 -0400)
- For SubVP add scaling factor to allow firmware to calculate
 accurate line to start programming

Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
Acked-by: Brian Chang <Brian.Chang@amd.com>
Signed-off-by: Anthony Koo <Anthony.Koo@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h

index d7f3619..829410a 100644 (file)
@@ -976,8 +976,16 @@ struct dmub_cmd_fw_assisted_mclk_switch_pipe_data_v2 {
                        uint16_t vtotal;
                        uint8_t main_pipe_index;
                        uint8_t phantom_pipe_index;
+                       /* Since the microschedule is calculated in terms of OTG lines,
+                        * include any scaling factors to make sure when we get accurate
+                        * conversion when programming MALL_START_LINE (which is in terms
+                        * of HUBP lines). If 4K is being downscaled to 1080p, scale factor
+                        * is 1/2 (numerator = 1, denominator = 2).
+                        */
+                       uint8_t scale_factor_numerator;
+                       uint8_t scale_factor_denominator;
                        uint8_t is_drr;
-                       uint8_t padding;
+                       uint8_t pad[2];
                } subvp_data;
 
                struct {
@@ -999,7 +1007,11 @@ struct dmub_cmd_fw_assisted_mclk_switch_pipe_data_v2 {
                } vblank_data;
        } pipe_config;
 
-       enum mclk_switch_mode mode;
+       /* - subvp_data in the union (pipe_config) takes up 27 bytes.
+        * - Make the "mode" field a uint8_t instead of enum so we only use 1 byte (only
+        *   for the DMCUB command, cast to enum once we populate the DMCUB subvp state).
+        */
+       uint8_t mode; // enum mclk_switch_mode
 };
 
 /**