On Thu, Nov 12, 2020 at 09:17:17PM +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Collect up a bunch of derived state "readout" into > a common helper, which we can call from both > intel_encoder_get_config() and intel_crtc_get_pipe_config(). > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Makes sense Reviewed-by: Manasi Navare <manasi.d.navare@xxxxxxxxx> Manasi > --- > drivers/gpu/drm/i915/display/intel_display.c | 34 +++++++++++--------- > 1 file changed, 18 insertions(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index ebf621ff7ef6..07b8d945c41f 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -8162,10 +8162,26 @@ static void intel_crtc_compute_pixel_rate(struct intel_crtc_state *crtc_state) > ilk_pipe_pixel_rate(crtc_state); > } > > +static void intel_crtc_readout_derived_state(struct intel_crtc_state *crtc_state) > +{ > + struct drm_display_mode *mode = &crtc_state->hw.mode; > + struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; > + > + intel_mode_from_crtc_timings(adjusted_mode, adjusted_mode); > + > + intel_crtc_compute_pixel_rate(crtc_state); > + > + drm_mode_copy(mode, adjusted_mode); > + mode->hdisplay = crtc_state->pipe_src_w; > + mode->vdisplay = crtc_state->pipe_src_h; > +} > + > static void intel_encoder_get_config(struct intel_encoder *encoder, > struct intel_crtc_state *crtc_state) > { > encoder->get_config(encoder, crtc_state); > + > + intel_crtc_readout_derived_state(crtc_state); > } > > static int intel_crtc_compute_config(struct intel_crtc *crtc, > @@ -9046,9 +9062,6 @@ static void intel_get_pipe_src_size(struct intel_crtc *crtc, > tmp = intel_de_read(dev_priv, PIPESRC(crtc->pipe)); > pipe_config->pipe_src_h = (tmp & 0xffff) + 1; > pipe_config->pipe_src_w = ((tmp >> 16) & 0xffff) + 1; > - > - pipe_config->hw.mode.vdisplay = pipe_config->pipe_src_h; > - pipe_config->hw.mode.hdisplay = pipe_config->pipe_src_w; > } > > static void i9xx_set_pipeconf(const struct intel_crtc_state *crtc_state) > @@ -11417,6 +11430,8 @@ static bool intel_crtc_get_pipe_config(struct intel_crtc_state *crtc_state) > > crtc_state->hw.active = true; > > + intel_crtc_readout_derived_state(crtc_state); > + > return true; > } > > @@ -14469,8 +14484,6 @@ verify_crtc_state(struct intel_crtc *crtc, > intel_encoder_get_config(encoder, pipe_config); > } > > - intel_crtc_compute_pixel_rate(pipe_config); > - > if (!new_crtc_state->hw.active) > return; > > @@ -18839,15 +18852,6 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev) > int min_cdclk = 0; > > if (crtc_state->hw.active) { > - struct drm_display_mode *mode = &crtc_state->hw.mode; > - > - intel_mode_from_crtc_timings(&crtc_state->hw.adjusted_mode, > - &crtc_state->hw.adjusted_mode); > - > - *mode = crtc_state->hw.adjusted_mode; > - mode->hdisplay = crtc_state->pipe_src_w; > - mode->vdisplay = crtc_state->pipe_src_h; > - > /* > * The initial mode needs to be set in order to keep > * the atomic core happy. It wants a valid mode if the > @@ -18859,8 +18863,6 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev) > */ > crtc_state->inherited = true; > > - intel_crtc_compute_pixel_rate(crtc_state); > - > intel_crtc_update_active_timings(crtc_state); > > intel_crtc_copy_hw_to_uapi_state(crtc_state); > -- > 2.26.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx