Message ID | 20250227112240.278827-1-suraj.kandpal@intel.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm/i915/vdsc: intel_display conversions | expand |
On Thu, 27 Feb 2025, Suraj Kandpal <suraj.kandpal@intel.com> wrote: > intel_display conversions for vdsc in an effort to move away > from drm_i915_private. > While at it use display->platform.xx. Please update with -#include "i915_drv.h" +#include "i915_utils.h" and you get Reviewed-by: Jani Nikula <jani.nikula@intel.com> BR, Jani. > > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com> > --- > drivers/gpu/drm/i915/display/intel_vdsc.c | 180 +++++++++++----------- > 1 file changed, 87 insertions(+), 93 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c > index 6e7151346382..35d558ca98db 100644 > --- a/drivers/gpu/drm/i915/display/intel_vdsc.c > +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c > @@ -22,14 +22,13 @@ > > bool intel_dsc_source_support(const struct intel_crtc_state *crtc_state) > { > - const struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > + struct intel_display *display = to_intel_display(crtc_state); > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; > > - if (!HAS_DSC(i915)) > + if (!HAS_DSC(display)) > return false; > > - if (DISPLAY_VER(i915) == 11 && cpu_transcoder == TRANSCODER_A) > + if (DISPLAY_VER(display) == 11 && cpu_transcoder == TRANSCODER_A) > return false; > > return true; > @@ -37,9 +36,9 @@ bool intel_dsc_source_support(const struct intel_crtc_state *crtc_state) > > static bool is_pipe_dsc(struct intel_crtc *crtc, enum transcoder cpu_transcoder) > { > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > + struct intel_display *display = to_intel_display(crtc); > > - if (DISPLAY_VER(i915) >= 12) > + if (DISPLAY_VER(display) >= 12) > return true; > > if (cpu_transcoder == TRANSCODER_EDP || > @@ -48,7 +47,7 @@ static bool is_pipe_dsc(struct intel_crtc *crtc, enum transcoder cpu_transcoder) > return false; > > /* There's no pipe A DSC engine on ICL */ > - drm_WARN_ON(&i915->drm, crtc->pipe == PIPE_A); > + drm_WARN_ON(display->drm, crtc->pipe == PIPE_A); > > return true; > } > @@ -262,8 +261,7 @@ static int intel_dsc_slice_dimensions_valid(struct intel_crtc_state *pipe_config > > int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) > { > - struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc); > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > + struct intel_display *display = to_intel_display(pipe_config); > struct drm_dsc_config *vdsc_cfg = &pipe_config->dsc.config; > u16 compressed_bpp = fxp_q4_to_int(pipe_config->dsc.compressed_bpp_x16); > int err; > @@ -276,7 +274,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) > err = intel_dsc_slice_dimensions_valid(pipe_config, vdsc_cfg); > > if (err) { > - drm_dbg_kms(&dev_priv->drm, "Slice dimension requirements not met\n"); > + drm_dbg_kms(display->drm, "Slice dimension requirements not met\n"); > return err; > } > > @@ -287,7 +285,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) > vdsc_cfg->convert_rgb = pipe_config->output_format != INTEL_OUTPUT_FORMAT_YCBCR420 && > pipe_config->output_format != INTEL_OUTPUT_FORMAT_YCBCR444; > > - if (DISPLAY_VER(dev_priv) >= 14 && > + if (DISPLAY_VER(display) >= 14 && > pipe_config->output_format == INTEL_OUTPUT_FORMAT_YCBCR420) > vdsc_cfg->native_420 = true; > /* We do not support YcBCr422 as of now */ > @@ -308,7 +306,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) > vdsc_cfg->bits_per_component = pipe_config->pipe_bpp / 3; > > if (vdsc_cfg->bits_per_component < 8) { > - drm_dbg_kms(&dev_priv->drm, "DSC bpc requirements not met bpc: %d\n", > + drm_dbg_kms(display->drm, "DSC bpc requirements not met bpc: %d\n", > vdsc_cfg->bits_per_component); > return -EINVAL; > } > @@ -320,7 +318,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) > * upto uncompressed bpp-1, hence add calculations for all the rc > * parameters > */ > - if (DISPLAY_VER(dev_priv) >= 13) { > + if (DISPLAY_VER(display) >= 13) { > calculate_rc_params(vdsc_cfg); > } else { > if ((compressed_bpp == 8 || > @@ -356,7 +354,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) > enum intel_display_power_domain > intel_dsc_power_domain(struct intel_crtc *crtc, enum transcoder cpu_transcoder) > { > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > + struct intel_display *display = to_intel_display(crtc); > enum pipe pipe = crtc->pipe; > > /* > @@ -370,7 +368,8 @@ intel_dsc_power_domain(struct intel_crtc *crtc, enum transcoder cpu_transcoder) > * the pipe in use. Hence another reference on the pipe power domain > * will suffice. (Except no VDSC/joining on ICL pipe A.) > */ > - if (DISPLAY_VER(i915) == 12 && !IS_ROCKETLAKE(i915) && pipe == PIPE_A) > + if (DISPLAY_VER(display) == 12 && !display->platform.rocketlake && > + pipe == PIPE_A) > return POWER_DOMAIN_TRANSCODER_VDSC_PW2; > else if (is_pipe_dsc(crtc, cpu_transcoder)) > return POWER_DOMAIN_PIPE(pipe); > @@ -416,26 +415,25 @@ static void intel_dsc_get_pps_reg(const struct intel_crtc_state *crtc_state, int > static void intel_dsc_pps_write(const struct intel_crtc_state *crtc_state, > int pps, u32 pps_val) > { > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > + struct intel_display *display = to_intel_display(crtc_state); > i915_reg_t dsc_reg[3]; > int i, vdsc_per_pipe, dsc_reg_num; > > vdsc_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); > dsc_reg_num = min_t(int, ARRAY_SIZE(dsc_reg), vdsc_per_pipe); > > - drm_WARN_ON_ONCE(&i915->drm, dsc_reg_num < vdsc_per_pipe); > + drm_WARN_ON_ONCE(display->drm, dsc_reg_num < vdsc_per_pipe); > > intel_dsc_get_pps_reg(crtc_state, pps, dsc_reg, dsc_reg_num); > > for (i = 0; i < dsc_reg_num; i++) > - intel_de_write(i915, dsc_reg[i], pps_val); > + intel_de_write(display, dsc_reg[i], pps_val); > } > > static void intel_dsc_pps_configure(const struct intel_crtc_state *crtc_state) > { > + struct intel_display *display = to_intel_display(crtc_state); > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > const struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; > enum pipe pipe = crtc->pipe; > @@ -529,7 +527,7 @@ static void intel_dsc_pps_configure(const struct intel_crtc_state *crtc_state) > vdsc_cfg->slice_height); > intel_dsc_pps_write(crtc_state, 16, pps_val); > > - if (DISPLAY_VER(dev_priv) >= 14) { > + if (DISPLAY_VER(display) >= 14) { > /* PPS 17 */ > pps_val = DSC_PPS17_SL_BPG_OFFSET(vdsc_cfg->second_line_bpg_offset); > intel_dsc_pps_write(crtc_state, 17, pps_val); > @@ -547,44 +545,44 @@ static void intel_dsc_pps_configure(const struct intel_crtc_state *crtc_state) > (u32)(vdsc_cfg->rc_buf_thresh[i] << > BITS_PER_BYTE * (i % 4)); > if (!is_pipe_dsc(crtc, cpu_transcoder)) { > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_0, > + intel_de_write(display, DSCA_RC_BUF_THRESH_0, > rc_buf_thresh_dword[0]); > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_0_UDW, > + intel_de_write(display, DSCA_RC_BUF_THRESH_0_UDW, > rc_buf_thresh_dword[1]); > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_1, > + intel_de_write(display, DSCA_RC_BUF_THRESH_1, > rc_buf_thresh_dword[2]); > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_1_UDW, > + intel_de_write(display, DSCA_RC_BUF_THRESH_1_UDW, > rc_buf_thresh_dword[3]); > if (vdsc_instances_per_pipe > 1) { > - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_0, > + intel_de_write(display, DSCC_RC_BUF_THRESH_0, > rc_buf_thresh_dword[0]); > - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_0_UDW, > + intel_de_write(display, DSCC_RC_BUF_THRESH_0_UDW, > rc_buf_thresh_dword[1]); > - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_1, > + intel_de_write(display, DSCC_RC_BUF_THRESH_1, > rc_buf_thresh_dword[2]); > - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_1_UDW, > + intel_de_write(display, DSCC_RC_BUF_THRESH_1_UDW, > rc_buf_thresh_dword[3]); > } > } else { > - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_0(pipe), > + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_0(pipe), > rc_buf_thresh_dword[0]); > - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_0_UDW(pipe), > + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_0_UDW(pipe), > rc_buf_thresh_dword[1]); > - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_1(pipe), > + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_1(pipe), > rc_buf_thresh_dword[2]); > - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_1_UDW(pipe), > + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_1_UDW(pipe), > rc_buf_thresh_dword[3]); > if (vdsc_instances_per_pipe > 1) { > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_BUF_THRESH_0(pipe), > rc_buf_thresh_dword[0]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_BUF_THRESH_0_UDW(pipe), > rc_buf_thresh_dword[1]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_BUF_THRESH_1(pipe), > rc_buf_thresh_dword[2]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_BUF_THRESH_1_UDW(pipe), > rc_buf_thresh_dword[3]); > } > @@ -601,88 +599,88 @@ static void intel_dsc_pps_configure(const struct intel_crtc_state *crtc_state) > (vdsc_cfg->rc_range_params[i].range_min_qp << > RC_MIN_QP_SHIFT)) << 16 * (i % 2)); > if (!is_pipe_dsc(crtc, cpu_transcoder)) { > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_0, > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_0, > rc_range_params_dword[0]); > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_0_UDW, > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_0_UDW, > rc_range_params_dword[1]); > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_1, > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_1, > rc_range_params_dword[2]); > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_1_UDW, > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_1_UDW, > rc_range_params_dword[3]); > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_2, > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_2, > rc_range_params_dword[4]); > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_2_UDW, > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_2_UDW, > rc_range_params_dword[5]); > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_3, > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_3, > rc_range_params_dword[6]); > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_3_UDW, > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_3_UDW, > rc_range_params_dword[7]); > if (vdsc_instances_per_pipe > 1) { > - intel_de_write(dev_priv, DSCC_RC_RANGE_PARAMETERS_0, > + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_0, > rc_range_params_dword[0]); > - intel_de_write(dev_priv, > + intel_de_write(display, > DSCC_RC_RANGE_PARAMETERS_0_UDW, > rc_range_params_dword[1]); > - intel_de_write(dev_priv, DSCC_RC_RANGE_PARAMETERS_1, > + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_1, > rc_range_params_dword[2]); > - intel_de_write(dev_priv, > + intel_de_write(display, > DSCC_RC_RANGE_PARAMETERS_1_UDW, > rc_range_params_dword[3]); > - intel_de_write(dev_priv, DSCC_RC_RANGE_PARAMETERS_2, > + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_2, > rc_range_params_dword[4]); > - intel_de_write(dev_priv, > + intel_de_write(display, > DSCC_RC_RANGE_PARAMETERS_2_UDW, > rc_range_params_dword[5]); > - intel_de_write(dev_priv, DSCC_RC_RANGE_PARAMETERS_3, > + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_3, > rc_range_params_dword[6]); > - intel_de_write(dev_priv, > + intel_de_write(display, > DSCC_RC_RANGE_PARAMETERS_3_UDW, > rc_range_params_dword[7]); > } > } else { > - intel_de_write(dev_priv, ICL_DSC0_RC_RANGE_PARAMETERS_0(pipe), > + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_0(pipe), > rc_range_params_dword[0]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC0_RC_RANGE_PARAMETERS_0_UDW(pipe), > rc_range_params_dword[1]); > - intel_de_write(dev_priv, ICL_DSC0_RC_RANGE_PARAMETERS_1(pipe), > + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_1(pipe), > rc_range_params_dword[2]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC0_RC_RANGE_PARAMETERS_1_UDW(pipe), > rc_range_params_dword[3]); > - intel_de_write(dev_priv, ICL_DSC0_RC_RANGE_PARAMETERS_2(pipe), > + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_2(pipe), > rc_range_params_dword[4]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC0_RC_RANGE_PARAMETERS_2_UDW(pipe), > rc_range_params_dword[5]); > - intel_de_write(dev_priv, ICL_DSC0_RC_RANGE_PARAMETERS_3(pipe), > + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_3(pipe), > rc_range_params_dword[6]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC0_RC_RANGE_PARAMETERS_3_UDW(pipe), > rc_range_params_dword[7]); > if (vdsc_instances_per_pipe > 1) { > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_RANGE_PARAMETERS_0(pipe), > rc_range_params_dword[0]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_RANGE_PARAMETERS_0_UDW(pipe), > rc_range_params_dword[1]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_RANGE_PARAMETERS_1(pipe), > rc_range_params_dword[2]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_RANGE_PARAMETERS_1_UDW(pipe), > rc_range_params_dword[3]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_RANGE_PARAMETERS_2(pipe), > rc_range_params_dword[4]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_RANGE_PARAMETERS_2_UDW(pipe), > rc_range_params_dword[5]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_RANGE_PARAMETERS_3(pipe), > rc_range_params_dword[6]); > - intel_de_write(dev_priv, > + intel_de_write(display, > ICL_DSC1_RC_RANGE_PARAMETERS_3_UDW(pipe), > rc_range_params_dword[7]); > } > @@ -746,8 +744,8 @@ static i915_reg_t dss_ctl2_reg(struct intel_crtc *crtc, enum transcoder cpu_tran > > void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state) > { > + struct intel_display *display = to_intel_display(crtc_state); > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > u32 dss_ctl1_val = 0; > > if (crtc_state->joiner_pipes && !crtc_state->dsc.compression_enable) { > @@ -756,14 +754,15 @@ void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state) > else > dss_ctl1_val |= UNCOMPRESSED_JOINER_PRIMARY; > > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val); > + intel_de_write(display, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), > + dss_ctl1_val); > } > } > > void intel_dsc_enable(const struct intel_crtc_state *crtc_state) > { > + struct intel_display *display = to_intel_display(crtc_state); > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > u32 dss_ctl1_val = 0; > u32 dss_ctl2_val = 0; > int vdsc_instances_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); > @@ -796,28 +795,27 @@ void intel_dsc_enable(const struct intel_crtc_state *crtc_state) > if (intel_crtc_is_bigjoiner_primary(crtc_state)) > dss_ctl1_val |= PRIMARY_BIG_JOINER_ENABLE; > } > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val); > - intel_de_write(dev_priv, dss_ctl2_reg(crtc, crtc_state->cpu_transcoder), dss_ctl2_val); > + intel_de_write(display, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val); > + intel_de_write(display, dss_ctl2_reg(crtc, crtc_state->cpu_transcoder), dss_ctl2_val); > } > > void intel_dsc_disable(const struct intel_crtc_state *old_crtc_state) > { > + struct intel_display *display = to_intel_display(old_crtc_state); > struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->uapi.crtc); > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > > /* Disable only if either of them is enabled */ > if (old_crtc_state->dsc.compression_enable || > old_crtc_state->joiner_pipes) { > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, old_crtc_state->cpu_transcoder), 0); > - intel_de_write(dev_priv, dss_ctl2_reg(crtc, old_crtc_state->cpu_transcoder), 0); > + intel_de_write(display, dss_ctl1_reg(crtc, old_crtc_state->cpu_transcoder), 0); > + intel_de_write(display, dss_ctl2_reg(crtc, old_crtc_state->cpu_transcoder), 0); > } > } > > static u32 intel_dsc_pps_read(struct intel_crtc_state *crtc_state, int pps, > bool *all_equal) > { > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > + struct intel_display *display = to_intel_display(crtc_state); > i915_reg_t dsc_reg[3]; > int i, vdsc_per_pipe, dsc_reg_num; > u32 val; > @@ -825,16 +823,16 @@ static u32 intel_dsc_pps_read(struct intel_crtc_state *crtc_state, int pps, > vdsc_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); > dsc_reg_num = min_t(int, ARRAY_SIZE(dsc_reg), vdsc_per_pipe); > > - drm_WARN_ON_ONCE(&i915->drm, dsc_reg_num < vdsc_per_pipe); > + drm_WARN_ON_ONCE(display->drm, dsc_reg_num < vdsc_per_pipe); > > intel_dsc_get_pps_reg(crtc_state, pps, dsc_reg, dsc_reg_num); > > *all_equal = true; > > - val = intel_de_read(i915, dsc_reg[0]); > + val = intel_de_read(display, dsc_reg[0]); > > for (i = 1; i < dsc_reg_num; i++) { > - if (intel_de_read(i915, dsc_reg[i]) != val) { > + if (intel_de_read(display, dsc_reg[i]) != val) { > *all_equal = false; > break; > } > @@ -845,22 +843,20 @@ static u32 intel_dsc_pps_read(struct intel_crtc_state *crtc_state, int pps, > > static u32 intel_dsc_pps_read_and_verify(struct intel_crtc_state *crtc_state, int pps) > { > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > + struct intel_display *display = to_intel_display(crtc_state); > u32 val; > bool all_equal; > > val = intel_dsc_pps_read(crtc_state, pps, &all_equal); > - drm_WARN_ON(&i915->drm, !all_equal); > + drm_WARN_ON(display->drm, !all_equal); > > return val; > } > > static void intel_dsc_get_pps_config(struct intel_crtc_state *crtc_state) > { > + struct intel_display *display = to_intel_display(crtc_state); > struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > int num_vdsc_instances = intel_dsc_get_num_vdsc_instances(crtc_state); > u32 pps_temp; > > @@ -946,7 +942,7 @@ static void intel_dsc_get_pps_config(struct intel_crtc_state *crtc_state) > > vdsc_cfg->slice_chunk_size = REG_FIELD_GET(DSC_PPS16_SLICE_CHUNK_SIZE_MASK, pps_temp); > > - if (DISPLAY_VER(i915) >= 14) { > + if (DISPLAY_VER(display) >= 14) { > /* PPS 17 */ > pps_temp = intel_dsc_pps_read_and_verify(crtc_state, 17); > > @@ -964,7 +960,6 @@ void intel_dsc_get_config(struct intel_crtc_state *crtc_state) > { > struct intel_display *display = to_intel_display(crtc_state); > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; > enum intel_display_power_domain power_domain; > intel_wakeref_t wakeref; > @@ -979,8 +974,8 @@ void intel_dsc_get_config(struct intel_crtc_state *crtc_state) > if (!wakeref) > return; > > - dss_ctl1 = intel_de_read(dev_priv, dss_ctl1_reg(crtc, cpu_transcoder)); > - dss_ctl2 = intel_de_read(dev_priv, dss_ctl2_reg(crtc, cpu_transcoder)); > + dss_ctl1 = intel_de_read(display, dss_ctl1_reg(crtc, cpu_transcoder)); > + dss_ctl2 = intel_de_read(display, dss_ctl2_reg(crtc, cpu_transcoder)); > > crtc_state->dsc.compression_enable = dss_ctl2 & VDSC0_ENABLE; > if (!crtc_state->dsc.compression_enable) > @@ -1020,8 +1015,7 @@ void intel_vdsc_state_dump(struct drm_printer *p, int indent, > > int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state) > { > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct intel_display *display = to_intel_display(crtc); > + struct intel_display *display = to_intel_display(crtc_state); > int num_vdsc_instances = intel_dsc_get_num_vdsc_instances(crtc_state); > int min_cdclk;
> -----Original Message----- > From: Nikula, Jani <jani.nikula@intel.com> > Sent: Thursday, February 27, 2025 5:47 PM > To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-xe@lists.freedesktop.org; > intel-gfx@lists.freedesktop.org > Cc: Kandpal, Suraj <suraj.kandpal@intel.com> > Subject: Re: [PATCH] drm/i915/vdsc: intel_display conversions > > On Thu, 27 Feb 2025, Suraj Kandpal <suraj.kandpal@intel.com> wrote: > > intel_display conversions for vdsc in an effort to move away from > > drm_i915_private. > > While at it use display->platform.xx. > > Please update with > > -#include "i915_drv.h" > +#include "i915_utils.h" > > and you get > > Reviewed-by: Jani Nikula <jani.nikula@intel.com> Thanks for the reviews pushed to drm-intel-next with the above mentioned changes Regards, Suraj Kandpal > > > BR, > Jani. > > > > > > > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com> > > --- > > drivers/gpu/drm/i915/display/intel_vdsc.c | 180 > > +++++++++++----------- > > 1 file changed, 87 insertions(+), 93 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c > > b/drivers/gpu/drm/i915/display/intel_vdsc.c > > index 6e7151346382..35d558ca98db 100644 > > --- a/drivers/gpu/drm/i915/display/intel_vdsc.c > > +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c > > @@ -22,14 +22,13 @@ > > > > bool intel_dsc_source_support(const struct intel_crtc_state > > *crtc_state) { > > - const struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > > + struct intel_display *display = to_intel_display(crtc_state); > > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; > > > > - if (!HAS_DSC(i915)) > > + if (!HAS_DSC(display)) > > return false; > > > > - if (DISPLAY_VER(i915) == 11 && cpu_transcoder == TRANSCODER_A) > > + if (DISPLAY_VER(display) == 11 && cpu_transcoder == TRANSCODER_A) > > return false; > > > > return true; > > @@ -37,9 +36,9 @@ bool intel_dsc_source_support(const struct > > intel_crtc_state *crtc_state) > > > > static bool is_pipe_dsc(struct intel_crtc *crtc, enum transcoder > > cpu_transcoder) { > > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > > + struct intel_display *display = to_intel_display(crtc); > > > > - if (DISPLAY_VER(i915) >= 12) > > + if (DISPLAY_VER(display) >= 12) > > return true; > > > > if (cpu_transcoder == TRANSCODER_EDP || @@ -48,7 +47,7 @@ static > > bool is_pipe_dsc(struct intel_crtc *crtc, enum transcoder cpu_transcoder) > > return false; > > > > /* There's no pipe A DSC engine on ICL */ > > - drm_WARN_ON(&i915->drm, crtc->pipe == PIPE_A); > > + drm_WARN_ON(display->drm, crtc->pipe == PIPE_A); > > > > return true; > > } > > @@ -262,8 +261,7 @@ static int intel_dsc_slice_dimensions_valid(struct > > intel_crtc_state *pipe_config > > > > int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) { > > - struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc); > > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > > + struct intel_display *display = to_intel_display(pipe_config); > > struct drm_dsc_config *vdsc_cfg = &pipe_config->dsc.config; > > u16 compressed_bpp = fxp_q4_to_int(pipe_config- > >dsc.compressed_bpp_x16); > > int err; > > @@ -276,7 +274,7 @@ int intel_dsc_compute_params(struct intel_crtc_state > *pipe_config) > > err = intel_dsc_slice_dimensions_valid(pipe_config, vdsc_cfg); > > > > if (err) { > > - drm_dbg_kms(&dev_priv->drm, "Slice dimension > requirements not met\n"); > > + drm_dbg_kms(display->drm, "Slice dimension requirements > not > > +met\n"); > > return err; > > } > > > > @@ -287,7 +285,7 @@ int intel_dsc_compute_params(struct intel_crtc_state > *pipe_config) > > vdsc_cfg->convert_rgb = pipe_config->output_format != > INTEL_OUTPUT_FORMAT_YCBCR420 && > > pipe_config->output_format != > INTEL_OUTPUT_FORMAT_YCBCR444; > > > > - if (DISPLAY_VER(dev_priv) >= 14 && > > + if (DISPLAY_VER(display) >= 14 && > > pipe_config->output_format == > INTEL_OUTPUT_FORMAT_YCBCR420) > > vdsc_cfg->native_420 = true; > > /* We do not support YcBCr422 as of now */ @@ -308,7 +306,7 @@ int > > intel_dsc_compute_params(struct intel_crtc_state *pipe_config) > > vdsc_cfg->bits_per_component = pipe_config->pipe_bpp / 3; > > > > if (vdsc_cfg->bits_per_component < 8) { > > - drm_dbg_kms(&dev_priv->drm, "DSC bpc requirements not > met bpc: %d\n", > > + drm_dbg_kms(display->drm, "DSC bpc requirements not met > bpc: %d\n", > > vdsc_cfg->bits_per_component); > > return -EINVAL; > > } > > @@ -320,7 +318,7 @@ int intel_dsc_compute_params(struct intel_crtc_state > *pipe_config) > > * upto uncompressed bpp-1, hence add calculations for all the rc > > * parameters > > */ > > - if (DISPLAY_VER(dev_priv) >= 13) { > > + if (DISPLAY_VER(display) >= 13) { > > calculate_rc_params(vdsc_cfg); > > } else { > > if ((compressed_bpp == 8 || > > @@ -356,7 +354,7 @@ int intel_dsc_compute_params(struct > > intel_crtc_state *pipe_config) enum intel_display_power_domain > > intel_dsc_power_domain(struct intel_crtc *crtc, enum transcoder > > cpu_transcoder) { > > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > > + struct intel_display *display = to_intel_display(crtc); > > enum pipe pipe = crtc->pipe; > > > > /* > > @@ -370,7 +368,8 @@ intel_dsc_power_domain(struct intel_crtc *crtc, > enum transcoder cpu_transcoder) > > * the pipe in use. Hence another reference on the pipe power domain > > * will suffice. (Except no VDSC/joining on ICL pipe A.) > > */ > > - if (DISPLAY_VER(i915) == 12 && !IS_ROCKETLAKE(i915) && pipe == > PIPE_A) > > + if (DISPLAY_VER(display) == 12 && !display->platform.rocketlake && > > + pipe == PIPE_A) > > return POWER_DOMAIN_TRANSCODER_VDSC_PW2; > > else if (is_pipe_dsc(crtc, cpu_transcoder)) > > return POWER_DOMAIN_PIPE(pipe); > > @@ -416,26 +415,25 @@ static void intel_dsc_get_pps_reg(const struct > > intel_crtc_state *crtc_state, int static void intel_dsc_pps_write(const struct > intel_crtc_state *crtc_state, > > int pps, u32 pps_val) > > { > > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > > + struct intel_display *display = to_intel_display(crtc_state); > > i915_reg_t dsc_reg[3]; > > int i, vdsc_per_pipe, dsc_reg_num; > > > > vdsc_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); > > dsc_reg_num = min_t(int, ARRAY_SIZE(dsc_reg), vdsc_per_pipe); > > > > - drm_WARN_ON_ONCE(&i915->drm, dsc_reg_num < vdsc_per_pipe); > > + drm_WARN_ON_ONCE(display->drm, dsc_reg_num < vdsc_per_pipe); > > > > intel_dsc_get_pps_reg(crtc_state, pps, dsc_reg, dsc_reg_num); > > > > for (i = 0; i < dsc_reg_num; i++) > > - intel_de_write(i915, dsc_reg[i], pps_val); > > + intel_de_write(display, dsc_reg[i], pps_val); > > } > > > > static void intel_dsc_pps_configure(const struct intel_crtc_state > > *crtc_state) { > > + struct intel_display *display = to_intel_display(crtc_state); > > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > > const struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; > > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; > > enum pipe pipe = crtc->pipe; > > @@ -529,7 +527,7 @@ static void intel_dsc_pps_configure(const struct > intel_crtc_state *crtc_state) > > vdsc_cfg->slice_height); > > intel_dsc_pps_write(crtc_state, 16, pps_val); > > > > - if (DISPLAY_VER(dev_priv) >= 14) { > > + if (DISPLAY_VER(display) >= 14) { > > /* PPS 17 */ > > pps_val = DSC_PPS17_SL_BPG_OFFSET(vdsc_cfg- > >second_line_bpg_offset); > > intel_dsc_pps_write(crtc_state, 17, pps_val); @@ -547,44 > +545,44 @@ > > static void intel_dsc_pps_configure(const struct intel_crtc_state *crtc_state) > > (u32)(vdsc_cfg->rc_buf_thresh[i] << > > BITS_PER_BYTE * (i % 4)); > > if (!is_pipe_dsc(crtc, cpu_transcoder)) { > > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_0, > > + intel_de_write(display, DSCA_RC_BUF_THRESH_0, > > rc_buf_thresh_dword[0]); > > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_0_UDW, > > + intel_de_write(display, DSCA_RC_BUF_THRESH_0_UDW, > > rc_buf_thresh_dword[1]); > > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_1, > > + intel_de_write(display, DSCA_RC_BUF_THRESH_1, > > rc_buf_thresh_dword[2]); > > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_1_UDW, > > + intel_de_write(display, DSCA_RC_BUF_THRESH_1_UDW, > > rc_buf_thresh_dword[3]); > > if (vdsc_instances_per_pipe > 1) { > > - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_0, > > + intel_de_write(display, DSCC_RC_BUF_THRESH_0, > > rc_buf_thresh_dword[0]); > > - intel_de_write(dev_priv, > DSCC_RC_BUF_THRESH_0_UDW, > > + intel_de_write(display, > DSCC_RC_BUF_THRESH_0_UDW, > > rc_buf_thresh_dword[1]); > > - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_1, > > + intel_de_write(display, DSCC_RC_BUF_THRESH_1, > > rc_buf_thresh_dword[2]); > > - intel_de_write(dev_priv, > DSCC_RC_BUF_THRESH_1_UDW, > > + intel_de_write(display, > DSCC_RC_BUF_THRESH_1_UDW, > > rc_buf_thresh_dword[3]); > > } > > } else { > > - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_0(pipe), > > + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_0(pipe), > > rc_buf_thresh_dword[0]); > > - intel_de_write(dev_priv, > ICL_DSC0_RC_BUF_THRESH_0_UDW(pipe), > > + intel_de_write(display, > ICL_DSC0_RC_BUF_THRESH_0_UDW(pipe), > > rc_buf_thresh_dword[1]); > > - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_1(pipe), > > + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_1(pipe), > > rc_buf_thresh_dword[2]); > > - intel_de_write(dev_priv, > ICL_DSC0_RC_BUF_THRESH_1_UDW(pipe), > > + intel_de_write(display, > ICL_DSC0_RC_BUF_THRESH_1_UDW(pipe), > > rc_buf_thresh_dword[3]); > > if (vdsc_instances_per_pipe > 1) { > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > ICL_DSC1_RC_BUF_THRESH_0(pipe), > > rc_buf_thresh_dword[0]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > ICL_DSC1_RC_BUF_THRESH_0_UDW(pipe), > > rc_buf_thresh_dword[1]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > ICL_DSC1_RC_BUF_THRESH_1(pipe), > > rc_buf_thresh_dword[2]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > ICL_DSC1_RC_BUF_THRESH_1_UDW(pipe), > > rc_buf_thresh_dword[3]); > > } > > @@ -601,88 +599,88 @@ static void intel_dsc_pps_configure(const struct > intel_crtc_state *crtc_state) > > (vdsc_cfg->rc_range_params[i].range_min_qp << > > RC_MIN_QP_SHIFT)) << 16 * (i % 2)); > > if (!is_pipe_dsc(crtc, cpu_transcoder)) { > > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_0, > > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_0, > > rc_range_params_dword[0]); > > - intel_de_write(dev_priv, > DSCA_RC_RANGE_PARAMETERS_0_UDW, > > + intel_de_write(display, > DSCA_RC_RANGE_PARAMETERS_0_UDW, > > rc_range_params_dword[1]); > > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_1, > > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_1, > > rc_range_params_dword[2]); > > - intel_de_write(dev_priv, > DSCA_RC_RANGE_PARAMETERS_1_UDW, > > + intel_de_write(display, > DSCA_RC_RANGE_PARAMETERS_1_UDW, > > rc_range_params_dword[3]); > > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_2, > > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_2, > > rc_range_params_dword[4]); > > - intel_de_write(dev_priv, > DSCA_RC_RANGE_PARAMETERS_2_UDW, > > + intel_de_write(display, > DSCA_RC_RANGE_PARAMETERS_2_UDW, > > rc_range_params_dword[5]); > > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_3, > > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_3, > > rc_range_params_dword[6]); > > - intel_de_write(dev_priv, > DSCA_RC_RANGE_PARAMETERS_3_UDW, > > + intel_de_write(display, > DSCA_RC_RANGE_PARAMETERS_3_UDW, > > rc_range_params_dword[7]); > > if (vdsc_instances_per_pipe > 1) { > > - intel_de_write(dev_priv, > DSCC_RC_RANGE_PARAMETERS_0, > > + intel_de_write(display, > DSCC_RC_RANGE_PARAMETERS_0, > > rc_range_params_dword[0]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > DSCC_RC_RANGE_PARAMETERS_0_UDW, > > rc_range_params_dword[1]); > > - intel_de_write(dev_priv, > DSCC_RC_RANGE_PARAMETERS_1, > > + intel_de_write(display, > DSCC_RC_RANGE_PARAMETERS_1, > > rc_range_params_dword[2]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > DSCC_RC_RANGE_PARAMETERS_1_UDW, > > rc_range_params_dword[3]); > > - intel_de_write(dev_priv, > DSCC_RC_RANGE_PARAMETERS_2, > > + intel_de_write(display, > DSCC_RC_RANGE_PARAMETERS_2, > > rc_range_params_dword[4]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > DSCC_RC_RANGE_PARAMETERS_2_UDW, > > rc_range_params_dword[5]); > > - intel_de_write(dev_priv, > DSCC_RC_RANGE_PARAMETERS_3, > > + intel_de_write(display, > DSCC_RC_RANGE_PARAMETERS_3, > > rc_range_params_dword[6]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > DSCC_RC_RANGE_PARAMETERS_3_UDW, > > rc_range_params_dword[7]); > > } > > } else { > > - intel_de_write(dev_priv, > ICL_DSC0_RC_RANGE_PARAMETERS_0(pipe), > > + intel_de_write(display, > ICL_DSC0_RC_RANGE_PARAMETERS_0(pipe), > > rc_range_params_dword[0]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC0_RC_RANGE_PARAMETERS_0_UDW(pipe), > > rc_range_params_dword[1]); > > - intel_de_write(dev_priv, > ICL_DSC0_RC_RANGE_PARAMETERS_1(pipe), > > + intel_de_write(display, > ICL_DSC0_RC_RANGE_PARAMETERS_1(pipe), > > rc_range_params_dword[2]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC0_RC_RANGE_PARAMETERS_1_UDW(pipe), > > rc_range_params_dword[3]); > > - intel_de_write(dev_priv, > ICL_DSC0_RC_RANGE_PARAMETERS_2(pipe), > > + intel_de_write(display, > ICL_DSC0_RC_RANGE_PARAMETERS_2(pipe), > > rc_range_params_dword[4]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC0_RC_RANGE_PARAMETERS_2_UDW(pipe), > > rc_range_params_dword[5]); > > - intel_de_write(dev_priv, > ICL_DSC0_RC_RANGE_PARAMETERS_3(pipe), > > + intel_de_write(display, > ICL_DSC0_RC_RANGE_PARAMETERS_3(pipe), > > rc_range_params_dword[6]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC0_RC_RANGE_PARAMETERS_3_UDW(pipe), > > rc_range_params_dword[7]); > > if (vdsc_instances_per_pipe > 1) { > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC1_RC_RANGE_PARAMETERS_0(pipe), > > rc_range_params_dword[0]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC1_RC_RANGE_PARAMETERS_0_UDW(pipe), > > rc_range_params_dword[1]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC1_RC_RANGE_PARAMETERS_1(pipe), > > rc_range_params_dword[2]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC1_RC_RANGE_PARAMETERS_1_UDW(pipe), > > rc_range_params_dword[3]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC1_RC_RANGE_PARAMETERS_2(pipe), > > rc_range_params_dword[4]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC1_RC_RANGE_PARAMETERS_2_UDW(pipe), > > rc_range_params_dword[5]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC1_RC_RANGE_PARAMETERS_3(pipe), > > rc_range_params_dword[6]); > > - intel_de_write(dev_priv, > > + intel_de_write(display, > > > ICL_DSC1_RC_RANGE_PARAMETERS_3_UDW(pipe), > > rc_range_params_dword[7]); > > } > > @@ -746,8 +744,8 @@ static i915_reg_t dss_ctl2_reg(struct intel_crtc > > *crtc, enum transcoder cpu_tran > > > > void intel_uncompressed_joiner_enable(const struct intel_crtc_state > > *crtc_state) { > > + struct intel_display *display = to_intel_display(crtc_state); > > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > > u32 dss_ctl1_val = 0; > > > > if (crtc_state->joiner_pipes && !crtc_state->dsc.compression_enable) > > { @@ -756,14 +754,15 @@ void intel_uncompressed_joiner_enable(const > struct intel_crtc_state *crtc_state) > > else > > dss_ctl1_val |= UNCOMPRESSED_JOINER_PRIMARY; > > > > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state- > >cpu_transcoder), dss_ctl1_val); > > + intel_de_write(display, dss_ctl1_reg(crtc, crtc_state- > >cpu_transcoder), > > + dss_ctl1_val); > > } > > } > > > > void intel_dsc_enable(const struct intel_crtc_state *crtc_state) { > > + struct intel_display *display = to_intel_display(crtc_state); > > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > > u32 dss_ctl1_val = 0; > > u32 dss_ctl2_val = 0; > > int vdsc_instances_per_pipe = > > intel_dsc_get_vdsc_per_pipe(crtc_state); > > @@ -796,28 +795,27 @@ void intel_dsc_enable(const struct intel_crtc_state > *crtc_state) > > if (intel_crtc_is_bigjoiner_primary(crtc_state)) > > dss_ctl1_val |= PRIMARY_BIG_JOINER_ENABLE; > > } > > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state- > >cpu_transcoder), dss_ctl1_val); > > - intel_de_write(dev_priv, dss_ctl2_reg(crtc, crtc_state- > >cpu_transcoder), dss_ctl2_val); > > + intel_de_write(display, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), > dss_ctl1_val); > > + intel_de_write(display, dss_ctl2_reg(crtc, > > +crtc_state->cpu_transcoder), dss_ctl2_val); > > } > > > > void intel_dsc_disable(const struct intel_crtc_state *old_crtc_state) > > { > > + struct intel_display *display = to_intel_display(old_crtc_state); > > struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->uapi.crtc); > > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > > > > /* Disable only if either of them is enabled */ > > if (old_crtc_state->dsc.compression_enable || > > old_crtc_state->joiner_pipes) { > > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, old_crtc_state- > >cpu_transcoder), 0); > > - intel_de_write(dev_priv, dss_ctl2_reg(crtc, old_crtc_state- > >cpu_transcoder), 0); > > + intel_de_write(display, dss_ctl1_reg(crtc, old_crtc_state- > >cpu_transcoder), 0); > > + intel_de_write(display, dss_ctl2_reg(crtc, > > +old_crtc_state->cpu_transcoder), 0); > > } > > } > > > > static u32 intel_dsc_pps_read(struct intel_crtc_state *crtc_state, int pps, > > bool *all_equal) > > { > > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > > + struct intel_display *display = to_intel_display(crtc_state); > > i915_reg_t dsc_reg[3]; > > int i, vdsc_per_pipe, dsc_reg_num; > > u32 val; > > @@ -825,16 +823,16 @@ static u32 intel_dsc_pps_read(struct > intel_crtc_state *crtc_state, int pps, > > vdsc_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); > > dsc_reg_num = min_t(int, ARRAY_SIZE(dsc_reg), vdsc_per_pipe); > > > > - drm_WARN_ON_ONCE(&i915->drm, dsc_reg_num < vdsc_per_pipe); > > + drm_WARN_ON_ONCE(display->drm, dsc_reg_num < vdsc_per_pipe); > > > > intel_dsc_get_pps_reg(crtc_state, pps, dsc_reg, dsc_reg_num); > > > > *all_equal = true; > > > > - val = intel_de_read(i915, dsc_reg[0]); > > + val = intel_de_read(display, dsc_reg[0]); > > > > for (i = 1; i < dsc_reg_num; i++) { > > - if (intel_de_read(i915, dsc_reg[i]) != val) { > > + if (intel_de_read(display, dsc_reg[i]) != val) { > > *all_equal = false; > > break; > > } > > @@ -845,22 +843,20 @@ static u32 intel_dsc_pps_read(struct > > intel_crtc_state *crtc_state, int pps, > > > > static u32 intel_dsc_pps_read_and_verify(struct intel_crtc_state > > *crtc_state, int pps) { > > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > > + struct intel_display *display = to_intel_display(crtc_state); > > u32 val; > > bool all_equal; > > > > val = intel_dsc_pps_read(crtc_state, pps, &all_equal); > > - drm_WARN_ON(&i915->drm, !all_equal); > > + drm_WARN_ON(display->drm, !all_equal); > > > > return val; > > } > > > > static void intel_dsc_get_pps_config(struct intel_crtc_state > > *crtc_state) { > > + struct intel_display *display = to_intel_display(crtc_state); > > struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; > > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > > int num_vdsc_instances = > intel_dsc_get_num_vdsc_instances(crtc_state); > > u32 pps_temp; > > > > @@ -946,7 +942,7 @@ static void intel_dsc_get_pps_config(struct > > intel_crtc_state *crtc_state) > > > > vdsc_cfg->slice_chunk_size = > > REG_FIELD_GET(DSC_PPS16_SLICE_CHUNK_SIZE_MASK, pps_temp); > > > > - if (DISPLAY_VER(i915) >= 14) { > > + if (DISPLAY_VER(display) >= 14) { > > /* PPS 17 */ > > pps_temp = intel_dsc_pps_read_and_verify(crtc_state, 17); > > > > @@ -964,7 +960,6 @@ void intel_dsc_get_config(struct intel_crtc_state > > *crtc_state) { > > struct intel_display *display = to_intel_display(crtc_state); > > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; > > enum intel_display_power_domain power_domain; > > intel_wakeref_t wakeref; > > @@ -979,8 +974,8 @@ void intel_dsc_get_config(struct intel_crtc_state > *crtc_state) > > if (!wakeref) > > return; > > > > - dss_ctl1 = intel_de_read(dev_priv, dss_ctl1_reg(crtc, cpu_transcoder)); > > - dss_ctl2 = intel_de_read(dev_priv, dss_ctl2_reg(crtc, cpu_transcoder)); > > + dss_ctl1 = intel_de_read(display, dss_ctl1_reg(crtc, cpu_transcoder)); > > + dss_ctl2 = intel_de_read(display, dss_ctl2_reg(crtc, > > +cpu_transcoder)); > > > > crtc_state->dsc.compression_enable = dss_ctl2 & VDSC0_ENABLE; > > if (!crtc_state->dsc.compression_enable) > > @@ -1020,8 +1015,7 @@ void intel_vdsc_state_dump(struct drm_printer > > *p, int indent, > > > > int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state) > > { > > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > > - struct intel_display *display = to_intel_display(crtc); > > + struct intel_display *display = to_intel_display(crtc_state); > > int num_vdsc_instances = > intel_dsc_get_num_vdsc_instances(crtc_state); > > int min_cdclk; > > -- > Jani Nikula, Intel
On Thu, 27 Feb 2025, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote: >> -----Original Message----- >> From: Nikula, Jani <jani.nikula@intel.com> >> Sent: Thursday, February 27, 2025 5:47 PM >> To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-xe@lists.freedesktop.org; >> intel-gfx@lists.freedesktop.org >> Cc: Kandpal, Suraj <suraj.kandpal@intel.com> >> Subject: Re: [PATCH] drm/i915/vdsc: intel_display conversions >> >> On Thu, 27 Feb 2025, Suraj Kandpal <suraj.kandpal@intel.com> wrote: >> > intel_display conversions for vdsc in an effort to move away from >> > drm_i915_private. >> > While at it use display->platform.xx. >> >> Please update with >> >> -#include "i915_drv.h" >> +#include "i915_utils.h" >> >> and you get >> >> Reviewed-by: Jani Nikula <jani.nikula@intel.com> > > Thanks for the reviews pushed to drm-intel-next with the above > mentioned changes I didn't really mean you should make the changes while applying. BR, Jani. > > Regards, > Suraj Kandpal > >> >> >> BR, >> Jani. >> >> >> >> > >> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com> >> > --- >> > drivers/gpu/drm/i915/display/intel_vdsc.c | 180 >> > +++++++++++----------- >> > 1 file changed, 87 insertions(+), 93 deletions(-) >> > >> > diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c >> > b/drivers/gpu/drm/i915/display/intel_vdsc.c >> > index 6e7151346382..35d558ca98db 100644 >> > --- a/drivers/gpu/drm/i915/display/intel_vdsc.c >> > +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c >> > @@ -22,14 +22,13 @@ >> > >> > bool intel_dsc_source_support(const struct intel_crtc_state >> > *crtc_state) { >> > - const struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> > + struct intel_display *display = to_intel_display(crtc_state); >> > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; >> > >> > - if (!HAS_DSC(i915)) >> > + if (!HAS_DSC(display)) >> > return false; >> > >> > - if (DISPLAY_VER(i915) == 11 && cpu_transcoder == TRANSCODER_A) >> > + if (DISPLAY_VER(display) == 11 && cpu_transcoder == TRANSCODER_A) >> > return false; >> > >> > return true; >> > @@ -37,9 +36,9 @@ bool intel_dsc_source_support(const struct >> > intel_crtc_state *crtc_state) >> > >> > static bool is_pipe_dsc(struct intel_crtc *crtc, enum transcoder >> > cpu_transcoder) { >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> > + struct intel_display *display = to_intel_display(crtc); >> > >> > - if (DISPLAY_VER(i915) >= 12) >> > + if (DISPLAY_VER(display) >= 12) >> > return true; >> > >> > if (cpu_transcoder == TRANSCODER_EDP || @@ -48,7 +47,7 @@ static >> > bool is_pipe_dsc(struct intel_crtc *crtc, enum transcoder cpu_transcoder) >> > return false; >> > >> > /* There's no pipe A DSC engine on ICL */ >> > - drm_WARN_ON(&i915->drm, crtc->pipe == PIPE_A); >> > + drm_WARN_ON(display->drm, crtc->pipe == PIPE_A); >> > >> > return true; >> > } >> > @@ -262,8 +261,7 @@ static int intel_dsc_slice_dimensions_valid(struct >> > intel_crtc_state *pipe_config >> > >> > int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) { >> > - struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc); >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); >> > + struct intel_display *display = to_intel_display(pipe_config); >> > struct drm_dsc_config *vdsc_cfg = &pipe_config->dsc.config; >> > u16 compressed_bpp = fxp_q4_to_int(pipe_config- >> >dsc.compressed_bpp_x16); >> > int err; >> > @@ -276,7 +274,7 @@ int intel_dsc_compute_params(struct intel_crtc_state >> *pipe_config) >> > err = intel_dsc_slice_dimensions_valid(pipe_config, vdsc_cfg); >> > >> > if (err) { >> > - drm_dbg_kms(&dev_priv->drm, "Slice dimension >> requirements not met\n"); >> > + drm_dbg_kms(display->drm, "Slice dimension requirements >> not >> > +met\n"); >> > return err; >> > } >> > >> > @@ -287,7 +285,7 @@ int intel_dsc_compute_params(struct intel_crtc_state >> *pipe_config) >> > vdsc_cfg->convert_rgb = pipe_config->output_format != >> INTEL_OUTPUT_FORMAT_YCBCR420 && >> > pipe_config->output_format != >> INTEL_OUTPUT_FORMAT_YCBCR444; >> > >> > - if (DISPLAY_VER(dev_priv) >= 14 && >> > + if (DISPLAY_VER(display) >= 14 && >> > pipe_config->output_format == >> INTEL_OUTPUT_FORMAT_YCBCR420) >> > vdsc_cfg->native_420 = true; >> > /* We do not support YcBCr422 as of now */ @@ -308,7 +306,7 @@ int >> > intel_dsc_compute_params(struct intel_crtc_state *pipe_config) >> > vdsc_cfg->bits_per_component = pipe_config->pipe_bpp / 3; >> > >> > if (vdsc_cfg->bits_per_component < 8) { >> > - drm_dbg_kms(&dev_priv->drm, "DSC bpc requirements not >> met bpc: %d\n", >> > + drm_dbg_kms(display->drm, "DSC bpc requirements not met >> bpc: %d\n", >> > vdsc_cfg->bits_per_component); >> > return -EINVAL; >> > } >> > @@ -320,7 +318,7 @@ int intel_dsc_compute_params(struct intel_crtc_state >> *pipe_config) >> > * upto uncompressed bpp-1, hence add calculations for all the rc >> > * parameters >> > */ >> > - if (DISPLAY_VER(dev_priv) >= 13) { >> > + if (DISPLAY_VER(display) >= 13) { >> > calculate_rc_params(vdsc_cfg); >> > } else { >> > if ((compressed_bpp == 8 || >> > @@ -356,7 +354,7 @@ int intel_dsc_compute_params(struct >> > intel_crtc_state *pipe_config) enum intel_display_power_domain >> > intel_dsc_power_domain(struct intel_crtc *crtc, enum transcoder >> > cpu_transcoder) { >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> > + struct intel_display *display = to_intel_display(crtc); >> > enum pipe pipe = crtc->pipe; >> > >> > /* >> > @@ -370,7 +368,8 @@ intel_dsc_power_domain(struct intel_crtc *crtc, >> enum transcoder cpu_transcoder) >> > * the pipe in use. Hence another reference on the pipe power domain >> > * will suffice. (Except no VDSC/joining on ICL pipe A.) >> > */ >> > - if (DISPLAY_VER(i915) == 12 && !IS_ROCKETLAKE(i915) && pipe == >> PIPE_A) >> > + if (DISPLAY_VER(display) == 12 && !display->platform.rocketlake && >> > + pipe == PIPE_A) >> > return POWER_DOMAIN_TRANSCODER_VDSC_PW2; >> > else if (is_pipe_dsc(crtc, cpu_transcoder)) >> > return POWER_DOMAIN_PIPE(pipe); >> > @@ -416,26 +415,25 @@ static void intel_dsc_get_pps_reg(const struct >> > intel_crtc_state *crtc_state, int static void intel_dsc_pps_write(const struct >> intel_crtc_state *crtc_state, >> > int pps, u32 pps_val) >> > { >> > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> > + struct intel_display *display = to_intel_display(crtc_state); >> > i915_reg_t dsc_reg[3]; >> > int i, vdsc_per_pipe, dsc_reg_num; >> > >> > vdsc_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); >> > dsc_reg_num = min_t(int, ARRAY_SIZE(dsc_reg), vdsc_per_pipe); >> > >> > - drm_WARN_ON_ONCE(&i915->drm, dsc_reg_num < vdsc_per_pipe); >> > + drm_WARN_ON_ONCE(display->drm, dsc_reg_num < vdsc_per_pipe); >> > >> > intel_dsc_get_pps_reg(crtc_state, pps, dsc_reg, dsc_reg_num); >> > >> > for (i = 0; i < dsc_reg_num; i++) >> > - intel_de_write(i915, dsc_reg[i], pps_val); >> > + intel_de_write(display, dsc_reg[i], pps_val); >> > } >> > >> > static void intel_dsc_pps_configure(const struct intel_crtc_state >> > *crtc_state) { >> > + struct intel_display *display = to_intel_display(crtc_state); >> > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); >> > const struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; >> > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; >> > enum pipe pipe = crtc->pipe; >> > @@ -529,7 +527,7 @@ static void intel_dsc_pps_configure(const struct >> intel_crtc_state *crtc_state) >> > vdsc_cfg->slice_height); >> > intel_dsc_pps_write(crtc_state, 16, pps_val); >> > >> > - if (DISPLAY_VER(dev_priv) >= 14) { >> > + if (DISPLAY_VER(display) >= 14) { >> > /* PPS 17 */ >> > pps_val = DSC_PPS17_SL_BPG_OFFSET(vdsc_cfg- >> >second_line_bpg_offset); >> > intel_dsc_pps_write(crtc_state, 17, pps_val); @@ -547,44 >> +545,44 @@ >> > static void intel_dsc_pps_configure(const struct intel_crtc_state *crtc_state) >> > (u32)(vdsc_cfg->rc_buf_thresh[i] << >> > BITS_PER_BYTE * (i % 4)); >> > if (!is_pipe_dsc(crtc, cpu_transcoder)) { >> > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_0, >> > + intel_de_write(display, DSCA_RC_BUF_THRESH_0, >> > rc_buf_thresh_dword[0]); >> > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_0_UDW, >> > + intel_de_write(display, DSCA_RC_BUF_THRESH_0_UDW, >> > rc_buf_thresh_dword[1]); >> > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_1, >> > + intel_de_write(display, DSCA_RC_BUF_THRESH_1, >> > rc_buf_thresh_dword[2]); >> > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_1_UDW, >> > + intel_de_write(display, DSCA_RC_BUF_THRESH_1_UDW, >> > rc_buf_thresh_dword[3]); >> > if (vdsc_instances_per_pipe > 1) { >> > - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_0, >> > + intel_de_write(display, DSCC_RC_BUF_THRESH_0, >> > rc_buf_thresh_dword[0]); >> > - intel_de_write(dev_priv, >> DSCC_RC_BUF_THRESH_0_UDW, >> > + intel_de_write(display, >> DSCC_RC_BUF_THRESH_0_UDW, >> > rc_buf_thresh_dword[1]); >> > - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_1, >> > + intel_de_write(display, DSCC_RC_BUF_THRESH_1, >> > rc_buf_thresh_dword[2]); >> > - intel_de_write(dev_priv, >> DSCC_RC_BUF_THRESH_1_UDW, >> > + intel_de_write(display, >> DSCC_RC_BUF_THRESH_1_UDW, >> > rc_buf_thresh_dword[3]); >> > } >> > } else { >> > - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_0(pipe), >> > + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_0(pipe), >> > rc_buf_thresh_dword[0]); >> > - intel_de_write(dev_priv, >> ICL_DSC0_RC_BUF_THRESH_0_UDW(pipe), >> > + intel_de_write(display, >> ICL_DSC0_RC_BUF_THRESH_0_UDW(pipe), >> > rc_buf_thresh_dword[1]); >> > - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_1(pipe), >> > + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_1(pipe), >> > rc_buf_thresh_dword[2]); >> > - intel_de_write(dev_priv, >> ICL_DSC0_RC_BUF_THRESH_1_UDW(pipe), >> > + intel_de_write(display, >> ICL_DSC0_RC_BUF_THRESH_1_UDW(pipe), >> > rc_buf_thresh_dword[3]); >> > if (vdsc_instances_per_pipe > 1) { >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > ICL_DSC1_RC_BUF_THRESH_0(pipe), >> > rc_buf_thresh_dword[0]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > ICL_DSC1_RC_BUF_THRESH_0_UDW(pipe), >> > rc_buf_thresh_dword[1]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > ICL_DSC1_RC_BUF_THRESH_1(pipe), >> > rc_buf_thresh_dword[2]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > ICL_DSC1_RC_BUF_THRESH_1_UDW(pipe), >> > rc_buf_thresh_dword[3]); >> > } >> > @@ -601,88 +599,88 @@ static void intel_dsc_pps_configure(const struct >> intel_crtc_state *crtc_state) >> > (vdsc_cfg->rc_range_params[i].range_min_qp << >> > RC_MIN_QP_SHIFT)) << 16 * (i % 2)); >> > if (!is_pipe_dsc(crtc, cpu_transcoder)) { >> > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_0, >> > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_0, >> > rc_range_params_dword[0]); >> > - intel_de_write(dev_priv, >> DSCA_RC_RANGE_PARAMETERS_0_UDW, >> > + intel_de_write(display, >> DSCA_RC_RANGE_PARAMETERS_0_UDW, >> > rc_range_params_dword[1]); >> > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_1, >> > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_1, >> > rc_range_params_dword[2]); >> > - intel_de_write(dev_priv, >> DSCA_RC_RANGE_PARAMETERS_1_UDW, >> > + intel_de_write(display, >> DSCA_RC_RANGE_PARAMETERS_1_UDW, >> > rc_range_params_dword[3]); >> > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_2, >> > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_2, >> > rc_range_params_dword[4]); >> > - intel_de_write(dev_priv, >> DSCA_RC_RANGE_PARAMETERS_2_UDW, >> > + intel_de_write(display, >> DSCA_RC_RANGE_PARAMETERS_2_UDW, >> > rc_range_params_dword[5]); >> > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_3, >> > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_3, >> > rc_range_params_dword[6]); >> > - intel_de_write(dev_priv, >> DSCA_RC_RANGE_PARAMETERS_3_UDW, >> > + intel_de_write(display, >> DSCA_RC_RANGE_PARAMETERS_3_UDW, >> > rc_range_params_dword[7]); >> > if (vdsc_instances_per_pipe > 1) { >> > - intel_de_write(dev_priv, >> DSCC_RC_RANGE_PARAMETERS_0, >> > + intel_de_write(display, >> DSCC_RC_RANGE_PARAMETERS_0, >> > rc_range_params_dword[0]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > DSCC_RC_RANGE_PARAMETERS_0_UDW, >> > rc_range_params_dword[1]); >> > - intel_de_write(dev_priv, >> DSCC_RC_RANGE_PARAMETERS_1, >> > + intel_de_write(display, >> DSCC_RC_RANGE_PARAMETERS_1, >> > rc_range_params_dword[2]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > DSCC_RC_RANGE_PARAMETERS_1_UDW, >> > rc_range_params_dword[3]); >> > - intel_de_write(dev_priv, >> DSCC_RC_RANGE_PARAMETERS_2, >> > + intel_de_write(display, >> DSCC_RC_RANGE_PARAMETERS_2, >> > rc_range_params_dword[4]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > DSCC_RC_RANGE_PARAMETERS_2_UDW, >> > rc_range_params_dword[5]); >> > - intel_de_write(dev_priv, >> DSCC_RC_RANGE_PARAMETERS_3, >> > + intel_de_write(display, >> DSCC_RC_RANGE_PARAMETERS_3, >> > rc_range_params_dword[6]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > DSCC_RC_RANGE_PARAMETERS_3_UDW, >> > rc_range_params_dword[7]); >> > } >> > } else { >> > - intel_de_write(dev_priv, >> ICL_DSC0_RC_RANGE_PARAMETERS_0(pipe), >> > + intel_de_write(display, >> ICL_DSC0_RC_RANGE_PARAMETERS_0(pipe), >> > rc_range_params_dword[0]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC0_RC_RANGE_PARAMETERS_0_UDW(pipe), >> > rc_range_params_dword[1]); >> > - intel_de_write(dev_priv, >> ICL_DSC0_RC_RANGE_PARAMETERS_1(pipe), >> > + intel_de_write(display, >> ICL_DSC0_RC_RANGE_PARAMETERS_1(pipe), >> > rc_range_params_dword[2]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC0_RC_RANGE_PARAMETERS_1_UDW(pipe), >> > rc_range_params_dword[3]); >> > - intel_de_write(dev_priv, >> ICL_DSC0_RC_RANGE_PARAMETERS_2(pipe), >> > + intel_de_write(display, >> ICL_DSC0_RC_RANGE_PARAMETERS_2(pipe), >> > rc_range_params_dword[4]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC0_RC_RANGE_PARAMETERS_2_UDW(pipe), >> > rc_range_params_dword[5]); >> > - intel_de_write(dev_priv, >> ICL_DSC0_RC_RANGE_PARAMETERS_3(pipe), >> > + intel_de_write(display, >> ICL_DSC0_RC_RANGE_PARAMETERS_3(pipe), >> > rc_range_params_dword[6]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC0_RC_RANGE_PARAMETERS_3_UDW(pipe), >> > rc_range_params_dword[7]); >> > if (vdsc_instances_per_pipe > 1) { >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC1_RC_RANGE_PARAMETERS_0(pipe), >> > rc_range_params_dword[0]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC1_RC_RANGE_PARAMETERS_0_UDW(pipe), >> > rc_range_params_dword[1]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC1_RC_RANGE_PARAMETERS_1(pipe), >> > rc_range_params_dword[2]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC1_RC_RANGE_PARAMETERS_1_UDW(pipe), >> > rc_range_params_dword[3]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC1_RC_RANGE_PARAMETERS_2(pipe), >> > rc_range_params_dword[4]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC1_RC_RANGE_PARAMETERS_2_UDW(pipe), >> > rc_range_params_dword[5]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC1_RC_RANGE_PARAMETERS_3(pipe), >> > rc_range_params_dword[6]); >> > - intel_de_write(dev_priv, >> > + intel_de_write(display, >> > >> ICL_DSC1_RC_RANGE_PARAMETERS_3_UDW(pipe), >> > rc_range_params_dword[7]); >> > } >> > @@ -746,8 +744,8 @@ static i915_reg_t dss_ctl2_reg(struct intel_crtc >> > *crtc, enum transcoder cpu_tran >> > >> > void intel_uncompressed_joiner_enable(const struct intel_crtc_state >> > *crtc_state) { >> > + struct intel_display *display = to_intel_display(crtc_state); >> > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); >> > u32 dss_ctl1_val = 0; >> > >> > if (crtc_state->joiner_pipes && !crtc_state->dsc.compression_enable) >> > { @@ -756,14 +754,15 @@ void intel_uncompressed_joiner_enable(const >> struct intel_crtc_state *crtc_state) >> > else >> > dss_ctl1_val |= UNCOMPRESSED_JOINER_PRIMARY; >> > >> > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state- >> >cpu_transcoder), dss_ctl1_val); >> > + intel_de_write(display, dss_ctl1_reg(crtc, crtc_state- >> >cpu_transcoder), >> > + dss_ctl1_val); >> > } >> > } >> > >> > void intel_dsc_enable(const struct intel_crtc_state *crtc_state) { >> > + struct intel_display *display = to_intel_display(crtc_state); >> > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); >> > u32 dss_ctl1_val = 0; >> > u32 dss_ctl2_val = 0; >> > int vdsc_instances_per_pipe = >> > intel_dsc_get_vdsc_per_pipe(crtc_state); >> > @@ -796,28 +795,27 @@ void intel_dsc_enable(const struct intel_crtc_state >> *crtc_state) >> > if (intel_crtc_is_bigjoiner_primary(crtc_state)) >> > dss_ctl1_val |= PRIMARY_BIG_JOINER_ENABLE; >> > } >> > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state- >> >cpu_transcoder), dss_ctl1_val); >> > - intel_de_write(dev_priv, dss_ctl2_reg(crtc, crtc_state- >> >cpu_transcoder), dss_ctl2_val); >> > + intel_de_write(display, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), >> dss_ctl1_val); >> > + intel_de_write(display, dss_ctl2_reg(crtc, >> > +crtc_state->cpu_transcoder), dss_ctl2_val); >> > } >> > >> > void intel_dsc_disable(const struct intel_crtc_state *old_crtc_state) >> > { >> > + struct intel_display *display = to_intel_display(old_crtc_state); >> > struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->uapi.crtc); >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); >> > >> > /* Disable only if either of them is enabled */ >> > if (old_crtc_state->dsc.compression_enable || >> > old_crtc_state->joiner_pipes) { >> > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, old_crtc_state- >> >cpu_transcoder), 0); >> > - intel_de_write(dev_priv, dss_ctl2_reg(crtc, old_crtc_state- >> >cpu_transcoder), 0); >> > + intel_de_write(display, dss_ctl1_reg(crtc, old_crtc_state- >> >cpu_transcoder), 0); >> > + intel_de_write(display, dss_ctl2_reg(crtc, >> > +old_crtc_state->cpu_transcoder), 0); >> > } >> > } >> > >> > static u32 intel_dsc_pps_read(struct intel_crtc_state *crtc_state, int pps, >> > bool *all_equal) >> > { >> > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> > + struct intel_display *display = to_intel_display(crtc_state); >> > i915_reg_t dsc_reg[3]; >> > int i, vdsc_per_pipe, dsc_reg_num; >> > u32 val; >> > @@ -825,16 +823,16 @@ static u32 intel_dsc_pps_read(struct >> intel_crtc_state *crtc_state, int pps, >> > vdsc_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); >> > dsc_reg_num = min_t(int, ARRAY_SIZE(dsc_reg), vdsc_per_pipe); >> > >> > - drm_WARN_ON_ONCE(&i915->drm, dsc_reg_num < vdsc_per_pipe); >> > + drm_WARN_ON_ONCE(display->drm, dsc_reg_num < vdsc_per_pipe); >> > >> > intel_dsc_get_pps_reg(crtc_state, pps, dsc_reg, dsc_reg_num); >> > >> > *all_equal = true; >> > >> > - val = intel_de_read(i915, dsc_reg[0]); >> > + val = intel_de_read(display, dsc_reg[0]); >> > >> > for (i = 1; i < dsc_reg_num; i++) { >> > - if (intel_de_read(i915, dsc_reg[i]) != val) { >> > + if (intel_de_read(display, dsc_reg[i]) != val) { >> > *all_equal = false; >> > break; >> > } >> > @@ -845,22 +843,20 @@ static u32 intel_dsc_pps_read(struct >> > intel_crtc_state *crtc_state, int pps, >> > >> > static u32 intel_dsc_pps_read_and_verify(struct intel_crtc_state >> > *crtc_state, int pps) { >> > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> > + struct intel_display *display = to_intel_display(crtc_state); >> > u32 val; >> > bool all_equal; >> > >> > val = intel_dsc_pps_read(crtc_state, pps, &all_equal); >> > - drm_WARN_ON(&i915->drm, !all_equal); >> > + drm_WARN_ON(display->drm, !all_equal); >> > >> > return val; >> > } >> > >> > static void intel_dsc_get_pps_config(struct intel_crtc_state >> > *crtc_state) { >> > + struct intel_display *display = to_intel_display(crtc_state); >> > struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; >> > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> > int num_vdsc_instances = >> intel_dsc_get_num_vdsc_instances(crtc_state); >> > u32 pps_temp; >> > >> > @@ -946,7 +942,7 @@ static void intel_dsc_get_pps_config(struct >> > intel_crtc_state *crtc_state) >> > >> > vdsc_cfg->slice_chunk_size = >> > REG_FIELD_GET(DSC_PPS16_SLICE_CHUNK_SIZE_MASK, pps_temp); >> > >> > - if (DISPLAY_VER(i915) >= 14) { >> > + if (DISPLAY_VER(display) >= 14) { >> > /* PPS 17 */ >> > pps_temp = intel_dsc_pps_read_and_verify(crtc_state, 17); >> > >> > @@ -964,7 +960,6 @@ void intel_dsc_get_config(struct intel_crtc_state >> > *crtc_state) { >> > struct intel_display *display = to_intel_display(crtc_state); >> > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); >> > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; >> > enum intel_display_power_domain power_domain; >> > intel_wakeref_t wakeref; >> > @@ -979,8 +974,8 @@ void intel_dsc_get_config(struct intel_crtc_state >> *crtc_state) >> > if (!wakeref) >> > return; >> > >> > - dss_ctl1 = intel_de_read(dev_priv, dss_ctl1_reg(crtc, cpu_transcoder)); >> > - dss_ctl2 = intel_de_read(dev_priv, dss_ctl2_reg(crtc, cpu_transcoder)); >> > + dss_ctl1 = intel_de_read(display, dss_ctl1_reg(crtc, cpu_transcoder)); >> > + dss_ctl2 = intel_de_read(display, dss_ctl2_reg(crtc, >> > +cpu_transcoder)); >> > >> > crtc_state->dsc.compression_enable = dss_ctl2 & VDSC0_ENABLE; >> > if (!crtc_state->dsc.compression_enable) >> > @@ -1020,8 +1015,7 @@ void intel_vdsc_state_dump(struct drm_printer >> > *p, int indent, >> > >> > int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state) >> > { >> > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> > - struct intel_display *display = to_intel_display(crtc); >> > + struct intel_display *display = to_intel_display(crtc_state); >> > int num_vdsc_instances = >> intel_dsc_get_num_vdsc_instances(crtc_state); >> > int min_cdclk; >> >> -- >> Jani Nikula, Intel
> -----Original Message----- > From: Nikula, Jani <jani.nikula@intel.com> > Sent: Friday, February 28, 2025 12:18 AM > To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-xe@lists.freedesktop.org; > intel-gfx@lists.freedesktop.org > Subject: RE: [PATCH] drm/i915/vdsc: intel_display conversions > > On Thu, 27 Feb 2025, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote: > >> -----Original Message----- > >> From: Nikula, Jani <jani.nikula@intel.com> > >> Sent: Thursday, February 27, 2025 5:47 PM > >> To: Kandpal, Suraj <suraj.kandpal@intel.com>; > >> intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org > >> Cc: Kandpal, Suraj <suraj.kandpal@intel.com> > >> Subject: Re: [PATCH] drm/i915/vdsc: intel_display conversions > >> > >> On Thu, 27 Feb 2025, Suraj Kandpal <suraj.kandpal@intel.com> wrote: > >> > intel_display conversions for vdsc in an effort to move away from > >> > drm_i915_private. > >> > While at it use display->platform.xx. > >> > >> Please update with > >> > >> -#include "i915_drv.h" > >> +#include "i915_utils.h" > >> > >> and you get > >> > >> Reviewed-by: Jani Nikula <jani.nikula@intel.com> > > > > Thanks for the reviews pushed to drm-intel-next with the above > > mentioned changes > > I didn't really mean you should make the changes while applying. Ahh ohkay will keep that in mind in the future Regards, Suraj Kandpal > > BR, > Jani. > > > > > > > Regards, > > Suraj Kandpal > > > >> > >> > >> BR, > >> Jani. > >> > >> > >> > >> > > >> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com> > >> > --- > >> > drivers/gpu/drm/i915/display/intel_vdsc.c | 180 > >> > +++++++++++----------- > >> > 1 file changed, 87 insertions(+), 93 deletions(-) > >> > > >> > diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c > >> > b/drivers/gpu/drm/i915/display/intel_vdsc.c > >> > index 6e7151346382..35d558ca98db 100644 > >> > --- a/drivers/gpu/drm/i915/display/intel_vdsc.c > >> > +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c > >> > @@ -22,14 +22,13 @@ > >> > > >> > bool intel_dsc_source_support(const struct intel_crtc_state > >> > *crtc_state) { > >> > - const struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > >> > + struct intel_display *display = to_intel_display(crtc_state); > >> > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; > >> > > >> > - if (!HAS_DSC(i915)) > >> > + if (!HAS_DSC(display)) > >> > return false; > >> > > >> > - if (DISPLAY_VER(i915) == 11 && cpu_transcoder == TRANSCODER_A) > >> > + if (DISPLAY_VER(display) == 11 && cpu_transcoder == > >> > + TRANSCODER_A) > >> > return false; > >> > > >> > return true; > >> > @@ -37,9 +36,9 @@ bool intel_dsc_source_support(const struct > >> > intel_crtc_state *crtc_state) > >> > > >> > static bool is_pipe_dsc(struct intel_crtc *crtc, enum transcoder > >> > cpu_transcoder) { > >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > >> > + struct intel_display *display = to_intel_display(crtc); > >> > > >> > - if (DISPLAY_VER(i915) >= 12) > >> > + if (DISPLAY_VER(display) >= 12) > >> > return true; > >> > > >> > if (cpu_transcoder == TRANSCODER_EDP || @@ -48,7 +47,7 @@ > >> > static bool is_pipe_dsc(struct intel_crtc *crtc, enum transcoder > cpu_transcoder) > >> > return false; > >> > > >> > /* There's no pipe A DSC engine on ICL */ > >> > - drm_WARN_ON(&i915->drm, crtc->pipe == PIPE_A); > >> > + drm_WARN_ON(display->drm, crtc->pipe == PIPE_A); > >> > > >> > return true; > >> > } > >> > @@ -262,8 +261,7 @@ static int > >> > intel_dsc_slice_dimensions_valid(struct > >> > intel_crtc_state *pipe_config > >> > > >> > int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) { > >> > - struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc); > >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > >> > + struct intel_display *display = to_intel_display(pipe_config); > >> > struct drm_dsc_config *vdsc_cfg = &pipe_config->dsc.config; > >> > u16 compressed_bpp = fxp_q4_to_int(pipe_config- > >> >dsc.compressed_bpp_x16); > >> > int err; > >> > @@ -276,7 +274,7 @@ int intel_dsc_compute_params(struct > >> >intel_crtc_state > >> *pipe_config) > >> > err = intel_dsc_slice_dimensions_valid(pipe_config, vdsc_cfg); > >> > > >> > if (err) { > >> > - drm_dbg_kms(&dev_priv->drm, "Slice dimension > >> requirements not met\n"); > >> > + drm_dbg_kms(display->drm, "Slice dimension requirements > >> not > >> > +met\n"); > >> > return err; > >> > } > >> > > >> > @@ -287,7 +285,7 @@ int intel_dsc_compute_params(struct > >> > intel_crtc_state > >> *pipe_config) > >> > vdsc_cfg->convert_rgb = pipe_config->output_format != > >> INTEL_OUTPUT_FORMAT_YCBCR420 && > >> > pipe_config->output_format != > >> INTEL_OUTPUT_FORMAT_YCBCR444; > >> > > >> > - if (DISPLAY_VER(dev_priv) >= 14 && > >> > + if (DISPLAY_VER(display) >= 14 && > >> > pipe_config->output_format == > >> INTEL_OUTPUT_FORMAT_YCBCR420) > >> > vdsc_cfg->native_420 = true; > >> > /* We do not support YcBCr422 as of now */ @@ -308,7 +306,7 @@ > >> > int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) > >> > vdsc_cfg->bits_per_component = pipe_config->pipe_bpp / 3; > >> > > >> > if (vdsc_cfg->bits_per_component < 8) { > >> > - drm_dbg_kms(&dev_priv->drm, "DSC bpc requirements not > >> met bpc: %d\n", > >> > + drm_dbg_kms(display->drm, "DSC bpc requirements not met > >> bpc: %d\n", > >> > vdsc_cfg->bits_per_component); > >> > return -EINVAL; > >> > } > >> > @@ -320,7 +318,7 @@ int intel_dsc_compute_params(struct > >> > intel_crtc_state > >> *pipe_config) > >> > * upto uncompressed bpp-1, hence add calculations for all the rc > >> > * parameters > >> > */ > >> > - if (DISPLAY_VER(dev_priv) >= 13) { > >> > + if (DISPLAY_VER(display) >= 13) { > >> > calculate_rc_params(vdsc_cfg); > >> > } else { > >> > if ((compressed_bpp == 8 || @@ -356,7 +354,7 @@ int > >> > intel_dsc_compute_params(struct intel_crtc_state *pipe_config) > >> > enum intel_display_power_domain intel_dsc_power_domain(struct > >> > intel_crtc *crtc, enum transcoder > >> > cpu_transcoder) { > >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > >> > + struct intel_display *display = to_intel_display(crtc); > >> > enum pipe pipe = crtc->pipe; > >> > > >> > /* > >> > @@ -370,7 +368,8 @@ intel_dsc_power_domain(struct intel_crtc *crtc, > >> enum transcoder cpu_transcoder) > >> > * the pipe in use. Hence another reference on the pipe power domain > >> > * will suffice. (Except no VDSC/joining on ICL pipe A.) > >> > */ > >> > - if (DISPLAY_VER(i915) == 12 && !IS_ROCKETLAKE(i915) && pipe == > >> PIPE_A) > >> > + if (DISPLAY_VER(display) == 12 && !display->platform.rocketlake && > >> > + pipe == PIPE_A) > >> > return POWER_DOMAIN_TRANSCODER_VDSC_PW2; > >> > else if (is_pipe_dsc(crtc, cpu_transcoder)) > >> > return POWER_DOMAIN_PIPE(pipe); @@ -416,26 +415,25 @@ > >> > static void intel_dsc_get_pps_reg(const struct intel_crtc_state > >> > *crtc_state, int static void intel_dsc_pps_write(const struct > >> intel_crtc_state *crtc_state, > >> > int pps, u32 pps_val) { > >> > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > >> > + struct intel_display *display = to_intel_display(crtc_state); > >> > i915_reg_t dsc_reg[3]; > >> > int i, vdsc_per_pipe, dsc_reg_num; > >> > > >> > vdsc_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); > >> > dsc_reg_num = min_t(int, ARRAY_SIZE(dsc_reg), vdsc_per_pipe); > >> > > >> > - drm_WARN_ON_ONCE(&i915->drm, dsc_reg_num < vdsc_per_pipe); > >> > + drm_WARN_ON_ONCE(display->drm, dsc_reg_num < vdsc_per_pipe); > >> > > >> > intel_dsc_get_pps_reg(crtc_state, pps, dsc_reg, dsc_reg_num); > >> > > >> > for (i = 0; i < dsc_reg_num; i++) > >> > - intel_de_write(i915, dsc_reg[i], pps_val); > >> > + intel_de_write(display, dsc_reg[i], pps_val); > >> > } > >> > > >> > static void intel_dsc_pps_configure(const struct intel_crtc_state > >> > *crtc_state) { > >> > + struct intel_display *display = to_intel_display(crtc_state); > >> > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > >> > const struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; > >> > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; > >> > enum pipe pipe = crtc->pipe; > >> > @@ -529,7 +527,7 @@ static void intel_dsc_pps_configure(const > >> > struct > >> intel_crtc_state *crtc_state) > >> > vdsc_cfg->slice_height); > >> > intel_dsc_pps_write(crtc_state, 16, pps_val); > >> > > >> > - if (DISPLAY_VER(dev_priv) >= 14) { > >> > + if (DISPLAY_VER(display) >= 14) { > >> > /* PPS 17 */ > >> > pps_val = DSC_PPS17_SL_BPG_OFFSET(vdsc_cfg- > >> >second_line_bpg_offset); > >> > intel_dsc_pps_write(crtc_state, 17, pps_val); @@ > >> >-547,44 > >> +545,44 @@ > >> > static void intel_dsc_pps_configure(const struct intel_crtc_state > *crtc_state) > >> > (u32)(vdsc_cfg->rc_buf_thresh[i] << > >> > BITS_PER_BYTE * (i % 4)); > >> > if (!is_pipe_dsc(crtc, cpu_transcoder)) { > >> > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_0, > >> > + intel_de_write(display, DSCA_RC_BUF_THRESH_0, > >> > rc_buf_thresh_dword[0]); > >> > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_0_UDW, > >> > + intel_de_write(display, DSCA_RC_BUF_THRESH_0_UDW, > >> > rc_buf_thresh_dword[1]); > >> > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_1, > >> > + intel_de_write(display, DSCA_RC_BUF_THRESH_1, > >> > rc_buf_thresh_dword[2]); > >> > - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_1_UDW, > >> > + intel_de_write(display, DSCA_RC_BUF_THRESH_1_UDW, > >> > rc_buf_thresh_dword[3]); > >> > if (vdsc_instances_per_pipe > 1) { > >> > - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_0, > >> > + intel_de_write(display, DSCC_RC_BUF_THRESH_0, > >> > rc_buf_thresh_dword[0]); > >> > - intel_de_write(dev_priv, > >> DSCC_RC_BUF_THRESH_0_UDW, > >> > + intel_de_write(display, > >> DSCC_RC_BUF_THRESH_0_UDW, > >> > rc_buf_thresh_dword[1]); > >> > - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_1, > >> > + intel_de_write(display, DSCC_RC_BUF_THRESH_1, > >> > rc_buf_thresh_dword[2]); > >> > - intel_de_write(dev_priv, > >> DSCC_RC_BUF_THRESH_1_UDW, > >> > + intel_de_write(display, > >> DSCC_RC_BUF_THRESH_1_UDW, > >> > rc_buf_thresh_dword[3]); > >> > } > >> > } else { > >> > - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_0(pipe), > >> > + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_0(pipe), > >> > rc_buf_thresh_dword[0]); > >> > - intel_de_write(dev_priv, > >> ICL_DSC0_RC_BUF_THRESH_0_UDW(pipe), > >> > + intel_de_write(display, > >> ICL_DSC0_RC_BUF_THRESH_0_UDW(pipe), > >> > rc_buf_thresh_dword[1]); > >> > - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_1(pipe), > >> > + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_1(pipe), > >> > rc_buf_thresh_dword[2]); > >> > - intel_de_write(dev_priv, > >> ICL_DSC0_RC_BUF_THRESH_1_UDW(pipe), > >> > + intel_de_write(display, > >> ICL_DSC0_RC_BUF_THRESH_1_UDW(pipe), > >> > rc_buf_thresh_dword[3]); > >> > if (vdsc_instances_per_pipe > 1) { > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > ICL_DSC1_RC_BUF_THRESH_0(pipe), > >> > rc_buf_thresh_dword[0]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > ICL_DSC1_RC_BUF_THRESH_0_UDW(pipe), > >> > rc_buf_thresh_dword[1]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > ICL_DSC1_RC_BUF_THRESH_1(pipe), > >> > rc_buf_thresh_dword[2]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > ICL_DSC1_RC_BUF_THRESH_1_UDW(pipe), > >> > rc_buf_thresh_dword[3]); > >> > } > >> > @@ -601,88 +599,88 @@ static void intel_dsc_pps_configure(const > >> > struct > >> intel_crtc_state *crtc_state) > >> > (vdsc_cfg->rc_range_params[i].range_min_qp << > >> > RC_MIN_QP_SHIFT)) << 16 * (i % 2)); > >> > if (!is_pipe_dsc(crtc, cpu_transcoder)) { > >> > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_0, > >> > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_0, > >> > rc_range_params_dword[0]); > >> > - intel_de_write(dev_priv, > >> DSCA_RC_RANGE_PARAMETERS_0_UDW, > >> > + intel_de_write(display, > >> DSCA_RC_RANGE_PARAMETERS_0_UDW, > >> > rc_range_params_dword[1]); > >> > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_1, > >> > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_1, > >> > rc_range_params_dword[2]); > >> > - intel_de_write(dev_priv, > >> DSCA_RC_RANGE_PARAMETERS_1_UDW, > >> > + intel_de_write(display, > >> DSCA_RC_RANGE_PARAMETERS_1_UDW, > >> > rc_range_params_dword[3]); > >> > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_2, > >> > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_2, > >> > rc_range_params_dword[4]); > >> > - intel_de_write(dev_priv, > >> DSCA_RC_RANGE_PARAMETERS_2_UDW, > >> > + intel_de_write(display, > >> DSCA_RC_RANGE_PARAMETERS_2_UDW, > >> > rc_range_params_dword[5]); > >> > - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_3, > >> > + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_3, > >> > rc_range_params_dword[6]); > >> > - intel_de_write(dev_priv, > >> DSCA_RC_RANGE_PARAMETERS_3_UDW, > >> > + intel_de_write(display, > >> DSCA_RC_RANGE_PARAMETERS_3_UDW, > >> > rc_range_params_dword[7]); > >> > if (vdsc_instances_per_pipe > 1) { > >> > - intel_de_write(dev_priv, > >> DSCC_RC_RANGE_PARAMETERS_0, > >> > + intel_de_write(display, > >> DSCC_RC_RANGE_PARAMETERS_0, > >> > rc_range_params_dword[0]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > DSCC_RC_RANGE_PARAMETERS_0_UDW, > >> > rc_range_params_dword[1]); > >> > - intel_de_write(dev_priv, > >> DSCC_RC_RANGE_PARAMETERS_1, > >> > + intel_de_write(display, > >> DSCC_RC_RANGE_PARAMETERS_1, > >> > rc_range_params_dword[2]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > DSCC_RC_RANGE_PARAMETERS_1_UDW, > >> > rc_range_params_dword[3]); > >> > - intel_de_write(dev_priv, > >> DSCC_RC_RANGE_PARAMETERS_2, > >> > + intel_de_write(display, > >> DSCC_RC_RANGE_PARAMETERS_2, > >> > rc_range_params_dword[4]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > DSCC_RC_RANGE_PARAMETERS_2_UDW, > >> > rc_range_params_dword[5]); > >> > - intel_de_write(dev_priv, > >> DSCC_RC_RANGE_PARAMETERS_3, > >> > + intel_de_write(display, > >> DSCC_RC_RANGE_PARAMETERS_3, > >> > rc_range_params_dword[6]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > DSCC_RC_RANGE_PARAMETERS_3_UDW, > >> > rc_range_params_dword[7]); > >> > } > >> > } else { > >> > - intel_de_write(dev_priv, > >> ICL_DSC0_RC_RANGE_PARAMETERS_0(pipe), > >> > + intel_de_write(display, > >> ICL_DSC0_RC_RANGE_PARAMETERS_0(pipe), > >> > rc_range_params_dword[0]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC0_RC_RANGE_PARAMETERS_0_UDW(pipe), > >> > rc_range_params_dword[1]); > >> > - intel_de_write(dev_priv, > >> ICL_DSC0_RC_RANGE_PARAMETERS_1(pipe), > >> > + intel_de_write(display, > >> ICL_DSC0_RC_RANGE_PARAMETERS_1(pipe), > >> > rc_range_params_dword[2]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC0_RC_RANGE_PARAMETERS_1_UDW(pipe), > >> > rc_range_params_dword[3]); > >> > - intel_de_write(dev_priv, > >> ICL_DSC0_RC_RANGE_PARAMETERS_2(pipe), > >> > + intel_de_write(display, > >> ICL_DSC0_RC_RANGE_PARAMETERS_2(pipe), > >> > rc_range_params_dword[4]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC0_RC_RANGE_PARAMETERS_2_UDW(pipe), > >> > rc_range_params_dword[5]); > >> > - intel_de_write(dev_priv, > >> ICL_DSC0_RC_RANGE_PARAMETERS_3(pipe), > >> > + intel_de_write(display, > >> ICL_DSC0_RC_RANGE_PARAMETERS_3(pipe), > >> > rc_range_params_dword[6]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC0_RC_RANGE_PARAMETERS_3_UDW(pipe), > >> > rc_range_params_dword[7]); > >> > if (vdsc_instances_per_pipe > 1) { > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC1_RC_RANGE_PARAMETERS_0(pipe), > >> > rc_range_params_dword[0]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC1_RC_RANGE_PARAMETERS_0_UDW(pipe), > >> > rc_range_params_dword[1]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC1_RC_RANGE_PARAMETERS_1(pipe), > >> > rc_range_params_dword[2]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC1_RC_RANGE_PARAMETERS_1_UDW(pipe), > >> > rc_range_params_dword[3]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC1_RC_RANGE_PARAMETERS_2(pipe), > >> > rc_range_params_dword[4]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC1_RC_RANGE_PARAMETERS_2_UDW(pipe), > >> > rc_range_params_dword[5]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC1_RC_RANGE_PARAMETERS_3(pipe), > >> > rc_range_params_dword[6]); > >> > - intel_de_write(dev_priv, > >> > + intel_de_write(display, > >> > > >> ICL_DSC1_RC_RANGE_PARAMETERS_3_UDW(pipe), > >> > rc_range_params_dword[7]); > >> > } > >> > @@ -746,8 +744,8 @@ static i915_reg_t dss_ctl2_reg(struct > >> > intel_crtc *crtc, enum transcoder cpu_tran > >> > > >> > void intel_uncompressed_joiner_enable(const struct > >> > intel_crtc_state > >> > *crtc_state) { > >> > + struct intel_display *display = to_intel_display(crtc_state); > >> > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > >> > u32 dss_ctl1_val = 0; > >> > > >> > if (crtc_state->joiner_pipes && > >> > !crtc_state->dsc.compression_enable) > >> > { @@ -756,14 +754,15 @@ void intel_uncompressed_joiner_enable(const > >> struct intel_crtc_state *crtc_state) > >> > else > >> > dss_ctl1_val |= UNCOMPRESSED_JOINER_PRIMARY; > >> > > >> > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state- > >> >cpu_transcoder), dss_ctl1_val); > >> > + intel_de_write(display, dss_ctl1_reg(crtc, crtc_state- > >> >cpu_transcoder), > >> > + dss_ctl1_val); > >> > } > >> > } > >> > > >> > void intel_dsc_enable(const struct intel_crtc_state *crtc_state) > >> > { > >> > + struct intel_display *display = to_intel_display(crtc_state); > >> > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > >> > u32 dss_ctl1_val = 0; > >> > u32 dss_ctl2_val = 0; > >> > int vdsc_instances_per_pipe = > >> > intel_dsc_get_vdsc_per_pipe(crtc_state); > >> > @@ -796,28 +795,27 @@ void intel_dsc_enable(const struct > >> > intel_crtc_state > >> *crtc_state) > >> > if (intel_crtc_is_bigjoiner_primary(crtc_state)) > >> > dss_ctl1_val |= PRIMARY_BIG_JOINER_ENABLE; > >> > } > >> > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state- > >> >cpu_transcoder), dss_ctl1_val); > >> > - intel_de_write(dev_priv, dss_ctl2_reg(crtc, crtc_state- > >> >cpu_transcoder), dss_ctl2_val); > >> > + intel_de_write(display, dss_ctl1_reg(crtc, > >> > + crtc_state->cpu_transcoder), > >> dss_ctl1_val); > >> > + intel_de_write(display, dss_ctl2_reg(crtc, > >> > +crtc_state->cpu_transcoder), dss_ctl2_val); > >> > } > >> > > >> > void intel_dsc_disable(const struct intel_crtc_state > >> > *old_crtc_state) { > >> > + struct intel_display *display = > >> > + to_intel_display(old_crtc_state); > >> > struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->uapi.crtc); > >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > >> > > >> > /* Disable only if either of them is enabled */ > >> > if (old_crtc_state->dsc.compression_enable || > >> > old_crtc_state->joiner_pipes) { > >> > - intel_de_write(dev_priv, dss_ctl1_reg(crtc, old_crtc_state- > >> >cpu_transcoder), 0); > >> > - intel_de_write(dev_priv, dss_ctl2_reg(crtc, old_crtc_state- > >> >cpu_transcoder), 0); > >> > + intel_de_write(display, dss_ctl1_reg(crtc, > >> > + old_crtc_state- > >> >cpu_transcoder), 0); > >> > + intel_de_write(display, dss_ctl2_reg(crtc, > >> > +old_crtc_state->cpu_transcoder), 0); > >> > } > >> > } > >> > > >> > static u32 intel_dsc_pps_read(struct intel_crtc_state *crtc_state, int pps, > >> > bool *all_equal) { > >> > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > >> > + struct intel_display *display = to_intel_display(crtc_state); > >> > i915_reg_t dsc_reg[3]; > >> > int i, vdsc_per_pipe, dsc_reg_num; > >> > u32 val; > >> > @@ -825,16 +823,16 @@ static u32 intel_dsc_pps_read(struct > >> intel_crtc_state *crtc_state, int pps, > >> > vdsc_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); > >> > dsc_reg_num = min_t(int, ARRAY_SIZE(dsc_reg), vdsc_per_pipe); > >> > > >> > - drm_WARN_ON_ONCE(&i915->drm, dsc_reg_num < vdsc_per_pipe); > >> > + drm_WARN_ON_ONCE(display->drm, dsc_reg_num < vdsc_per_pipe); > >> > > >> > intel_dsc_get_pps_reg(crtc_state, pps, dsc_reg, dsc_reg_num); > >> > > >> > *all_equal = true; > >> > > >> > - val = intel_de_read(i915, dsc_reg[0]); > >> > + val = intel_de_read(display, dsc_reg[0]); > >> > > >> > for (i = 1; i < dsc_reg_num; i++) { > >> > - if (intel_de_read(i915, dsc_reg[i]) != val) { > >> > + if (intel_de_read(display, dsc_reg[i]) != val) { > >> > *all_equal = false; > >> > break; > >> > } > >> > @@ -845,22 +843,20 @@ static u32 intel_dsc_pps_read(struct > >> > intel_crtc_state *crtc_state, int pps, > >> > > >> > static u32 intel_dsc_pps_read_and_verify(struct intel_crtc_state > >> > *crtc_state, int pps) { > >> > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > >> > + struct intel_display *display = to_intel_display(crtc_state); > >> > u32 val; > >> > bool all_equal; > >> > > >> > val = intel_dsc_pps_read(crtc_state, pps, &all_equal); > >> > - drm_WARN_ON(&i915->drm, !all_equal); > >> > + drm_WARN_ON(display->drm, !all_equal); > >> > > >> > return val; > >> > } > >> > > >> > static void intel_dsc_get_pps_config(struct intel_crtc_state > >> > *crtc_state) { > >> > + struct intel_display *display = to_intel_display(crtc_state); > >> > struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; > >> > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > >> > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > >> > int num_vdsc_instances = > >> intel_dsc_get_num_vdsc_instances(crtc_state); > >> > u32 pps_temp; > >> > > >> > @@ -946,7 +942,7 @@ static void intel_dsc_get_pps_config(struct > >> > intel_crtc_state *crtc_state) > >> > > >> > vdsc_cfg->slice_chunk_size = > >> > REG_FIELD_GET(DSC_PPS16_SLICE_CHUNK_SIZE_MASK, pps_temp); > >> > > >> > - if (DISPLAY_VER(i915) >= 14) { > >> > + if (DISPLAY_VER(display) >= 14) { > >> > /* PPS 17 */ > >> > pps_temp = intel_dsc_pps_read_and_verify(crtc_state, > >> > 17); > >> > > >> > @@ -964,7 +960,6 @@ void intel_dsc_get_config(struct > >> > intel_crtc_state > >> > *crtc_state) { > >> > struct intel_display *display = to_intel_display(crtc_state); > >> > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > >> > - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); > >> > enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; > >> > enum intel_display_power_domain power_domain; > >> > intel_wakeref_t wakeref; > >> > @@ -979,8 +974,8 @@ void intel_dsc_get_config(struct > >> > intel_crtc_state > >> *crtc_state) > >> > if (!wakeref) > >> > return; > >> > > >> > - dss_ctl1 = intel_de_read(dev_priv, dss_ctl1_reg(crtc, cpu_transcoder)); > >> > - dss_ctl2 = intel_de_read(dev_priv, dss_ctl2_reg(crtc, cpu_transcoder)); > >> > + dss_ctl1 = intel_de_read(display, dss_ctl1_reg(crtc, cpu_transcoder)); > >> > + dss_ctl2 = intel_de_read(display, dss_ctl2_reg(crtc, > >> > +cpu_transcoder)); > >> > > >> > crtc_state->dsc.compression_enable = dss_ctl2 & VDSC0_ENABLE; > >> > if (!crtc_state->dsc.compression_enable) > >> > @@ -1020,8 +1015,7 @@ void intel_vdsc_state_dump(struct drm_printer > >> > *p, int indent, > >> > > >> > int intel_vdsc_min_cdclk(const struct intel_crtc_state > >> > *crtc_state) { > >> > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > >> > - struct intel_display *display = to_intel_display(crtc); > >> > + struct intel_display *display = to_intel_display(crtc_state); > >> > int num_vdsc_instances = > >> intel_dsc_get_num_vdsc_instances(crtc_state); > >> > int min_cdclk; > >> > >> -- > >> Jani Nikula, Intel > > -- > Jani Nikula, Intel
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c index 6e7151346382..35d558ca98db 100644 --- a/drivers/gpu/drm/i915/display/intel_vdsc.c +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c @@ -22,14 +22,13 @@ bool intel_dsc_source_support(const struct intel_crtc_state *crtc_state) { - const struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *i915 = to_i915(crtc->base.dev); + struct intel_display *display = to_intel_display(crtc_state); enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; - if (!HAS_DSC(i915)) + if (!HAS_DSC(display)) return false; - if (DISPLAY_VER(i915) == 11 && cpu_transcoder == TRANSCODER_A) + if (DISPLAY_VER(display) == 11 && cpu_transcoder == TRANSCODER_A) return false; return true; @@ -37,9 +36,9 @@ bool intel_dsc_source_support(const struct intel_crtc_state *crtc_state) static bool is_pipe_dsc(struct intel_crtc *crtc, enum transcoder cpu_transcoder) { - struct drm_i915_private *i915 = to_i915(crtc->base.dev); + struct intel_display *display = to_intel_display(crtc); - if (DISPLAY_VER(i915) >= 12) + if (DISPLAY_VER(display) >= 12) return true; if (cpu_transcoder == TRANSCODER_EDP || @@ -48,7 +47,7 @@ static bool is_pipe_dsc(struct intel_crtc *crtc, enum transcoder cpu_transcoder) return false; /* There's no pipe A DSC engine on ICL */ - drm_WARN_ON(&i915->drm, crtc->pipe == PIPE_A); + drm_WARN_ON(display->drm, crtc->pipe == PIPE_A); return true; } @@ -262,8 +261,7 @@ static int intel_dsc_slice_dimensions_valid(struct intel_crtc_state *pipe_config int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) { - struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc); - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); + struct intel_display *display = to_intel_display(pipe_config); struct drm_dsc_config *vdsc_cfg = &pipe_config->dsc.config; u16 compressed_bpp = fxp_q4_to_int(pipe_config->dsc.compressed_bpp_x16); int err; @@ -276,7 +274,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) err = intel_dsc_slice_dimensions_valid(pipe_config, vdsc_cfg); if (err) { - drm_dbg_kms(&dev_priv->drm, "Slice dimension requirements not met\n"); + drm_dbg_kms(display->drm, "Slice dimension requirements not met\n"); return err; } @@ -287,7 +285,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) vdsc_cfg->convert_rgb = pipe_config->output_format != INTEL_OUTPUT_FORMAT_YCBCR420 && pipe_config->output_format != INTEL_OUTPUT_FORMAT_YCBCR444; - if (DISPLAY_VER(dev_priv) >= 14 && + if (DISPLAY_VER(display) >= 14 && pipe_config->output_format == INTEL_OUTPUT_FORMAT_YCBCR420) vdsc_cfg->native_420 = true; /* We do not support YcBCr422 as of now */ @@ -308,7 +306,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) vdsc_cfg->bits_per_component = pipe_config->pipe_bpp / 3; if (vdsc_cfg->bits_per_component < 8) { - drm_dbg_kms(&dev_priv->drm, "DSC bpc requirements not met bpc: %d\n", + drm_dbg_kms(display->drm, "DSC bpc requirements not met bpc: %d\n", vdsc_cfg->bits_per_component); return -EINVAL; } @@ -320,7 +318,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) * upto uncompressed bpp-1, hence add calculations for all the rc * parameters */ - if (DISPLAY_VER(dev_priv) >= 13) { + if (DISPLAY_VER(display) >= 13) { calculate_rc_params(vdsc_cfg); } else { if ((compressed_bpp == 8 || @@ -356,7 +354,7 @@ int intel_dsc_compute_params(struct intel_crtc_state *pipe_config) enum intel_display_power_domain intel_dsc_power_domain(struct intel_crtc *crtc, enum transcoder cpu_transcoder) { - struct drm_i915_private *i915 = to_i915(crtc->base.dev); + struct intel_display *display = to_intel_display(crtc); enum pipe pipe = crtc->pipe; /* @@ -370,7 +368,8 @@ intel_dsc_power_domain(struct intel_crtc *crtc, enum transcoder cpu_transcoder) * the pipe in use. Hence another reference on the pipe power domain * will suffice. (Except no VDSC/joining on ICL pipe A.) */ - if (DISPLAY_VER(i915) == 12 && !IS_ROCKETLAKE(i915) && pipe == PIPE_A) + if (DISPLAY_VER(display) == 12 && !display->platform.rocketlake && + pipe == PIPE_A) return POWER_DOMAIN_TRANSCODER_VDSC_PW2; else if (is_pipe_dsc(crtc, cpu_transcoder)) return POWER_DOMAIN_PIPE(pipe); @@ -416,26 +415,25 @@ static void intel_dsc_get_pps_reg(const struct intel_crtc_state *crtc_state, int static void intel_dsc_pps_write(const struct intel_crtc_state *crtc_state, int pps, u32 pps_val) { - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *i915 = to_i915(crtc->base.dev); + struct intel_display *display = to_intel_display(crtc_state); i915_reg_t dsc_reg[3]; int i, vdsc_per_pipe, dsc_reg_num; vdsc_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); dsc_reg_num = min_t(int, ARRAY_SIZE(dsc_reg), vdsc_per_pipe); - drm_WARN_ON_ONCE(&i915->drm, dsc_reg_num < vdsc_per_pipe); + drm_WARN_ON_ONCE(display->drm, dsc_reg_num < vdsc_per_pipe); intel_dsc_get_pps_reg(crtc_state, pps, dsc_reg, dsc_reg_num); for (i = 0; i < dsc_reg_num; i++) - intel_de_write(i915, dsc_reg[i], pps_val); + intel_de_write(display, dsc_reg[i], pps_val); } static void intel_dsc_pps_configure(const struct intel_crtc_state *crtc_state) { + struct intel_display *display = to_intel_display(crtc_state); struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); const struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; enum pipe pipe = crtc->pipe; @@ -529,7 +527,7 @@ static void intel_dsc_pps_configure(const struct intel_crtc_state *crtc_state) vdsc_cfg->slice_height); intel_dsc_pps_write(crtc_state, 16, pps_val); - if (DISPLAY_VER(dev_priv) >= 14) { + if (DISPLAY_VER(display) >= 14) { /* PPS 17 */ pps_val = DSC_PPS17_SL_BPG_OFFSET(vdsc_cfg->second_line_bpg_offset); intel_dsc_pps_write(crtc_state, 17, pps_val); @@ -547,44 +545,44 @@ static void intel_dsc_pps_configure(const struct intel_crtc_state *crtc_state) (u32)(vdsc_cfg->rc_buf_thresh[i] << BITS_PER_BYTE * (i % 4)); if (!is_pipe_dsc(crtc, cpu_transcoder)) { - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_0, + intel_de_write(display, DSCA_RC_BUF_THRESH_0, rc_buf_thresh_dword[0]); - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_0_UDW, + intel_de_write(display, DSCA_RC_BUF_THRESH_0_UDW, rc_buf_thresh_dword[1]); - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_1, + intel_de_write(display, DSCA_RC_BUF_THRESH_1, rc_buf_thresh_dword[2]); - intel_de_write(dev_priv, DSCA_RC_BUF_THRESH_1_UDW, + intel_de_write(display, DSCA_RC_BUF_THRESH_1_UDW, rc_buf_thresh_dword[3]); if (vdsc_instances_per_pipe > 1) { - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_0, + intel_de_write(display, DSCC_RC_BUF_THRESH_0, rc_buf_thresh_dword[0]); - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_0_UDW, + intel_de_write(display, DSCC_RC_BUF_THRESH_0_UDW, rc_buf_thresh_dword[1]); - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_1, + intel_de_write(display, DSCC_RC_BUF_THRESH_1, rc_buf_thresh_dword[2]); - intel_de_write(dev_priv, DSCC_RC_BUF_THRESH_1_UDW, + intel_de_write(display, DSCC_RC_BUF_THRESH_1_UDW, rc_buf_thresh_dword[3]); } } else { - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_0(pipe), + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_0(pipe), rc_buf_thresh_dword[0]); - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_0_UDW(pipe), + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_0_UDW(pipe), rc_buf_thresh_dword[1]); - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_1(pipe), + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_1(pipe), rc_buf_thresh_dword[2]); - intel_de_write(dev_priv, ICL_DSC0_RC_BUF_THRESH_1_UDW(pipe), + intel_de_write(display, ICL_DSC0_RC_BUF_THRESH_1_UDW(pipe), rc_buf_thresh_dword[3]); if (vdsc_instances_per_pipe > 1) { - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_BUF_THRESH_0(pipe), rc_buf_thresh_dword[0]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_BUF_THRESH_0_UDW(pipe), rc_buf_thresh_dword[1]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_BUF_THRESH_1(pipe), rc_buf_thresh_dword[2]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_BUF_THRESH_1_UDW(pipe), rc_buf_thresh_dword[3]); } @@ -601,88 +599,88 @@ static void intel_dsc_pps_configure(const struct intel_crtc_state *crtc_state) (vdsc_cfg->rc_range_params[i].range_min_qp << RC_MIN_QP_SHIFT)) << 16 * (i % 2)); if (!is_pipe_dsc(crtc, cpu_transcoder)) { - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_0, + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_0, rc_range_params_dword[0]); - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_0_UDW, + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_0_UDW, rc_range_params_dword[1]); - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_1, + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_1, rc_range_params_dword[2]); - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_1_UDW, + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_1_UDW, rc_range_params_dword[3]); - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_2, + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_2, rc_range_params_dword[4]); - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_2_UDW, + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_2_UDW, rc_range_params_dword[5]); - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_3, + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_3, rc_range_params_dword[6]); - intel_de_write(dev_priv, DSCA_RC_RANGE_PARAMETERS_3_UDW, + intel_de_write(display, DSCA_RC_RANGE_PARAMETERS_3_UDW, rc_range_params_dword[7]); if (vdsc_instances_per_pipe > 1) { - intel_de_write(dev_priv, DSCC_RC_RANGE_PARAMETERS_0, + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_0, rc_range_params_dword[0]); - intel_de_write(dev_priv, + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_0_UDW, rc_range_params_dword[1]); - intel_de_write(dev_priv, DSCC_RC_RANGE_PARAMETERS_1, + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_1, rc_range_params_dword[2]); - intel_de_write(dev_priv, + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_1_UDW, rc_range_params_dword[3]); - intel_de_write(dev_priv, DSCC_RC_RANGE_PARAMETERS_2, + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_2, rc_range_params_dword[4]); - intel_de_write(dev_priv, + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_2_UDW, rc_range_params_dword[5]); - intel_de_write(dev_priv, DSCC_RC_RANGE_PARAMETERS_3, + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_3, rc_range_params_dword[6]); - intel_de_write(dev_priv, + intel_de_write(display, DSCC_RC_RANGE_PARAMETERS_3_UDW, rc_range_params_dword[7]); } } else { - intel_de_write(dev_priv, ICL_DSC0_RC_RANGE_PARAMETERS_0(pipe), + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_0(pipe), rc_range_params_dword[0]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_0_UDW(pipe), rc_range_params_dword[1]); - intel_de_write(dev_priv, ICL_DSC0_RC_RANGE_PARAMETERS_1(pipe), + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_1(pipe), rc_range_params_dword[2]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_1_UDW(pipe), rc_range_params_dword[3]); - intel_de_write(dev_priv, ICL_DSC0_RC_RANGE_PARAMETERS_2(pipe), + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_2(pipe), rc_range_params_dword[4]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_2_UDW(pipe), rc_range_params_dword[5]); - intel_de_write(dev_priv, ICL_DSC0_RC_RANGE_PARAMETERS_3(pipe), + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_3(pipe), rc_range_params_dword[6]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC0_RC_RANGE_PARAMETERS_3_UDW(pipe), rc_range_params_dword[7]); if (vdsc_instances_per_pipe > 1) { - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_RANGE_PARAMETERS_0(pipe), rc_range_params_dword[0]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_RANGE_PARAMETERS_0_UDW(pipe), rc_range_params_dword[1]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_RANGE_PARAMETERS_1(pipe), rc_range_params_dword[2]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_RANGE_PARAMETERS_1_UDW(pipe), rc_range_params_dword[3]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_RANGE_PARAMETERS_2(pipe), rc_range_params_dword[4]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_RANGE_PARAMETERS_2_UDW(pipe), rc_range_params_dword[5]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_RANGE_PARAMETERS_3(pipe), rc_range_params_dword[6]); - intel_de_write(dev_priv, + intel_de_write(display, ICL_DSC1_RC_RANGE_PARAMETERS_3_UDW(pipe), rc_range_params_dword[7]); } @@ -746,8 +744,8 @@ static i915_reg_t dss_ctl2_reg(struct intel_crtc *crtc, enum transcoder cpu_tran void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state) { + struct intel_display *display = to_intel_display(crtc_state); struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); u32 dss_ctl1_val = 0; if (crtc_state->joiner_pipes && !crtc_state->dsc.compression_enable) { @@ -756,14 +754,15 @@ void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state) else dss_ctl1_val |= UNCOMPRESSED_JOINER_PRIMARY; - intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val); + intel_de_write(display, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), + dss_ctl1_val); } } void intel_dsc_enable(const struct intel_crtc_state *crtc_state) { + struct intel_display *display = to_intel_display(crtc_state); struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); u32 dss_ctl1_val = 0; u32 dss_ctl2_val = 0; int vdsc_instances_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); @@ -796,28 +795,27 @@ void intel_dsc_enable(const struct intel_crtc_state *crtc_state) if (intel_crtc_is_bigjoiner_primary(crtc_state)) dss_ctl1_val |= PRIMARY_BIG_JOINER_ENABLE; } - intel_de_write(dev_priv, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val); - intel_de_write(dev_priv, dss_ctl2_reg(crtc, crtc_state->cpu_transcoder), dss_ctl2_val); + intel_de_write(display, dss_ctl1_reg(crtc, crtc_state->cpu_transcoder), dss_ctl1_val); + intel_de_write(display, dss_ctl2_reg(crtc, crtc_state->cpu_transcoder), dss_ctl2_val); } void intel_dsc_disable(const struct intel_crtc_state *old_crtc_state) { + struct intel_display *display = to_intel_display(old_crtc_state); struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->uapi.crtc); - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); /* Disable only if either of them is enabled */ if (old_crtc_state->dsc.compression_enable || old_crtc_state->joiner_pipes) { - intel_de_write(dev_priv, dss_ctl1_reg(crtc, old_crtc_state->cpu_transcoder), 0); - intel_de_write(dev_priv, dss_ctl2_reg(crtc, old_crtc_state->cpu_transcoder), 0); + intel_de_write(display, dss_ctl1_reg(crtc, old_crtc_state->cpu_transcoder), 0); + intel_de_write(display, dss_ctl2_reg(crtc, old_crtc_state->cpu_transcoder), 0); } } static u32 intel_dsc_pps_read(struct intel_crtc_state *crtc_state, int pps, bool *all_equal) { - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *i915 = to_i915(crtc->base.dev); + struct intel_display *display = to_intel_display(crtc_state); i915_reg_t dsc_reg[3]; int i, vdsc_per_pipe, dsc_reg_num; u32 val; @@ -825,16 +823,16 @@ static u32 intel_dsc_pps_read(struct intel_crtc_state *crtc_state, int pps, vdsc_per_pipe = intel_dsc_get_vdsc_per_pipe(crtc_state); dsc_reg_num = min_t(int, ARRAY_SIZE(dsc_reg), vdsc_per_pipe); - drm_WARN_ON_ONCE(&i915->drm, dsc_reg_num < vdsc_per_pipe); + drm_WARN_ON_ONCE(display->drm, dsc_reg_num < vdsc_per_pipe); intel_dsc_get_pps_reg(crtc_state, pps, dsc_reg, dsc_reg_num); *all_equal = true; - val = intel_de_read(i915, dsc_reg[0]); + val = intel_de_read(display, dsc_reg[0]); for (i = 1; i < dsc_reg_num; i++) { - if (intel_de_read(i915, dsc_reg[i]) != val) { + if (intel_de_read(display, dsc_reg[i]) != val) { *all_equal = false; break; } @@ -845,22 +843,20 @@ static u32 intel_dsc_pps_read(struct intel_crtc_state *crtc_state, int pps, static u32 intel_dsc_pps_read_and_verify(struct intel_crtc_state *crtc_state, int pps) { - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *i915 = to_i915(crtc->base.dev); + struct intel_display *display = to_intel_display(crtc_state); u32 val; bool all_equal; val = intel_dsc_pps_read(crtc_state, pps, &all_equal); - drm_WARN_ON(&i915->drm, !all_equal); + drm_WARN_ON(display->drm, !all_equal); return val; } static void intel_dsc_get_pps_config(struct intel_crtc_state *crtc_state) { + struct intel_display *display = to_intel_display(crtc_state); struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *i915 = to_i915(crtc->base.dev); int num_vdsc_instances = intel_dsc_get_num_vdsc_instances(crtc_state); u32 pps_temp; @@ -946,7 +942,7 @@ static void intel_dsc_get_pps_config(struct intel_crtc_state *crtc_state) vdsc_cfg->slice_chunk_size = REG_FIELD_GET(DSC_PPS16_SLICE_CHUNK_SIZE_MASK, pps_temp); - if (DISPLAY_VER(i915) >= 14) { + if (DISPLAY_VER(display) >= 14) { /* PPS 17 */ pps_temp = intel_dsc_pps_read_and_verify(crtc_state, 17); @@ -964,7 +960,6 @@ void intel_dsc_get_config(struct intel_crtc_state *crtc_state) { struct intel_display *display = to_intel_display(crtc_state); struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; enum intel_display_power_domain power_domain; intel_wakeref_t wakeref; @@ -979,8 +974,8 @@ void intel_dsc_get_config(struct intel_crtc_state *crtc_state) if (!wakeref) return; - dss_ctl1 = intel_de_read(dev_priv, dss_ctl1_reg(crtc, cpu_transcoder)); - dss_ctl2 = intel_de_read(dev_priv, dss_ctl2_reg(crtc, cpu_transcoder)); + dss_ctl1 = intel_de_read(display, dss_ctl1_reg(crtc, cpu_transcoder)); + dss_ctl2 = intel_de_read(display, dss_ctl2_reg(crtc, cpu_transcoder)); crtc_state->dsc.compression_enable = dss_ctl2 & VDSC0_ENABLE; if (!crtc_state->dsc.compression_enable) @@ -1020,8 +1015,7 @@ void intel_vdsc_state_dump(struct drm_printer *p, int indent, int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state) { - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct intel_display *display = to_intel_display(crtc); + struct intel_display *display = to_intel_display(crtc_state); int num_vdsc_instances = intel_dsc_get_num_vdsc_instances(crtc_state); int min_cdclk;
intel_display conversions for vdsc in an effort to move away from drm_i915_private. While at it use display->platform.xx. Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com> --- drivers/gpu/drm/i915/display/intel_vdsc.c | 180 +++++++++++----------- 1 file changed, 87 insertions(+), 93 deletions(-)