[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