]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/mgag200: Fix VBLANK interrupt handling
authorThomas Zimmermann <tzimmermann@suse.de>
Wed, 31 Jul 2024 07:09:40 +0000 (09:09 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Thu, 1 Aug 2024 06:33:24 +0000 (08:33 +0200)
Fix support for VBLANK interrupts on G200ER, G200EV and G200SE, which
use a slightly different implementation than the others. The original
commits forgot to update the custom helpers when adding interrupt
handling for VBLANK events.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 89c6ea2006e2 ("drm/mgag200: Add vblank support")
Fixes: d5070c9b2944 ("drm/mgag200: Implement struct drm_crtc_funcs.get_vblank_timestamp")
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Dave Airlie <airlied@redhat.com>
Cc: dri-devel@lists.freedesktop.org
Acked-by: Sui Jingfeng <sui.jingfeng@linux.dev>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240731071004.519566-1-tzimmermann@suse.de
drivers/gpu/drm/mgag200/mgag200_g200er.c
drivers/gpu/drm/mgag200/mgag200_g200ev.c
drivers/gpu/drm/mgag200/mgag200_g200se.c

index 6d727ab1a7aa6bfa1bdfdb18e201105651c5dc2c..e65d591739399cccb203a4cd794e9623d484cdb8 100644 (file)
@@ -209,6 +209,8 @@ static void mgag200_g200er_crtc_helper_atomic_enable(struct drm_crtc *crtc,
 
        if (mdev->info->sync_bmc)
                mgag200_bmc_start_scanout(mdev);
+
+       drm_crtc_vblank_on(crtc);
 }
 
 static const struct drm_crtc_helper_funcs mgag200_g200er_crtc_helper_funcs = {
@@ -216,7 +218,8 @@ static const struct drm_crtc_helper_funcs mgag200_g200er_crtc_helper_funcs = {
        .atomic_check = mgag200_crtc_helper_atomic_check,
        .atomic_flush = mgag200_crtc_helper_atomic_flush,
        .atomic_enable = mgag200_g200er_crtc_helper_atomic_enable,
-       .atomic_disable = mgag200_crtc_helper_atomic_disable
+       .atomic_disable = mgag200_crtc_helper_atomic_disable,
+       .get_scanout_position = mgag200_crtc_helper_get_scanout_position,
 };
 
 static const struct drm_crtc_funcs mgag200_g200er_crtc_funcs = {
index e6c9ba61bf9782aafad5188228adca61eeb0f57c..a4890b496050c7546948903c6e0ad5994c9d2837 100644 (file)
@@ -210,6 +210,8 @@ static void mgag200_g200ev_crtc_helper_atomic_enable(struct drm_crtc *crtc,
 
        if (mdev->info->sync_bmc)
                mgag200_bmc_start_scanout(mdev);
+
+       drm_crtc_vblank_on(crtc);
 }
 
 static const struct drm_crtc_helper_funcs mgag200_g200ev_crtc_helper_funcs = {
@@ -217,7 +219,8 @@ static const struct drm_crtc_helper_funcs mgag200_g200ev_crtc_helper_funcs = {
        .atomic_check = mgag200_crtc_helper_atomic_check,
        .atomic_flush = mgag200_crtc_helper_atomic_flush,
        .atomic_enable = mgag200_g200ev_crtc_helper_atomic_enable,
-       .atomic_disable = mgag200_crtc_helper_atomic_disable
+       .atomic_disable = mgag200_crtc_helper_atomic_disable,
+       .get_scanout_position = mgag200_crtc_helper_get_scanout_position,
 };
 
 static const struct drm_crtc_funcs mgag200_g200ev_crtc_funcs = {
index 2a53ebf415393270a7c22cda35125935dbc36099..fcb97e4253c4d8197f4f6b9d315d4a55c1941264 100644 (file)
@@ -341,6 +341,8 @@ static void mgag200_g200se_crtc_helper_atomic_enable(struct drm_crtc *crtc,
 
        if (mdev->info->sync_bmc)
                mgag200_bmc_start_scanout(mdev);
+
+       drm_crtc_vblank_on(crtc);
 }
 
 static const struct drm_crtc_helper_funcs mgag200_g200se_crtc_helper_funcs = {
@@ -348,7 +350,8 @@ static const struct drm_crtc_helper_funcs mgag200_g200se_crtc_helper_funcs = {
        .atomic_check = mgag200_crtc_helper_atomic_check,
        .atomic_flush = mgag200_crtc_helper_atomic_flush,
        .atomic_enable = mgag200_g200se_crtc_helper_atomic_enable,
-       .atomic_disable = mgag200_crtc_helper_atomic_disable
+       .atomic_disable = mgag200_crtc_helper_atomic_disable,
+       .get_scanout_position = mgag200_crtc_helper_get_scanout_position,
 };
 
 static const struct drm_crtc_funcs mgag200_g200se_crtc_funcs = {