drm: use drm_dev_has_vblank more
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 27 May 2020 11:11:34 +0000 (13:11 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 29 May 2020 10:58:11 +0000 (12:58 +0200)
For historical reasons it's called dev->num_crtcs, which is rather
confusing ever since kms was added. But now we have a nice helper, so
let's use it for better readability!

Only code change is in atomic helpers: vblank support means that
dev->irq_enabled must be set too. Another one of these quirky things
... But since it's implied we can simplify that check.

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20200527111134.1571781-1-daniel.vetter@ffwll.ch
drivers/gpu/drm/drm_atomic_helper.c
drivers/gpu/drm/drm_irq.c
drivers/gpu/drm/drm_vblank.c

index 85d163f..a1898c5 100644 (file)
@@ -1097,7 +1097,7 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
                else if (funcs->dpms)
                        funcs->dpms(crtc, DRM_MODE_DPMS_OFF);
 
-               if (!(dev->irq_enabled && dev->num_crtcs))
+               if (!drm_dev_has_vblank(dev))
                        continue;
 
                ret = drm_crtc_vblank_get(crtc);
index 588be45..09d6e9e 100644 (file)
@@ -181,7 +181,7 @@ int drm_irq_uninstall(struct drm_device *dev)
         * vblank/irq handling. KMS drivers must ensure that vblanks are all
         * disabled when uninstalling the irq handler.
         */
-       if (dev->num_crtcs) {
+       if (drm_dev_has_vblank(dev)) {
                spin_lock_irqsave(&dev->vbl_lock, irqflags);
                for (i = 0; i < dev->num_crtcs; i++) {
                        struct drm_vblank_crtc *vblank = &dev->vblank[i];
index 8837beb..e2beaca 100644 (file)
@@ -604,7 +604,7 @@ void drm_calc_timestamping_constants(struct drm_crtc *crtc,
        int linedur_ns = 0, framedur_ns = 0;
        int dotclock = mode->crtc_clock;
 
-       if (!dev->num_crtcs)
+       if (!drm_dev_has_vblank(dev))
                return;
 
        if (WARN_ON(pipe >= dev->num_crtcs))
@@ -1064,7 +1064,7 @@ void drm_crtc_send_vblank_event(struct drm_crtc *crtc,
        unsigned int pipe = drm_crtc_index(crtc);
        ktime_t now;
 
-       if (dev->num_crtcs > 0) {
+       if (drm_dev_has_vblank(dev)) {
                seq = drm_vblank_count_and_time(dev, pipe, &now);
        } else {
                seq = 0;
@@ -1136,7 +1136,7 @@ static int drm_vblank_get(struct drm_device *dev, unsigned int pipe)
        unsigned long irqflags;
        int ret = 0;
 
-       if (!dev->num_crtcs)
+       if (!drm_dev_has_vblank(dev))
                return -EINVAL;
 
        if (WARN_ON(pipe >= dev->num_crtcs))
@@ -1505,7 +1505,7 @@ static void drm_legacy_vblank_pre_modeset(struct drm_device *dev,
        struct drm_vblank_crtc *vblank = &dev->vblank[pipe];
 
        /* vblank is not initialized (IRQ not installed ?), or has been freed */
-       if (!dev->num_crtcs)
+       if (!drm_dev_has_vblank(dev))
                return;
 
        if (WARN_ON(pipe >= dev->num_crtcs))
@@ -1532,7 +1532,7 @@ static void drm_legacy_vblank_post_modeset(struct drm_device *dev,
        unsigned long irqflags;
 
        /* vblank is not initialized (IRQ not installed ?), or has been freed */
-       if (!dev->num_crtcs)
+       if (!drm_dev_has_vblank(dev))
                return;
 
        if (WARN_ON(pipe >= dev->num_crtcs))
@@ -1557,7 +1557,7 @@ int drm_legacy_modeset_ctl_ioctl(struct drm_device *dev, void *data,
        unsigned int pipe;
 
        /* If drm_vblank_init() hasn't been called yet, just no-op */
-       if (!dev->num_crtcs)
+       if (!drm_dev_has_vblank(dev))
                return 0;
 
        /* KMS drivers handle this internally */
@@ -1895,7 +1895,7 @@ bool drm_handle_vblank(struct drm_device *dev, unsigned int pipe)
        unsigned long irqflags;
        bool disable_irq;
 
-       if (WARN_ON_ONCE(!dev->num_crtcs))
+       if (WARN_ON_ONCE(!drm_dev_has_vblank(dev)))
                return false;
 
        if (WARN_ON(pipe >= dev->num_crtcs))