Add tracking for the DSI DSC pipes-per-line and slices-per-stream value
in the slice config state and compute the current slices-per-line value
using this slice config state. The slices-per-line value used atm will
be removed by a follow-up change after converting all the places using
it to use the detailed slice config instead.

Signed-off-by: Imre Deak <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c 
b/drivers/gpu/drm/i915/display/intel_bios.c
index e69fac4f5bdfe..479c5f0158800 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -41,6 +41,7 @@
 #include "intel_display_utils.h"
 #include "intel_gmbus.h"
 #include "intel_rom.h"
+#include "intel_vdsc.h"
 
 #define _INTEL_BIOS_PRIVATE
 #include "intel_vbt_defs.h"
@@ -3519,12 +3520,14 @@ static void fill_dsc(struct intel_crtc_state 
*crtc_state,
         *
         * FIXME: split only when necessary
         */
+       crtc_state->dsc.slice_config.pipes_per_line = 1;
+
        if (dsc->slices_per_line & BIT(2)) {
                crtc_state->dsc.slice_config.streams_per_pipe = 2;
-               crtc_state->dsc.slice_count = 4;
+               crtc_state->dsc.slice_config.slices_per_stream = 2;
        } else if (dsc->slices_per_line & BIT(1)) {
                crtc_state->dsc.slice_config.streams_per_pipe = 2;
-               crtc_state->dsc.slice_count = 2;
+               crtc_state->dsc.slice_config.slices_per_stream = 1;
        } else {
                /* FIXME */
                if (!(dsc->slices_per_line & BIT(0)))
@@ -3532,9 +3535,11 @@ static void fill_dsc(struct intel_crtc_state *crtc_state,
                                    "VBT: Unsupported DSC slice count for 
DSI\n");
 
                crtc_state->dsc.slice_config.streams_per_pipe = 1;
-               crtc_state->dsc.slice_count = 1;
+               crtc_state->dsc.slice_config.slices_per_stream = 1;
        }
 
+       crtc_state->dsc.slice_count = 
intel_dsc_line_slice_count(&crtc_state->dsc.slice_config);
+
        if (crtc_state->hw.adjusted_mode.crtc_hdisplay %
            crtc_state->dsc.slice_count != 0)
                drm_dbg_kms(display->drm,
-- 
2.49.1

Reply via email to