On Thu, Sep 04, 2014 at 12:27:45PM +0100, Damien Lespiau wrote:
> This logically belongs to the WM state, so do it there.
> 
> Signed-off-by: Damien Lespiau <damien.lesp...@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_pm.c | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index d378879..8d24a4d 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -3020,6 +3020,32 @@ static unsigned int skl_cursor_allocation(struct 
> intel_wm_config *config)
>       return 8;
>  }
>  
> +static void skl_ddb_entry_init_from_hw(struct skl_ddb_entry *entry, u32 reg)
> +{
> +     entry->start = reg & 0x3ff;
> +     entry->end = (reg >> 16) & 0x3ff;

Would need a rebase in case the HW register is really inclusive and we
make skl_ddb_entry.end exclusive.

Apart from that 
Reviewed-by: Ville Syrjälä <ville.syrj...@linux.intel.com>

> +}
> +
> +static void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv,
> +                              struct skl_ddb_allocation *ddb /* out */)
> +{
> +     struct drm_device *dev = dev_priv->dev;
> +     enum pipe pipe;
> +     int plane;
> +     u32 val;
> +
> +     for_each_pipe(dev_priv, pipe) {
> +             for_each_plane(pipe, plane) {
> +                     val = I915_READ(PLANE_BUF_CFG(pipe, plane));
> +                     skl_ddb_entry_init_from_hw(&ddb->plane[pipe][plane],
> +                                                val);
> +             }
> +
> +             val = I915_READ(CUR_BUF_CFG(pipe));
> +             skl_ddb_entry_init_from_hw(&ddb->cursor[pipe], val);
> +     }
> +}
> +
>  static unsigned int
>  skl_plane_relative_data_rate(struct intel_plane_wm_parameters *p)
>  {
> @@ -3810,8 +3836,11 @@ static void skl_pipe_wm_get_hw_state(struct drm_crtc 
> *crtc)
>  
>  void skl_wm_get_hw_state(struct drm_device *dev)
>  {
> +     struct drm_i915_private *dev_priv = dev->dev_private;
> +     struct skl_ddb_allocation *ddb = &dev_priv->wm.skl_hw.ddb;
>       struct drm_crtc *crtc;
>  
> +     skl_ddb_get_hw_state(dev_priv, ddb);
>       list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
>               skl_pipe_wm_get_hw_state(crtc);
>  }
> -- 
> 1.8.3.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to