summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorImre Deak <imre.deak@intel.com>2026-01-14 19:22:21 +0300
committerImre Deak <imre.deak@intel.com>2026-01-15 21:19:02 +0300
commit57152a502ed2a4d8f0470321c9d482a76daa3cb9 (patch)
treec18decc63278330545f9d8c5b1e6c1fc88e578fb
parent611cadd5c02b04ac461a5dddf3070ce4c1094829 (diff)
downloadlinux-57152a502ed2a4d8f0470321c9d482a76daa3cb9.tar.xz
drm/i915/dsi: Track the detailed DSC slice configuration
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. Reviewed-by: Jouni Högander <jouni.hogander@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patch.msgid.link/20260114162232.92731-5-imre.deak@intel.com
-rw-r--r--drivers/gpu/drm/i915/display/intel_bios.c11
1 files 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 9b4428472831..8fcfdb2e1c74 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"
@@ -3578,12 +3579,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)))
@@ -3591,9 +3594,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,