On Wed, Mar 11, 2026 at 05:06:04PM +0530, Ankit Nautiyal wrote: > Replace the consecutive single-byte writes to PANEL_REPLAY_CONFIG and > CONFIG2 with one drm_dp_dpcd_write() burst starting at PANEL_REPLAY_CONFIG, > reducing AUX transactions. > > Suggested-by: Ville Syrjälä <[email protected]> > Signed-off-by: Ankit Nautiyal <[email protected]> > --- > drivers/gpu/drm/i915/display/intel_psr.c | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c > b/drivers/gpu/drm/i915/display/intel_psr.c > index 5041a5a138d1..ee6e26abd05e 100644 > --- a/drivers/gpu/drm/i915/display/intel_psr.c > +++ b/drivers/gpu/drm/i915/display/intel_psr.c > @@ -774,27 +774,33 @@ static bool psr2_su_region_et_valid(struct > intel_connector *connector, bool pane > static void _panel_replay_enable_sink(struct intel_dp *intel_dp, > const struct intel_crtc_state *crtc_state) > { > - u8 val = DP_PANEL_REPLAY_ENABLE | > + struct intel_display *display = to_intel_display(intel_dp); > + u8 panel_replay_config = DP_PANEL_REPLAY_ENABLE | > DP_PANEL_REPLAY_VSC_SDP_CRC_EN | > DP_PANEL_REPLAY_UNRECOVERABLE_ERROR_EN | > DP_PANEL_REPLAY_RFB_STORAGE_ERROR_EN | > DP_PANEL_REPLAY_ACTIVE_FRAME_CRC_ERROR_EN; > u8 panel_replay_config2 = DP_PANEL_REPLAY_CRC_VERIFICATION; > + u8 buf[2];
u8 panel_replay_config[2]; would reduce the number of variables we have to contend with. > + int ret; > > if (crtc_state->has_sel_update) > - val |= DP_PANEL_REPLAY_SU_ENABLE; > + panel_replay_config |= DP_PANEL_REPLAY_SU_ENABLE; > > if (crtc_state->enable_psr2_su_region_et) > - val |= DP_PANEL_REPLAY_ENABLE_SU_REGION_ET; > + panel_replay_config |= DP_PANEL_REPLAY_ENABLE_SU_REGION_ET; > > if (crtc_state->req_psr2_sdp_prior_scanline) > panel_replay_config2 |= > DP_PANEL_REPLAY_SU_REGION_SCANLINE_CAPTURE; > > - drm_dp_dpcd_writeb(&intel_dp->aux, PANEL_REPLAY_CONFIG, val); > + buf[0] = panel_replay_config; > + buf[1] = panel_replay_config2; > + > + ret = drm_dp_dpcd_write(&intel_dp->aux, PANEL_REPLAY_CONFIG, buf, > sizeof(buf)); > > - drm_dp_dpcd_writeb(&intel_dp->aux, PANEL_REPLAY_CONFIG2, > - panel_replay_config2); > + if (ret < 0 || ret != sizeof(buf)) The < 0 check is redunadnt. > + drm_dbg_kms(display->drm, "Failed to write Panel Replay > Configs\n"); > } > > static void _psr_enable_sink(struct intel_dp *intel_dp, > -- > 2.45.2 -- Ville Syrjälä Intel
