Message ID | 1459536530-17754-1-git-send-email-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Apr 01, 2016 at 09:48:50PM +0300, ville.syrjala@linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Eliminate the duplicate code for pipe timing readout in > intel_crtc_mode_get() by using the functions we use for the normal state > readout. I also forgot to point out here that this should fix mode.flags readout for intel_crtc_mode_get(). Previously it just left tha t as 0. > > v2: Store dotclock in adjusted_mode instead of the final mode > > Cc: dri-devel@lists.freedesktop.org > Cc: Rob Kramer <rob@solution-space.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_display.c | 22 ++++------------------ > 1 file changed, 4 insertions(+), 18 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index b6f974dd43c9..f42073837204 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -10719,10 +10719,8 @@ struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev, > { > struct drm_i915_private *dev_priv = dev->dev_private; > struct intel_crtc *intel_crtc = to_intel_crtc(crtc); > - enum transcoder cpu_transcoder; > struct drm_display_mode *mode; > struct intel_crtc_state *pipe_config; > - u32 htot, hsync, vtot, vsync; > enum pipe pipe = intel_crtc->pipe; > > mode = kzalloc(sizeof(*mode), GFP_KERNEL); > @@ -10749,24 +10747,12 @@ struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev, > pipe_config->dpll_hw_state.fp1 = I915_READ(FP1(pipe)); > i9xx_crtc_clock_get(intel_crtc, pipe_config); > > - mode->clock = pipe_config->port_clock / pipe_config->pixel_multiplier; > - > - cpu_transcoder = pipe_config->cpu_transcoder; > - htot = I915_READ(HTOTAL(cpu_transcoder)); > - hsync = I915_READ(HSYNC(cpu_transcoder)); > - vtot = I915_READ(VTOTAL(cpu_transcoder)); > - vsync = I915_READ(VSYNC(cpu_transcoder)); > + pipe_config->base.adjusted_mode.crtc_clock = > + pipe_config->port_clock / pipe_config->pixel_multiplier; > > - mode->hdisplay = (htot & 0xffff) + 1; > - mode->htotal = ((htot & 0xffff0000) >> 16) + 1; > - mode->hsync_start = (hsync & 0xffff) + 1; > - mode->hsync_end = ((hsync & 0xffff0000) >> 16) + 1; > - mode->vdisplay = (vtot & 0xffff) + 1; > - mode->vtotal = ((vtot & 0xffff0000) >> 16) + 1; > - mode->vsync_start = (vsync & 0xffff) + 1; > - mode->vsync_end = ((vsync & 0xffff0000) >> 16) + 1; > + intel_get_pipe_timings(intel_crtc, pipe_config); > > - drm_mode_set_name(mode); > + intel_mode_from_pipe_config(mode, pipe_config); > > kfree(pipe_config); > > -- > 2.7.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Quoting ville.syrjala@linux.intel.com (2016-04-01 19:48:50) > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Eliminate the duplicate code for pipe timing readout in > intel_crtc_mode_get() by using the functions we use for the normal state > readout. > > v2: Store dotclock in adjusted_mode instead of the final mode > > Cc: dri-devel@lists.freedesktop.org > Cc: Rob Kramer <rob@solution-space.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Fixes a pipe-state warn for me, Tested-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris
On Mon, Sep 25, 2017 at 08:19:12PM +0100, Chris Wilson wrote: > Quoting ville.syrjala@linux.intel.com (2016-04-01 19:48:50) > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > Eliminate the duplicate code for pipe timing readout in > > intel_crtc_mode_get() by using the functions we use for the normal state > > readout. > > > > v2: Store dotclock in adjusted_mode instead of the final mode > > > > Cc: dri-devel@lists.freedesktop.org > > Cc: Rob Kramer <rob@solution-space.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Thanks for the review. Patches pushed to dinq. > > Fixes a pipe-state warn for me, > Tested-by: Chris Wilson <chris@chris-wilson.co.uk> However, now that I look at the code again I'm not 100% sure why this fixed anything. The readout still seems to fail at fully populating the mode flags. I'll post a more thorough solution that simply calls the normal state readout hooks for the crtc and encoder...
Quoting Ville Syrjälä (2017-10-09 17:18:17) > On Mon, Sep 25, 2017 at 08:19:12PM +0100, Chris Wilson wrote: > > Quoting ville.syrjala@linux.intel.com (2016-04-01 19:48:50) > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > > > Eliminate the duplicate code for pipe timing readout in > > > intel_crtc_mode_get() by using the functions we use for the normal state > > > readout. > > > > > > v2: Store dotclock in adjusted_mode instead of the final mode > > > > > > Cc: dri-devel@lists.freedesktop.org > > > Cc: Rob Kramer <rob@solution-space.com> > > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> > > Thanks for the review. Patches pushed to dinq. > > > > > Fixes a pipe-state warn for me, > > Tested-by: Chris Wilson <chris@chris-wilson.co.uk> > > However, now that I look at the code again I'm not 100% sure why this > fixed anything. The readout still seems to fail at fully populating the > mode flags. I'll post a more thorough solution that simply calls the > normal state readout hooks for the crtc and encoder... The first patch fixed up the implied A,B transcoder mixup. I just tested both patches together. Do you want me to double check if it was just the first patch that silenced the warnings? I'm just happy to have a clean boot! -Chris
On Mon, Oct 09, 2017 at 05:24:29PM +0100, Chris Wilson wrote: > Quoting Ville Syrjälä (2017-10-09 17:18:17) > > On Mon, Sep 25, 2017 at 08:19:12PM +0100, Chris Wilson wrote: > > > Quoting ville.syrjala@linux.intel.com (2016-04-01 19:48:50) > > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > > > > > Eliminate the duplicate code for pipe timing readout in > > > > intel_crtc_mode_get() by using the functions we use for the normal state > > > > readout. > > > > > > > > v2: Store dotclock in adjusted_mode instead of the final mode > > > > > > > > Cc: dri-devel@lists.freedesktop.org > > > > Cc: Rob Kramer <rob@solution-space.com> > > > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> > > > > Thanks for the review. Patches pushed to dinq. > > > > > > > > Fixes a pipe-state warn for me, > > > Tested-by: Chris Wilson <chris@chris-wilson.co.uk> > > > > However, now that I look at the code again I'm not 100% sure why this > > fixed anything. The readout still seems to fail at fully populating the > > mode flags. I'll post a more thorough solution that simply calls the > > normal state readout hooks for the crtc and encoder... > > The first patch fixed up the implied A,B transcoder mixup. I just tested > both patches together. Do you want me to double check if it was just the > first patch that silenced the warnings? I'm just happy to have a clean > boot! I think the first patch should have been a nop for you since 845g only has the one pipe.
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index b6f974dd43c9..f42073837204 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -10719,10 +10719,8 @@ struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev, { struct drm_i915_private *dev_priv = dev->dev_private; struct intel_crtc *intel_crtc = to_intel_crtc(crtc); - enum transcoder cpu_transcoder; struct drm_display_mode *mode; struct intel_crtc_state *pipe_config; - u32 htot, hsync, vtot, vsync; enum pipe pipe = intel_crtc->pipe; mode = kzalloc(sizeof(*mode), GFP_KERNEL); @@ -10749,24 +10747,12 @@ struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev, pipe_config->dpll_hw_state.fp1 = I915_READ(FP1(pipe)); i9xx_crtc_clock_get(intel_crtc, pipe_config); - mode->clock = pipe_config->port_clock / pipe_config->pixel_multiplier; - - cpu_transcoder = pipe_config->cpu_transcoder; - htot = I915_READ(HTOTAL(cpu_transcoder)); - hsync = I915_READ(HSYNC(cpu_transcoder)); - vtot = I915_READ(VTOTAL(cpu_transcoder)); - vsync = I915_READ(VSYNC(cpu_transcoder)); + pipe_config->base.adjusted_mode.crtc_clock = + pipe_config->port_clock / pipe_config->pixel_multiplier; - mode->hdisplay = (htot & 0xffff) + 1; - mode->htotal = ((htot & 0xffff0000) >> 16) + 1; - mode->hsync_start = (hsync & 0xffff) + 1; - mode->hsync_end = ((hsync & 0xffff0000) >> 16) + 1; - mode->vdisplay = (vtot & 0xffff) + 1; - mode->vtotal = ((vtot & 0xffff0000) >> 16) + 1; - mode->vsync_start = (vsync & 0xffff) + 1; - mode->vsync_end = ((vsync & 0xffff0000) >> 16) + 1; + intel_get_pipe_timings(intel_crtc, pipe_config); - drm_mode_set_name(mode); + intel_mode_from_pipe_config(mode, pipe_config); kfree(pipe_config);