[PATCH 09/13] drm/irq: Make pipe unsigned and name consistent

Daniel Vetter daniel at ffwll.ch
Wed Aug 12 08:32:14 PDT 2015


On Wed, Aug 12, 2015 at 05:00:31PM +0200, Thierry Reding wrote:
> From: Thierry Reding <treding at nvidia.com>
> 
> Name all references to the pipe number (CRTC index) consistently to make
> it easier to distinguish which is a pipe number and which is a pointer
> to struct drm_crtc.
> 
> While at it also make all references to the pipe number unsigned because
> there is no longer any reason why it should ever be negative.
> 
> Signed-off-by: Thierry Reding <treding at nvidia.com>

There's 2 "int crtc" and one "int pipe" (without the unsigned) left after
this patch. Can you please do a follow-up? Applied this meanwhile.
-Daniel

> ---
>  drivers/gpu/drm/drm_irq.c | 316 +++++++++++++++++++++++-----------------------
>  include/drm/drmP.h        |  32 ++---
>  2 files changed, 175 insertions(+), 173 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
> index a957b9618e85..f42459b2862d 100644
> --- a/drivers/gpu/drm/drm_irq.c
> +++ b/drivers/gpu/drm/drm_irq.c
> @@ -43,8 +43,8 @@
>  #include <linux/export.h>
>  
>  /* Access macro for slots in vblank timestamp ringbuffer. */
> -#define vblanktimestamp(dev, crtc, count) \
> -	((dev)->vblank[crtc].time[(count) % DRM_VBLANKTIME_RBSIZE])
> +#define vblanktimestamp(dev, pipe, count) \
> +	((dev)->vblank[pipe].time[(count) % DRM_VBLANKTIME_RBSIZE])
>  
>  /* Retry timestamp calculation up to 3 times to satisfy
>   * drm_timestamp_precision before giving up.
> @@ -57,7 +57,7 @@
>  #define DRM_REDUNDANT_VBLIRQ_THRESH_NS 1000000
>  
>  static bool
> -drm_get_last_vbltimestamp(struct drm_device *dev, int crtc,
> +drm_get_last_vbltimestamp(struct drm_device *dev, unsigned int pipe,
>  			  struct timeval *tvblank, unsigned flags);
>  
>  static unsigned int drm_timestamp_precision = 20;  /* Default to 20 usecs. */
> @@ -107,7 +107,7 @@ static void store_vblank(struct drm_device *dev, int crtc,
>  /**
>   * drm_update_vblank_count - update the master vblank counter
>   * @dev: DRM device
> - * @crtc: counter to update
> + * @pipe: counter to update
>   *
>   * Call back into the driver to update the appropriate vblank counter
>   * (specified by @crtc).  Deal with wraparound, if it occurred, and
> @@ -120,9 +120,9 @@ static void store_vblank(struct drm_device *dev, int crtc,
>   * Note: caller must hold dev->vbl_lock since this reads & writes
>   * device vblank fields.
>   */
> -static void drm_update_vblank_count(struct drm_device *dev, int crtc)
> +static void drm_update_vblank_count(struct drm_device *dev, unsigned int pipe)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  	u32 cur_vblank, diff;
>  	bool rc;
>  	struct timeval t_vblank;
> @@ -140,21 +140,21 @@ static void drm_update_vblank_count(struct drm_device *dev, int crtc)
>  	 * corresponding vblank timestamp.
>  	 */
>  	do {
> -		cur_vblank = dev->driver->get_vblank_counter(dev, crtc);
> -		rc = drm_get_last_vbltimestamp(dev, crtc, &t_vblank, 0);
> -	} while (cur_vblank != dev->driver->get_vblank_counter(dev, crtc));
> +		cur_vblank = dev->driver->get_vblank_counter(dev, pipe);
> +		rc = drm_get_last_vbltimestamp(dev, pipe, &t_vblank, 0);
> +	} while (cur_vblank != dev->driver->get_vblank_counter(dev, pipe));
>  
>  	/* Deal with counter wrap */
>  	diff = cur_vblank - vblank->last;
>  	if (cur_vblank < vblank->last) {
>  		diff += dev->max_vblank_count + 1;
>  
> -		DRM_DEBUG("last_vblank[%d]=0x%x, cur_vblank=0x%x => diff=0x%x\n",
> -			  crtc, vblank->last, cur_vblank, diff);
> +		DRM_DEBUG("last_vblank[%u]=0x%x, cur_vblank=0x%x => diff=0x%x\n",
> +			  pipe, vblank->last, cur_vblank, diff);
>  	}
>  
> -	DRM_DEBUG("updating vblank count on crtc %d, missed %d\n",
> -		  crtc, diff);
> +	DRM_DEBUG("updating vblank count on crtc %u, missed %d\n",
> +		  pipe, diff);
>  
>  	if (diff == 0)
>  		return;
> @@ -167,7 +167,7 @@ static void drm_update_vblank_count(struct drm_device *dev, int crtc)
>  	if (!rc)
>  		t_vblank = (struct timeval) {0, 0};
>  
> -	store_vblank(dev, crtc, diff, &t_vblank);
> +	store_vblank(dev, pipe, diff, &t_vblank);
>  }
>  
>  /*
> @@ -176,9 +176,9 @@ static void drm_update_vblank_count(struct drm_device *dev, int crtc)
>   * are preserved, even if there are any spurious vblank irq's after
>   * disable.
>   */
> -static void vblank_disable_and_save(struct drm_device *dev, int crtc)
> +static void vblank_disable_and_save(struct drm_device *dev, unsigned int pipe)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  	unsigned long irqflags;
>  	u32 vblcount;
>  	s64 diff_ns;
> @@ -206,8 +206,8 @@ static void vblank_disable_and_save(struct drm_device *dev, int crtc)
>  	 * vblank interrupt is disabled.
>  	 */
>  	if (!vblank->enabled &&
> -	    drm_get_last_vbltimestamp(dev, crtc, &tvblank, 0)) {
> -		drm_update_vblank_count(dev, crtc);
> +	    drm_get_last_vbltimestamp(dev, pipe, &tvblank, 0)) {
> +		drm_update_vblank_count(dev, pipe);
>  		spin_unlock_irqrestore(&dev->vblank_time_lock, irqflags);
>  		return;
>  	}
> @@ -218,7 +218,7 @@ static void vblank_disable_and_save(struct drm_device *dev, int crtc)
>  	 * hardware potentially runtime suspended.
>  	 */
>  	if (vblank->enabled) {
> -		dev->driver->disable_vblank(dev, crtc);
> +		dev->driver->disable_vblank(dev, pipe);
>  		vblank->enabled = false;
>  	}
>  
> @@ -235,9 +235,9 @@ static void vblank_disable_and_save(struct drm_device *dev, int crtc)
>  	 * delayed gpu counter increment.
>  	 */
>  	do {
> -		vblank->last = dev->driver->get_vblank_counter(dev, crtc);
> -		vblrc = drm_get_last_vbltimestamp(dev, crtc, &tvblank, 0);
> -	} while (vblank->last != dev->driver->get_vblank_counter(dev, crtc) && (--count) && vblrc);
> +		vblank->last = dev->driver->get_vblank_counter(dev, pipe);
> +		vblrc = drm_get_last_vbltimestamp(dev, pipe, &tvblank, 0);
> +	} while (vblank->last != dev->driver->get_vblank_counter(dev, pipe) && (--count) && vblrc);
>  
>  	if (!count)
>  		vblrc = 0;
> @@ -247,7 +247,7 @@ static void vblank_disable_and_save(struct drm_device *dev, int crtc)
>  	 */
>  	vblcount = vblank->count;
>  	diff_ns = timeval_to_ns(&tvblank) -
> -		  timeval_to_ns(&vblanktimestamp(dev, crtc, vblcount));
> +		  timeval_to_ns(&vblanktimestamp(dev, pipe, vblcount));
>  
>  	/* If there is at least 1 msec difference between the last stored
>  	 * timestamp and tvblank, then we are currently executing our
> @@ -262,7 +262,7 @@ static void vblank_disable_and_save(struct drm_device *dev, int crtc)
>  	 * hope for the best.
>  	 */
>  	if (vblrc && (abs64(diff_ns) > 1000000))
> -		store_vblank(dev, crtc, 1, &tvblank);
> +		store_vblank(dev, pipe, 1, &tvblank);
>  
>  	spin_unlock_irqrestore(&dev->vblank_time_lock, irqflags);
>  }
> @@ -271,16 +271,16 @@ static void vblank_disable_fn(unsigned long arg)
>  {
>  	struct drm_vblank_crtc *vblank = (void *)arg;
>  	struct drm_device *dev = vblank->dev;
> +	unsigned int pipe = vblank->pipe;
>  	unsigned long irqflags;
> -	int crtc = vblank->crtc;
>  
>  	if (!dev->vblank_disable_allowed)
>  		return;
>  
>  	spin_lock_irqsave(&dev->vbl_lock, irqflags);
>  	if (atomic_read(&vblank->refcount) == 0 && vblank->enabled) {
> -		DRM_DEBUG("disabling vblank on crtc %d\n", crtc);
> -		vblank_disable_and_save(dev, crtc);
> +		DRM_DEBUG("disabling vblank on crtc %u\n", pipe);
> +		vblank_disable_and_save(dev, pipe);
>  	}
>  	spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
>  }
> @@ -293,14 +293,14 @@ static void vblank_disable_fn(unsigned long arg)
>   */
>  void drm_vblank_cleanup(struct drm_device *dev)
>  {
> -	int crtc;
> +	unsigned int pipe;
>  
>  	/* Bail if the driver didn't call drm_vblank_init() */
>  	if (dev->num_crtcs == 0)
>  		return;
>  
> -	for (crtc = 0; crtc < dev->num_crtcs; crtc++) {
> -		struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	for (pipe = 0; pipe < dev->num_crtcs; pipe++) {
> +		struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  
>  		WARN_ON(vblank->enabled &&
>  			drm_core_check_feature(dev, DRIVER_MODESET));
> @@ -316,17 +316,18 @@ EXPORT_SYMBOL(drm_vblank_cleanup);
>  
>  /**
>   * drm_vblank_init - initialize vblank support
> - * @dev: drm_device
> - * @num_crtcs: number of crtcs supported by @dev
> + * @dev: DRM device
> + * @num_crtcs: number of CRTCs supported by @dev
>   *
>   * This function initializes vblank support for @num_crtcs display pipelines.
>   *
>   * Returns:
>   * Zero on success or a negative error code on failure.
>   */
> -int drm_vblank_init(struct drm_device *dev, int num_crtcs)
> +int drm_vblank_init(struct drm_device *dev, unsigned int num_crtcs)
>  {
> -	int i, ret = -ENOMEM;
> +	int ret = -ENOMEM;
> +	unsigned int i;
>  
>  	spin_lock_init(&dev->vbl_lock);
>  	spin_lock_init(&dev->vblank_time_lock);
> @@ -341,7 +342,7 @@ int drm_vblank_init(struct drm_device *dev, int num_crtcs)
>  		struct drm_vblank_crtc *vblank = &dev->vblank[i];
>  
>  		vblank->dev = dev;
> -		vblank->crtc = i;
> +		vblank->pipe = i;
>  		init_waitqueue_head(&vblank->queue);
>  		setup_timer(&vblank->disable_timer, vblank_disable_fn,
>  			    (unsigned long)vblank);
> @@ -624,17 +625,17 @@ void drm_calc_timestamping_constants(struct drm_crtc *crtc,
>  		if (mode->flags & DRM_MODE_FLAG_INTERLACE)
>  			framedur_ns /= 2;
>  	} else
> -		DRM_ERROR("crtc %d: Can't calculate constants, dotclock = 0!\n",
> +		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;
>  
> -	DRM_DEBUG("crtc %d: hwmode: htotal %d, vtotal %d, vdisplay %d\n",
> +	DRM_DEBUG("crtc %u: hwmode: htotal %d, vtotal %d, vdisplay %d\n",
>  		  crtc->base.id, mode->crtc_htotal,
>  		  mode->crtc_vtotal, mode->crtc_vdisplay);
> -	DRM_DEBUG("crtc %d: clock %d kHz framedur %d linedur %d, pixeldur %d\n",
> +	DRM_DEBUG("crtc %u: clock %d kHz framedur %d linedur %d, pixeldur %d\n",
>  		  crtc->base.id, dotclock, framedur_ns,
>  		  linedur_ns, pixeldur_ns);
>  }
> @@ -643,7 +644,7 @@ EXPORT_SYMBOL(drm_calc_timestamping_constants);
>  /**
>   * drm_calc_vbltimestamp_from_scanoutpos - precise vblank timestamp helper
>   * @dev: DRM device
> - * @crtc: Which CRTC's vblank timestamp to retrieve
> + * @pipe: index of CRTC whose vblank timestamp to retrieve
>   * @max_error: Desired maximum allowable error in timestamps (nanosecs)
>   *             On return contains true maximum error of timestamp
>   * @vblank_time: Pointer to struct timeval which should receive the timestamp
> @@ -686,7 +687,8 @@ EXPORT_SYMBOL(drm_calc_timestamping_constants);
>   * DRM_VBLANKTIME_INVBL - Timestamp taken while scanout was in vblank interval.
>   *
>   */
> -int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, int crtc,
> +int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev,
> +					  unsigned int pipe,
>  					  int *max_error,
>  					  struct timeval *vblank_time,
>  					  unsigned flags,
> @@ -700,8 +702,8 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, int crtc,
>  	int framedur_ns, linedur_ns, pixeldur_ns, delta_ns, duration_ns;
>  	bool invbl;
>  
> -	if (crtc < 0 || crtc >= dev->num_crtcs) {
> -		DRM_ERROR("Invalid crtc %d\n", crtc);
> +	if (pipe >= dev->num_crtcs) {
> +		DRM_ERROR("Invalid crtc %u\n", pipe);
>  		return -EINVAL;
>  	}
>  
> @@ -720,7 +722,7 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, int crtc,
>  	 * Happens during initial modesetting of a crtc.
>  	 */
>  	if (framedur_ns == 0) {
> -		DRM_DEBUG("crtc %d: Noop due to uninitialized mode.\n", crtc);
> +		DRM_DEBUG("crtc %u: Noop due to uninitialized mode.\n", pipe);
>  		return -EAGAIN;
>  	}
>  
> @@ -736,13 +738,13 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, int crtc,
>  		 * Get vertical and horizontal scanout position vpos, hpos,
>  		 * and bounding timestamps stime, etime, pre/post query.
>  		 */
> -		vbl_status = dev->driver->get_scanout_position(dev, crtc, flags, &vpos,
> +		vbl_status = dev->driver->get_scanout_position(dev, pipe, flags, &vpos,
>  							       &hpos, &stime, &etime);
>  
>  		/* Return as no-op if scanout query unsupported or failed. */
>  		if (!(vbl_status & DRM_SCANOUTPOS_VALID)) {
> -			DRM_DEBUG("crtc %d : scanoutpos query failed [%d].\n",
> -				  crtc, vbl_status);
> +			DRM_DEBUG("crtc %u : scanoutpos query failed [%d].\n",
> +				  pipe, vbl_status);
>  			return -EIO;
>  		}
>  
> @@ -756,8 +758,8 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, int crtc,
>  
>  	/* Noisy system timing? */
>  	if (i == DRM_TIMESTAMP_MAXRETRIES) {
> -		DRM_DEBUG("crtc %d: Noisy timestamp %d us > %d us [%d reps].\n",
> -			  crtc, duration_ns/1000, *max_error/1000, i);
> +		DRM_DEBUG("crtc %u: Noisy timestamp %d us > %d us [%d reps].\n",
> +			  pipe, duration_ns/1000, *max_error/1000, i);
>  	}
>  
>  	/* Return upper bound of timestamp precision error. */
> @@ -790,8 +792,8 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, int crtc,
>  		etime = ktime_sub_ns(etime, delta_ns);
>  	*vblank_time = ktime_to_timeval(etime);
>  
> -	DRM_DEBUG("crtc %d : v %d p(%d,%d)@ %ld.%ld -> %ld.%ld [e %d us, %d rep]\n",
> -		  crtc, (int)vbl_status, hpos, vpos,
> +	DRM_DEBUG("crtc %u : v %d p(%d,%d)@ %ld.%ld -> %ld.%ld [e %d us, %d rep]\n",
> +		  pipe, (int)vbl_status, hpos, vpos,
>  		  (long)tv_etime.tv_sec, (long)tv_etime.tv_usec,
>  		  (long)vblank_time->tv_sec, (long)vblank_time->tv_usec,
>  		  duration_ns/1000, i);
> @@ -816,7 +818,7 @@ static struct timeval get_drm_timestamp(void)
>   * drm_get_last_vbltimestamp - retrieve raw timestamp for the most recent
>   *                             vblank interval
>   * @dev: DRM device
> - * @crtc: which CRTC's vblank timestamp to retrieve
> + * @pipe: index of CRTC whose vblank timestamp to retrieve
>   * @tvblank: Pointer to target struct timeval which should receive the timestamp
>   * @flags: Flags to pass to driver:
>   *         0 = Default,
> @@ -833,7 +835,7 @@ static struct timeval get_drm_timestamp(void)
>   * True if timestamp is considered to be very precise, false otherwise.
>   */
>  static bool
> -drm_get_last_vbltimestamp(struct drm_device *dev, int crtc,
> +drm_get_last_vbltimestamp(struct drm_device *dev, unsigned int pipe,
>  			  struct timeval *tvblank, unsigned flags)
>  {
>  	int ret;
> @@ -843,7 +845,7 @@ drm_get_last_vbltimestamp(struct drm_device *dev, int crtc,
>  
>  	/* Query driver if possible and precision timestamping enabled. */
>  	if (dev->driver->get_vblank_timestamp && (max_error > 0)) {
> -		ret = dev->driver->get_vblank_timestamp(dev, crtc, &max_error,
> +		ret = dev->driver->get_vblank_timestamp(dev, pipe, &max_error,
>  							tvblank, flags);
>  		if (ret > 0)
>  			return true;
> @@ -860,7 +862,7 @@ drm_get_last_vbltimestamp(struct drm_device *dev, int crtc,
>  /**
>   * drm_vblank_count - retrieve "cooked" vblank counter value
>   * @dev: DRM device
> - * @crtc: which counter to retrieve
> + * @pipe: index of CRTC for which to retrieve the counter
>   *
>   * Fetches the "cooked" vblank count value that represents the number of
>   * vblank events since the system was booted, including lost events due to
> @@ -871,11 +873,11 @@ drm_get_last_vbltimestamp(struct drm_device *dev, int crtc,
>   * Returns:
>   * The software vblank counter.
>   */
> -u32 drm_vblank_count(struct drm_device *dev, int crtc)
> +u32 drm_vblank_count(struct drm_device *dev, int pipe)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  
> -	if (WARN_ON(crtc >= dev->num_crtcs))
> +	if (WARN_ON(pipe >= dev->num_crtcs))
>  		return 0;
>  	return vblank->count;
>  }
> @@ -901,11 +903,10 @@ u32 drm_crtc_vblank_count(struct drm_crtc *crtc)
>  EXPORT_SYMBOL(drm_crtc_vblank_count);
>  
>  /**
> - * drm_vblank_count_and_time - retrieve "cooked" vblank counter value
> - * and the system timestamp corresponding to that vblank counter value.
> - *
> + * drm_vblank_count_and_time - retrieve "cooked" vblank counter value and the
> + *     system timestamp corresponding to that vblank counter value.
>   * @dev: DRM device
> - * @crtc: which counter to retrieve
> + * @pipe: index of CRTC whose counter to retrieve
>   * @vblanktime: Pointer to struct timeval to receive the vblank timestamp.
>   *
>   * Fetches the "cooked" vblank count value that represents the number of
> @@ -913,13 +914,13 @@ EXPORT_SYMBOL(drm_crtc_vblank_count);
>   * modesetting activity. Returns corresponding system timestamp of the time
>   * of the vblank interval that corresponds to the current vblank counter value.
>   */
> -u32 drm_vblank_count_and_time(struct drm_device *dev, int crtc,
> +u32 drm_vblank_count_and_time(struct drm_device *dev, unsigned int pipe,
>  			      struct timeval *vblanktime)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  	u32 cur_vblank;
>  
> -	if (WARN_ON(crtc >= dev->num_crtcs))
> +	if (WARN_ON(pipe >= dev->num_crtcs))
>  		return 0;
>  
>  	/*
> @@ -930,7 +931,7 @@ u32 drm_vblank_count_and_time(struct drm_device *dev, int crtc,
>  	do {
>  		cur_vblank = vblank->count;
>  		smp_rmb();
> -		*vblanktime = vblanktimestamp(dev, crtc, cur_vblank);
> +		*vblanktime = vblanktimestamp(dev, pipe, cur_vblank);
>  		smp_rmb();
>  	} while (cur_vblank != vblank->count);
>  
> @@ -957,7 +958,7 @@ static void send_vblank_event(struct drm_device *dev,
>  /**
>   * drm_send_vblank_event - helper to send vblank event after pageflip
>   * @dev: DRM device
> - * @crtc: CRTC in question
> + * @pipe: CRTC index
>   * @e: the event to send
>   *
>   * Updates sequence # and timestamp on event, and sends it to userspace.
> @@ -965,20 +966,20 @@ static void send_vblank_event(struct drm_device *dev,
>   *
>   * This is the legacy version of drm_crtc_send_vblank_event().
>   */
> -void drm_send_vblank_event(struct drm_device *dev, int crtc,
> -		struct drm_pending_vblank_event *e)
> +void drm_send_vblank_event(struct drm_device *dev, unsigned int pipe,
> +			   struct drm_pending_vblank_event *e)
>  {
>  	struct timeval now;
>  	unsigned int seq;
>  
>  	if (dev->num_crtcs > 0) {
> -		seq = drm_vblank_count_and_time(dev, crtc, &now);
> +		seq = drm_vblank_count_and_time(dev, pipe, &now);
>  	} else {
>  		seq = 0;
>  
>  		now = get_drm_timestamp();
>  	}
> -	e->pipe = crtc;
> +	e->pipe = pipe;
>  	send_vblank_event(dev, e, seq, &now);
>  }
>  EXPORT_SYMBOL(drm_send_vblank_event);
> @@ -1003,11 +1004,11 @@ EXPORT_SYMBOL(drm_crtc_send_vblank_event);
>  /**
>   * drm_vblank_enable - enable the vblank interrupt on a CRTC
>   * @dev: DRM device
> - * @crtc: CRTC in question
> + * @pipe: CRTC index
>   */
> -static int drm_vblank_enable(struct drm_device *dev, int crtc)
> +static int drm_vblank_enable(struct drm_device *dev, unsigned int pipe)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  	int ret = 0;
>  
>  	assert_spin_locked(&dev->vbl_lock);
> @@ -1022,13 +1023,13 @@ static int drm_vblank_enable(struct drm_device *dev, int crtc)
>  		 * timestamps. Filtercode in drm_handle_vblank() will
>  		 * prevent double-accounting of same vblank interval.
>  		 */
> -		ret = dev->driver->enable_vblank(dev, crtc);
> -		DRM_DEBUG("enabling vblank on crtc %d, ret: %d\n", crtc, ret);
> +		ret = dev->driver->enable_vblank(dev, pipe);
> +		DRM_DEBUG("enabling vblank on crtc %u, ret: %d\n", pipe, ret);
>  		if (ret)
>  			atomic_dec(&vblank->refcount);
>  		else {
>  			vblank->enabled = true;
> -			drm_update_vblank_count(dev, crtc);
> +			drm_update_vblank_count(dev, pipe);
>  		}
>  	}
>  
> @@ -1040,7 +1041,7 @@ static int drm_vblank_enable(struct drm_device *dev, int crtc)
>  /**
>   * drm_vblank_get - get a reference count on vblank events
>   * @dev: DRM device
> - * @crtc: which CRTC to own
> + * @pipe: index of CRTC to own
>   *
>   * Acquire a reference count on vblank events to avoid having them disabled
>   * while in use.
> @@ -1050,22 +1051,22 @@ static int drm_vblank_enable(struct drm_device *dev, int crtc)
>   * Returns:
>   * Zero on success, nonzero on failure.
>   */
> -int drm_vblank_get(struct drm_device *dev, int crtc)
> +int drm_vblank_get(struct drm_device *dev, unsigned int pipe)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  	unsigned long irqflags;
>  	int ret = 0;
>  
>  	if (!dev->num_crtcs)
>  		return -EINVAL;
>  
> -	if (WARN_ON(crtc >= dev->num_crtcs))
> +	if (WARN_ON(pipe >= dev->num_crtcs))
>  		return -EINVAL;
>  
>  	spin_lock_irqsave(&dev->vbl_lock, irqflags);
>  	/* Going from 0->1 means we have to enable interrupts again */
>  	if (atomic_add_return(1, &vblank->refcount) == 1) {
> -		ret = drm_vblank_enable(dev, crtc);
> +		ret = drm_vblank_enable(dev, pipe);
>  	} else {
>  		if (!vblank->enabled) {
>  			atomic_dec(&vblank->refcount);
> @@ -1097,20 +1098,20 @@ int drm_crtc_vblank_get(struct drm_crtc *crtc)
>  EXPORT_SYMBOL(drm_crtc_vblank_get);
>  
>  /**
> - * drm_vblank_put - give up ownership of vblank events
> + * drm_vblank_put - release ownership of vblank events
>   * @dev: DRM device
> - * @crtc: which counter to give up
> + * @pipe: index of CRTC to release
>   *
>   * Release ownership of a given vblank counter, turning off interrupts
>   * if possible. Disable interrupts after drm_vblank_offdelay milliseconds.
>   *
>   * This is the legacy version of drm_crtc_vblank_put().
>   */
> -void drm_vblank_put(struct drm_device *dev, int crtc)
> +void drm_vblank_put(struct drm_device *dev, unsigned int pipe)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  
> -	if (WARN_ON(crtc >= dev->num_crtcs))
> +	if (WARN_ON(pipe >= dev->num_crtcs))
>  		return;
>  
>  	if (WARN_ON(atomic_read(&vblank->refcount) == 0))
> @@ -1147,33 +1148,34 @@ EXPORT_SYMBOL(drm_crtc_vblank_put);
>  /**
>   * drm_wait_one_vblank - wait for one vblank
>   * @dev: DRM device
> - * @crtc: crtc index
> + * @pipe: CRTC index
>   *
>   * This waits for one vblank to pass on @crtc, using the irq driver interfaces.
>   * It is a failure to call this when the vblank irq for @crtc is disabled, e.g.
>   * due to lack of driver support or because the crtc is off.
>   */
> -void drm_wait_one_vblank(struct drm_device *dev, int crtc)
> +void drm_wait_one_vblank(struct drm_device *dev, unsigned int pipe)
>  {
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  	int ret;
>  	u32 last;
>  
> -	if (WARN_ON(crtc >= dev->num_crtcs))
> +	if (WARN_ON(pipe >= dev->num_crtcs))
>  		return;
>  
> -	ret = drm_vblank_get(dev, crtc);
> -	if (WARN(ret, "vblank not available on crtc %i, ret=%i\n", crtc, ret))
> +	ret = drm_vblank_get(dev, pipe);
> +	if (WARN(ret, "vblank not available on crtc %i, ret=%i\n", pipe, ret))
>  		return;
>  
> -	last = drm_vblank_count(dev, crtc);
> +	last = drm_vblank_count(dev, pipe);
>  
> -	ret = wait_event_timeout(dev->vblank[crtc].queue,
> -				 last != drm_vblank_count(dev, crtc),
> +	ret = wait_event_timeout(vblank->queue,
> +				 last != drm_vblank_count(dev, pipe),
>  				 msecs_to_jiffies(100));
>  
> -	WARN(ret == 0, "vblank wait timed out on crtc %i\n", crtc);
> +	WARN(ret == 0, "vblank wait timed out on crtc %i\n", pipe);
>  
> -	drm_vblank_put(dev, crtc);
> +	drm_vblank_put(dev, pipe);
>  }
>  EXPORT_SYMBOL(drm_wait_one_vblank);
>  
> @@ -1194,7 +1196,7 @@ EXPORT_SYMBOL(drm_crtc_wait_one_vblank);
>  /**
>   * drm_vblank_off - disable vblank events on a CRTC
>   * @dev: DRM device
> - * @crtc: CRTC in question
> + * @pipe: CRTC index
>   *
>   * Drivers can use this function to shut down the vblank interrupt handling when
>   * disabling a crtc. This function ensures that the latest vblank frame count is
> @@ -1205,21 +1207,21 @@ EXPORT_SYMBOL(drm_crtc_wait_one_vblank);
>   *
>   * This is the legacy version of drm_crtc_vblank_off().
>   */
> -void drm_vblank_off(struct drm_device *dev, int crtc)
> +void drm_vblank_off(struct drm_device *dev, unsigned int pipe)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  	struct drm_pending_vblank_event *e, *t;
>  	struct timeval now;
>  	unsigned long irqflags;
>  	unsigned int seq;
>  
> -	if (WARN_ON(crtc >= dev->num_crtcs))
> +	if (WARN_ON(pipe >= dev->num_crtcs))
>  		return;
>  
>  	spin_lock_irqsave(&dev->event_lock, irqflags);
>  
>  	spin_lock(&dev->vbl_lock);
> -	vblank_disable_and_save(dev, crtc);
> +	vblank_disable_and_save(dev, pipe);
>  	wake_up(&vblank->queue);
>  
>  	/*
> @@ -1233,16 +1235,16 @@ void drm_vblank_off(struct drm_device *dev, int crtc)
>  	spin_unlock(&dev->vbl_lock);
>  
>  	/* Send any queued vblank events, lest the natives grow disquiet */
> -	seq = drm_vblank_count_and_time(dev, crtc, &now);
> +	seq = drm_vblank_count_and_time(dev, pipe, &now);
>  
>  	list_for_each_entry_safe(e, t, &dev->vblank_event_list, base.link) {
> -		if (e->pipe != crtc)
> +		if (e->pipe != pipe)
>  			continue;
>  		DRM_DEBUG("Sending premature vblank event on disable: \
>  			  wanted %d, current %d\n",
>  			  e->event.sequence, seq);
>  		list_del(&e->base.link);
> -		drm_vblank_put(dev, e->pipe);
> +		drm_vblank_put(dev, pipe);
>  		send_vblank_event(dev, e, seq, &now);
>  	}
>  	spin_unlock_irqrestore(&dev->event_lock, irqflags);
> @@ -1303,7 +1305,7 @@ EXPORT_SYMBOL(drm_crtc_vblank_reset);
>  /**
>   * drm_vblank_on - enable vblank events on a CRTC
>   * @dev: DRM device
> - * @crtc: CRTC in question
> + * @pipe: CRTC index
>   *
>   * This functions restores the vblank interrupt state captured with
>   * drm_vblank_off() again. Note that calls to drm_vblank_on() and
> @@ -1312,12 +1314,12 @@ EXPORT_SYMBOL(drm_crtc_vblank_reset);
>   *
>   * This is the legacy version of drm_crtc_vblank_on().
>   */
> -void drm_vblank_on(struct drm_device *dev, int crtc)
> +void drm_vblank_on(struct drm_device *dev, unsigned int pipe)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  	unsigned long irqflags;
>  
> -	if (WARN_ON(crtc >= dev->num_crtcs))
> +	if (WARN_ON(pipe >= dev->num_crtcs))
>  		return;
>  
>  	spin_lock_irqsave(&dev->vbl_lock, irqflags);
> @@ -1335,7 +1337,7 @@ void drm_vblank_on(struct drm_device *dev, int crtc)
>  	 * vblank counter value before and after a modeset
>  	 */
>  	vblank->last =
> -		(dev->driver->get_vblank_counter(dev, crtc) - 1) &
> +		(dev->driver->get_vblank_counter(dev, pipe) - 1) &
>  		dev->max_vblank_count;
>  	/*
>  	 * re-enable interrupts if there are users left, or the
> @@ -1343,7 +1345,7 @@ void drm_vblank_on(struct drm_device *dev, int crtc)
>  	 */
>  	if (atomic_read(&vblank->refcount) != 0 ||
>  	    (!dev->vblank_disable_immediate && drm_vblank_offdelay == 0))
> -		WARN_ON(drm_vblank_enable(dev, crtc));
> +		WARN_ON(drm_vblank_enable(dev, pipe));
>  	spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
>  }
>  EXPORT_SYMBOL(drm_vblank_on);
> @@ -1368,7 +1370,7 @@ EXPORT_SYMBOL(drm_crtc_vblank_on);
>  /**
>   * drm_vblank_pre_modeset - account for vblanks across mode sets
>   * @dev: DRM device
> - * @crtc: CRTC in question
> + * @pipe: CRTC index
>   *
>   * Account for vblank events across mode setting events, which will likely
>   * reset the hardware frame counter.
> @@ -1388,15 +1390,15 @@ EXPORT_SYMBOL(drm_crtc_vblank_on);
>   * Drivers must call drm_vblank_post_modeset() when re-enabling the same crtc
>   * again.
>   */
> -void drm_vblank_pre_modeset(struct drm_device *dev, int crtc)
> +void drm_vblank_pre_modeset(struct drm_device *dev, unsigned int pipe)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  
>  	/* vblank is not initialized (IRQ not installed ?), or has been freed */
>  	if (!dev->num_crtcs)
>  		return;
>  
> -	if (WARN_ON(crtc >= dev->num_crtcs))
> +	if (WARN_ON(pipe >= dev->num_crtcs))
>  		return;
>  
>  	/*
> @@ -1408,7 +1410,7 @@ void drm_vblank_pre_modeset(struct drm_device *dev, int crtc)
>  	 */
>  	if (!vblank->inmodeset) {
>  		vblank->inmodeset = 0x1;
> -		if (drm_vblank_get(dev, crtc) == 0)
> +		if (drm_vblank_get(dev, pipe) == 0)
>  			vblank->inmodeset |= 0x2;
>  	}
>  }
> @@ -1417,21 +1419,21 @@ EXPORT_SYMBOL(drm_vblank_pre_modeset);
>  /**
>   * drm_vblank_post_modeset - undo drm_vblank_pre_modeset changes
>   * @dev: DRM device
> - * @crtc: CRTC in question
> + * @pipe: CRTC index
>   *
>   * This function again drops the temporary vblank reference acquired in
>   * drm_vblank_pre_modeset.
>   */
> -void drm_vblank_post_modeset(struct drm_device *dev, int crtc)
> +void drm_vblank_post_modeset(struct drm_device *dev, unsigned int pipe)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  	unsigned long irqflags;
>  
>  	/* vblank is not initialized (IRQ not installed ?), or has been freed */
>  	if (!dev->num_crtcs)
>  		return;
>  
> -	if (WARN_ON(crtc >= dev->num_crtcs))
> +	if (WARN_ON(pipe >= dev->num_crtcs))
>  		return;
>  
>  	if (vblank->inmodeset) {
> @@ -1440,7 +1442,7 @@ void drm_vblank_post_modeset(struct drm_device *dev, int crtc)
>  		spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
>  
>  		if (vblank->inmodeset & 0x2)
> -			drm_vblank_put(dev, crtc);
> +			drm_vblank_put(dev, pipe);
>  
>  		vblank->inmodeset = 0;
>  	}
> @@ -1462,7 +1464,7 @@ int drm_modeset_ctl(struct drm_device *dev, void *data,
>  		    struct drm_file *file_priv)
>  {
>  	struct drm_modeset_ctl *modeset = data;
> -	unsigned int crtc;
> +	unsigned int pipe;
>  
>  	/* If drm_vblank_init() hasn't been called yet, just no-op */
>  	if (!dev->num_crtcs)
> @@ -1472,16 +1474,16 @@ int drm_modeset_ctl(struct drm_device *dev, void *data,
>  	if (drm_core_check_feature(dev, DRIVER_MODESET))
>  		return 0;
>  
> -	crtc = modeset->crtc;
> -	if (crtc >= dev->num_crtcs)
> +	pipe = modeset->crtc;
> +	if (pipe >= dev->num_crtcs)
>  		return -EINVAL;
>  
>  	switch (modeset->cmd) {
>  	case _DRM_PRE_MODESET:
> -		drm_vblank_pre_modeset(dev, crtc);
> +		drm_vblank_pre_modeset(dev, pipe);
>  		break;
>  	case _DRM_POST_MODESET:
> -		drm_vblank_post_modeset(dev, crtc);
> +		drm_vblank_post_modeset(dev, pipe);
>  		break;
>  	default:
>  		return -EINVAL;
> @@ -1490,7 +1492,7 @@ int drm_modeset_ctl(struct drm_device *dev, void *data,
>  	return 0;
>  }
>  
> -static int drm_queue_vblank_event(struct drm_device *dev, int pipe,
> +static int drm_queue_vblank_event(struct drm_device *dev, unsigned int pipe,
>  				  union drm_wait_vblank *vblwait,
>  				  struct drm_file *file_priv)
>  {
> @@ -1544,7 +1546,7 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe,
>  		vblwait->reply.sequence = vblwait->request.sequence;
>  	}
>  
> -	DRM_DEBUG("event on vblank count %d, current %d, crtc %d\n",
> +	DRM_DEBUG("event on vblank count %d, current %d, crtc %u\n",
>  		  vblwait->request.sequence, seq, pipe);
>  
>  	trace_drm_vblank_event_queued(current->pid, pipe,
> @@ -1593,7 +1595,7 @@ int drm_wait_vblank(struct drm_device *dev, void *data,
>  	struct drm_vblank_crtc *vblank;
>  	union drm_wait_vblank *vblwait = data;
>  	int ret;
> -	unsigned int flags, seq, crtc, high_crtc;
> +	unsigned int flags, seq, pipe, high_pipe;
>  
>  	if (!dev->irq_enabled)
>  		return -EINVAL;
> @@ -1612,22 +1614,22 @@ int drm_wait_vblank(struct drm_device *dev, void *data,
>  	}
>  
>  	flags = vblwait->request.type & _DRM_VBLANK_FLAGS_MASK;
> -	high_crtc = (vblwait->request.type & _DRM_VBLANK_HIGH_CRTC_MASK);
> -	if (high_crtc)
> -		crtc = high_crtc >> _DRM_VBLANK_HIGH_CRTC_SHIFT;
> +	high_pipe = (vblwait->request.type & _DRM_VBLANK_HIGH_CRTC_MASK);
> +	if (high_pipe)
> +		pipe = high_pipe >> _DRM_VBLANK_HIGH_CRTC_SHIFT;
>  	else
> -		crtc = flags & _DRM_VBLANK_SECONDARY ? 1 : 0;
> -	if (crtc >= dev->num_crtcs)
> +		pipe = flags & _DRM_VBLANK_SECONDARY ? 1 : 0;
> +	if (pipe >= dev->num_crtcs)
>  		return -EINVAL;
>  
> -	vblank = &dev->vblank[crtc];
> +	vblank = &dev->vblank[pipe];
>  
> -	ret = drm_vblank_get(dev, crtc);
> +	ret = drm_vblank_get(dev, pipe);
>  	if (ret) {
>  		DRM_DEBUG("failed to acquire vblank counter, %d\n", ret);
>  		return ret;
>  	}
> -	seq = drm_vblank_count(dev, crtc);
> +	seq = drm_vblank_count(dev, pipe);
>  
>  	switch (vblwait->request.type & _DRM_VBLANK_TYPES_MASK) {
>  	case _DRM_VBLANK_RELATIVE:
> @@ -1644,7 +1646,7 @@ int drm_wait_vblank(struct drm_device *dev, void *data,
>  		/* must hold on to the vblank ref until the event fires
>  		 * drm_vblank_put will be called asynchronously
>  		 */
> -		return drm_queue_vblank_event(dev, crtc, vblwait, file_priv);
> +		return drm_queue_vblank_event(dev, pipe, vblwait, file_priv);
>  	}
>  
>  	if ((flags & _DRM_VBLANK_NEXTONMISS) &&
> @@ -1652,11 +1654,11 @@ int drm_wait_vblank(struct drm_device *dev, void *data,
>  		vblwait->request.sequence = seq + 1;
>  	}
>  
> -	DRM_DEBUG("waiting on vblank count %d, crtc %d\n",
> -		  vblwait->request.sequence, crtc);
> +	DRM_DEBUG("waiting on vblank count %d, crtc %u\n",
> +		  vblwait->request.sequence, pipe);
>  	vblank->last_wait = vblwait->request.sequence;
>  	DRM_WAIT_ON(ret, vblank->queue, 3 * HZ,
> -		    (((drm_vblank_count(dev, crtc) -
> +		    (((drm_vblank_count(dev, pipe) -
>  		       vblwait->request.sequence) <= (1 << 23)) ||
>  		     !vblank->enabled ||
>  		     !dev->irq_enabled));
> @@ -1664,7 +1666,7 @@ int drm_wait_vblank(struct drm_device *dev, void *data,
>  	if (ret != -EINTR) {
>  		struct timeval now;
>  
> -		vblwait->reply.sequence = drm_vblank_count_and_time(dev, crtc, &now);
> +		vblwait->reply.sequence = drm_vblank_count_and_time(dev, pipe, &now);
>  		vblwait->reply.tval_sec = now.tv_sec;
>  		vblwait->reply.tval_usec = now.tv_usec;
>  
> @@ -1675,11 +1677,11 @@ int drm_wait_vblank(struct drm_device *dev, void *data,
>  	}
>  
>  done:
> -	drm_vblank_put(dev, crtc);
> +	drm_vblank_put(dev, pipe);
>  	return ret;
>  }
>  
> -static void drm_handle_vblank_events(struct drm_device *dev, int crtc)
> +static void drm_handle_vblank_events(struct drm_device *dev, unsigned int pipe)
>  {
>  	struct drm_pending_vblank_event *e, *t;
>  	struct timeval now;
> @@ -1687,10 +1689,10 @@ static void drm_handle_vblank_events(struct drm_device *dev, int crtc)
>  
>  	assert_spin_locked(&dev->event_lock);
>  
> -	seq = drm_vblank_count_and_time(dev, crtc, &now);
> +	seq = drm_vblank_count_and_time(dev, pipe, &now);
>  
>  	list_for_each_entry_safe(e, t, &dev->vblank_event_list, base.link) {
> -		if (e->pipe != crtc)
> +		if (e->pipe != pipe)
>  			continue;
>  		if ((seq - e->event.sequence) > (1<<23))
>  			continue;
> @@ -1699,26 +1701,26 @@ static void drm_handle_vblank_events(struct drm_device *dev, int crtc)
>  			  e->event.sequence, seq);
>  
>  		list_del(&e->base.link);
> -		drm_vblank_put(dev, e->pipe);
> +		drm_vblank_put(dev, pipe);
>  		send_vblank_event(dev, e, seq, &now);
>  	}
>  
> -	trace_drm_vblank_event(crtc, seq);
> +	trace_drm_vblank_event(pipe, seq);
>  }
>  
>  /**
>   * drm_handle_vblank - handle a vblank event
>   * @dev: DRM device
> - * @crtc: where this event occurred
> + * @pipe: index of CRTC where this event occurred
>   *
>   * Drivers should call this routine in their vblank interrupt handlers to
>   * update the vblank counter and send any signals that may be pending.
>   *
>   * This is the legacy version of drm_crtc_handle_vblank().
>   */
> -bool drm_handle_vblank(struct drm_device *dev, int crtc)
> +bool drm_handle_vblank(struct drm_device *dev, unsigned int pipe)
>  {
> -	struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
> +	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
>  	u32 vblcount;
>  	s64 diff_ns;
>  	struct timeval tvblank;
> @@ -1727,7 +1729,7 @@ bool drm_handle_vblank(struct drm_device *dev, int crtc)
>  	if (WARN_ON_ONCE(!dev->num_crtcs))
>  		return false;
>  
> -	if (WARN_ON(crtc >= dev->num_crtcs))
> +	if (WARN_ON(pipe >= dev->num_crtcs))
>  		return false;
>  
>  	spin_lock_irqsave(&dev->event_lock, irqflags);
> @@ -1751,11 +1753,11 @@ bool drm_handle_vblank(struct drm_device *dev, int crtc)
>  
>  	/* Get current timestamp and count. */
>  	vblcount = vblank->count;
> -	drm_get_last_vbltimestamp(dev, crtc, &tvblank, DRM_CALLED_FROM_VBLIRQ);
> +	drm_get_last_vbltimestamp(dev, pipe, &tvblank, DRM_CALLED_FROM_VBLIRQ);
>  
>  	/* Compute time difference to timestamp of last vblank */
>  	diff_ns = timeval_to_ns(&tvblank) -
> -		  timeval_to_ns(&vblanktimestamp(dev, crtc, vblcount));
> +		  timeval_to_ns(&vblanktimestamp(dev, pipe, vblcount));
>  
>  	/* Update vblank timestamp and count if at least
>  	 * DRM_REDUNDANT_VBLIRQ_THRESH_NS nanoseconds
> @@ -1767,15 +1769,15 @@ bool drm_handle_vblank(struct drm_device *dev, int crtc)
>  	 * ignore those for accounting.
>  	 */
>  	if (abs64(diff_ns) > DRM_REDUNDANT_VBLIRQ_THRESH_NS)
> -		store_vblank(dev, crtc, 1, &tvblank);
> +		store_vblank(dev, pipe, 1, &tvblank);
>  	else
> -		DRM_DEBUG("crtc %d: Redundant vblirq ignored. diff_ns = %d\n",
> -			  crtc, (int) diff_ns);
> +		DRM_DEBUG("crtc %u: Redundant vblirq ignored. diff_ns = %d\n",
> +			  pipe, (int) diff_ns);
>  
>  	spin_unlock(&dev->vblank_time_lock);
>  
>  	wake_up(&vblank->queue);
> -	drm_handle_vblank_events(dev, crtc);
> +	drm_handle_vblank_events(dev, pipe);
>  
>  	spin_unlock_irqrestore(&dev->event_lock, irqflags);
>  
> diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> index 5908848d86b3..020afa343dff 100644
> --- a/include/drm/drmP.h
> +++ b/include/drm/drmP.h
> @@ -681,7 +681,7 @@ struct drm_minor {
>  
>  struct drm_pending_vblank_event {
>  	struct drm_pending_event base;
> -	int pipe;
> +	unsigned int pipe;
>  	struct drm_event_vblank event;
>  };
>  
> @@ -700,7 +700,7 @@ struct drm_vblank_crtc {
>  					/* for wraparound handling */
>  	u32 last_wait;			/* Last vblank seqno waited per CRTC */
>  	unsigned int inmodeset;		/* Display driver is setting mode */
> -	int crtc;			/* crtc index */
> +	unsigned int pipe;		/* crtc index */
>  	bool enabled;			/* so we don't call enable more than
>  					   once per disable */
>  };
> @@ -920,34 +920,34 @@ void drm_clflush_virt_range(void *addr, unsigned long length);
>  extern int drm_irq_install(struct drm_device *dev, int irq);
>  extern int drm_irq_uninstall(struct drm_device *dev);
>  
> -extern int drm_vblank_init(struct drm_device *dev, int num_crtcs);
> +extern int drm_vblank_init(struct drm_device *dev, unsigned int num_crtcs);
>  extern int drm_wait_vblank(struct drm_device *dev, void *data,
>  			   struct drm_file *filp);
> -extern u32 drm_vblank_count(struct drm_device *dev, int crtc);
> +extern u32 drm_vblank_count(struct drm_device *dev, int pipe);
>  extern u32 drm_crtc_vblank_count(struct drm_crtc *crtc);
> -extern u32 drm_vblank_count_and_time(struct drm_device *dev, int crtc,
> +extern u32 drm_vblank_count_and_time(struct drm_device *dev, unsigned int pipe,
>  				     struct timeval *vblanktime);
> -extern void drm_send_vblank_event(struct drm_device *dev, int crtc,
> -				     struct drm_pending_vblank_event *e);
> +extern void drm_send_vblank_event(struct drm_device *dev, unsigned int pipe,
> +				  struct drm_pending_vblank_event *e);
>  extern void drm_crtc_send_vblank_event(struct drm_crtc *crtc,
>  				       struct drm_pending_vblank_event *e);
> -extern bool drm_handle_vblank(struct drm_device *dev, int crtc);
> +extern bool drm_handle_vblank(struct drm_device *dev, unsigned int pipe);
>  extern bool drm_crtc_handle_vblank(struct drm_crtc *crtc);
> -extern int drm_vblank_get(struct drm_device *dev, int crtc);
> -extern void drm_vblank_put(struct drm_device *dev, int crtc);
> +extern int drm_vblank_get(struct drm_device *dev, unsigned int pipe);
> +extern void drm_vblank_put(struct drm_device *dev, unsigned int pipe);
>  extern int drm_crtc_vblank_get(struct drm_crtc *crtc);
>  extern void drm_crtc_vblank_put(struct drm_crtc *crtc);
> -extern void drm_wait_one_vblank(struct drm_device *dev, int crtc);
> +extern void drm_wait_one_vblank(struct drm_device *dev, unsigned int pipe);
>  extern void drm_crtc_wait_one_vblank(struct drm_crtc *crtc);
> -extern void drm_vblank_off(struct drm_device *dev, int crtc);
> -extern void drm_vblank_on(struct drm_device *dev, int crtc);
> +extern void drm_vblank_off(struct drm_device *dev, unsigned int pipe);
> +extern void drm_vblank_on(struct drm_device *dev, unsigned int pipe);
>  extern void drm_crtc_vblank_off(struct drm_crtc *crtc);
>  extern void drm_crtc_vblank_reset(struct drm_crtc *crtc);
>  extern void drm_crtc_vblank_on(struct drm_crtc *crtc);
>  extern void drm_vblank_cleanup(struct drm_device *dev);
>  
>  extern int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev,
> -						 int crtc, int *max_error,
> +						 unsigned int pipe, int *max_error,
>  						 struct timeval *vblank_time,
>  						 unsigned flags,
>  						 const struct drm_crtc *refcrtc,
> @@ -968,8 +968,8 @@ static inline wait_queue_head_t *drm_crtc_vblank_waitqueue(struct drm_crtc *crtc
>  }
>  
>  /* Modesetting support */
> -extern void drm_vblank_pre_modeset(struct drm_device *dev, int crtc);
> -extern void drm_vblank_post_modeset(struct drm_device *dev, int crtc);
> +extern void drm_vblank_pre_modeset(struct drm_device *dev, unsigned int pipe);
> +extern void drm_vblank_post_modeset(struct drm_device *dev, unsigned int pipe);
>  
>  				/* Stub support (drm_stub.h) */
>  extern struct drm_master *drm_master_get(struct drm_master *master);
> -- 
> 2.4.5
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list