[Intel-gfx] [PATCH 02/11] drm: Move timestamping constants into drm_vblank_crtc

2015-09-16 Thread Maarten Lankhorst
Op 14-09-15 om 21:43 schreef ville.syrjala at linux.intel.com:
> From: Ville Syrjälä 
>
> Collect the timestamping constants alongside the rest of the relevant
> stuff under drm_vblank_crtc.
>
> We can now get rid of the 'refcrtc' parameter to
> drm_calc_vbltimestamp_from_scanoutpos().
>
> Signed-off-by: Ville Syrjälä 
>
That's a much better place. :-)

I reviewed the whole series and didn't find anything obvious wrong, but didn't 
compile or runtime test it.

For the whole series:
Acked-by: Maarten Lankhorst 


[PATCH 02/11] drm: Move timestamping constants into drm_vblank_crtc

2015-09-14 Thread ville.syrj...@linux.intel.com
From: Ville Syrjälä 

Collect the timestamping constants alongside the rest of the relevant
stuff under drm_vblank_crtc.

We can now get rid of the 'refcrtc' parameter to
drm_calc_vbltimestamp_from_scanoutpos().

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c   |  2 +-
 drivers/gpu/drm/drm_irq.c | 16 
 drivers/gpu/drm/i915/i915_irq.c   |  1 -
 drivers/gpu/drm/nouveau/nouveau_display.c |  5 +++--
 drivers/gpu/drm/radeon/radeon_kms.c   |  2 +-
 include/drm/drmP.h|  4 +++-
 include/drm/drm_crtc.h|  6 --
 7 files changed, 16 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index 2236793..ecfa703 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -681,7 +681,7 @@ int amdgpu_get_vblank_timestamp_kms(struct drm_device *dev, 
int crtc,
/* Helper routine in DRM core does all the work: */
return drm_calc_vbltimestamp_from_scanoutpos(dev, crtc, max_error,
 vblank_time, flags,
-drmcrtc, >hwmode);
+>hwmode);
 }

 const struct drm_ioctl_desc amdgpu_ioctls_kms[] = {
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
index 8df4133..6b2fefd 100644
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -603,6 +603,7 @@ int drm_control(struct drm_device *dev, void *data,
 void drm_calc_timestamping_constants(struct drm_crtc *crtc,
 const struct drm_display_mode *mode)
 {
+   struct drm_vblank_crtc *vblank = 
>dev->vblank[drm_crtc_index(crtc)];
int linedur_ns = 0, pixeldur_ns = 0, framedur_ns = 0;
int dotclock = mode->crtc_clock;

@@ -628,9 +629,9 @@ void drm_calc_timestamping_constants(struct drm_crtc *crtc,
DRM_ERROR("crtc %u: Can't calculate constants, dotclock = 0!\n",
  crtc->base.id);

-   crtc->pixeldur_ns = pixeldur_ns;
-   crtc->linedur_ns  = linedur_ns;
-   crtc->framedur_ns = framedur_ns;
+   vblank->pixeldur_ns = pixeldur_ns;
+   vblank->linedur_ns  = linedur_ns;
+   vblank->framedur_ns = framedur_ns;

DRM_DEBUG("crtc %u: hwmode: htotal %d, vtotal %d, vdisplay %d\n",
  crtc->base.id, mode->crtc_htotal,
@@ -651,7 +652,6 @@ EXPORT_SYMBOL(drm_calc_timestamping_constants);
  * @flags: Flags to pass to driver:
  * 0 = Default,
  * DRM_CALLED_FROM_VBLIRQ = If function is called from vbl IRQ handler
- * @refcrtc: CRTC which defines scanout timing
  * @mode: mode which defines the scanout timings
  *
  * Implements calculation of exact vblank timestamps from given 
drm_display_mode
@@ -692,9 +692,9 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device 
*dev,
  int *max_error,
  struct timeval *vblank_time,
  unsigned flags,
- const struct drm_crtc *refcrtc,
  const struct drm_display_mode *mode)
 {
+   struct drm_vblank_crtc *vblank = >vblank[pipe];
struct timeval tv_etime;
ktime_t stime, etime;
int vbl_status;
@@ -714,9 +714,9 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device 
*dev,
}

/* Durations of frames, lines, pixels in nanoseconds. */
-   framedur_ns = refcrtc->framedur_ns;
-   linedur_ns  = refcrtc->linedur_ns;
-   pixeldur_ns = refcrtc->pixeldur_ns;
+   framedur_ns = vblank->framedur_ns;
+   linedur_ns  = vblank->linedur_ns;
+   pixeldur_ns = vblank->pixeldur_ns;

/* If mode timing undefined, just return as no-op:
 * Happens during initial modesetting of a crtc.
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 90bc6c2..4aee725 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -867,7 +867,6 @@ static int i915_get_vblank_timestamp(struct drm_device 
*dev, int pipe,
/* Helper routine in DRM core does all the work: */
return drm_calc_vbltimestamp_from_scanoutpos(dev, pipe, max_error,
 vblank_time, flags,
-crtc,
 >hwmode);
 }

diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c 
b/drivers/gpu/drm/nouveau/nouveau_display.c
index cc6c228..425515f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -103,6 +103,7 @@ nouveau_display_scanoutpos_head(struct drm_crtc *crtc, int 
*vpos, int *hpos,