Skip to content

Commit b3f5f0c

Browse files
committed
drm/i915/vdsc: Add support for read/write PPS for 3rd DSC engine
With BMG each pipe has 3 DSC engines, so add bits to read/write the PPS registers for the 3rd DSC engine Signed-off-by: Ankit Nautiyal <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 3013e2e commit b3f5f0c

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

drivers/gpu/drm/i915/display/intel_vdsc.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -402,8 +402,10 @@ static void intel_dsc_get_pps_reg(const struct intel_crtc_state *crtc_state, int
402402

403403
pipe_dsc = is_pipe_dsc(crtc, cpu_transcoder);
404404

405-
if (dsc_reg_num >= 3)
405+
if (dsc_reg_num >= 4)
406406
MISSING_CASE(dsc_reg_num);
407+
if (dsc_reg_num >= 3)
408+
dsc_reg[2] = BMG_DSC2_PPS(pipe, pps);
407409
if (dsc_reg_num >= 2)
408410
dsc_reg[1] = pipe_dsc ? ICL_DSC1_PPS(pipe, pps) : DSCC_PPS(pps);
409411
if (dsc_reg_num >= 1)
@@ -415,7 +417,7 @@ static void intel_dsc_pps_write(const struct intel_crtc_state *crtc_state,
415417
{
416418
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
417419
struct drm_i915_private *i915 = to_i915(crtc->base.dev);
418-
i915_reg_t dsc_reg[2];
420+
i915_reg_t dsc_reg[3];
419421
int i, vdsc_per_pipe, dsc_reg_num;
420422

421423
vdsc_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state);
@@ -815,7 +817,7 @@ static u32 intel_dsc_pps_read(struct intel_crtc_state *crtc_state, int pps,
815817
{
816818
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
817819
struct drm_i915_private *i915 = to_i915(crtc->base.dev);
818-
i915_reg_t dsc_reg[2];
820+
i915_reg_t dsc_reg[3];
819821
int i, vdsc_per_pipe, dsc_reg_num;
820822
u32 val;
821823

drivers/gpu/drm/i915/display/intel_vdsc_regs.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,10 @@
5959
#define DSCC_PPS(pps) _MMIO(_DSCC_PPS_0 + ((pps) < 12 ? (pps) : (pps) + 12) * 4)
6060
#define _ICL_DSC0_PICTURE_PARAMETER_SET_0_PB 0x78270
6161
#define _ICL_DSC1_PICTURE_PARAMETER_SET_0_PB 0x78370
62+
#define _BMG_DSC2_PICTURE_PARAMETER_SET_0_PB 0x78970
6263
#define _ICL_DSC0_PICTURE_PARAMETER_SET_0_PC 0x78470
6364
#define _ICL_DSC1_PICTURE_PARAMETER_SET_0_PC 0x78570
65+
#define _BMG_DSC2_PICTURE_PARAMETER_SET_0_PC 0x78A70
6466
#define ICL_DSC0_PICTURE_PARAMETER_SET_0(pipe) _MMIO_PIPE((pipe) - PIPE_B, \
6567
_ICL_DSC0_PICTURE_PARAMETER_SET_0_PB, \
6668
_ICL_DSC0_PICTURE_PARAMETER_SET_0_PC)
@@ -73,8 +75,12 @@
7375
#define _ICL_DSC1_PPS_0(pipe) _PICK_EVEN((pipe) - PIPE_B, \
7476
_ICL_DSC1_PICTURE_PARAMETER_SET_0_PB, \
7577
_ICL_DSC1_PICTURE_PARAMETER_SET_0_PC)
78+
#define _BMG_DSC2_PPS_0(pipe) _PICK_EVEN((pipe) - PIPE_B, \
79+
_BMG_DSC2_PICTURE_PARAMETER_SET_0_PB, \
80+
_BMG_DSC2_PICTURE_PARAMETER_SET_0_PC)
7681
#define ICL_DSC0_PPS(pipe, pps) _MMIO(_ICL_DSC0_PPS_0(pipe) + ((pps) * 4))
7782
#define ICL_DSC1_PPS(pipe, pps) _MMIO(_ICL_DSC1_PPS_0(pipe) + ((pps) * 4))
83+
#define BMG_DSC2_PPS(pipe, pps) _MMIO(_BMG_DSC2_PPS_0(pipe) + ((pps) * 4))
7884

7985
/* PPS 0 */
8086
#define DSC_PPS0_NATIVE_422_ENABLE REG_BIT(23)

0 commit comments

Comments
 (0)