Message ID | 20240731071004.519566-1-tzimmermann@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/mgag200: Fix VBLANK interrupt handling | expand |
Hi, On 2024/7/31 15:09, Thomas Zimmermann wrote: > 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> LGTM, Acked-by: sui.jingfeng@linux.dev
Am 31.07.24 um 13:29 schrieb Sui Jingfeng: > Hi, > > > On 2024/7/31 15:09, Thomas Zimmermann wrote: >> 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> > > > LGTM, > > > Acked-by: sui.jingfeng@linux.dev > Thanks!
On 31/07/2024 09:09, Thomas Zimmermann wrote: > 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. Thanks, it looks good to me. Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com> > 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 > --- > drivers/gpu/drm/mgag200/mgag200_g200er.c | 5 ++++- > drivers/gpu/drm/mgag200/mgag200_g200ev.c | 5 ++++- > drivers/gpu/drm/mgag200/mgag200_g200se.c | 5 ++++- > 3 files changed, 12 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/mgag200/mgag200_g200er.c b/drivers/gpu/drm/mgag200/mgag200_g200er.c > index 6d727ab1a7aa..e65d59173939 100644 > --- a/drivers/gpu/drm/mgag200/mgag200_g200er.c > +++ b/drivers/gpu/drm/mgag200/mgag200_g200er.c > @@ -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 = { > diff --git a/drivers/gpu/drm/mgag200/mgag200_g200ev.c b/drivers/gpu/drm/mgag200/mgag200_g200ev.c > index e6c9ba61bf97..a4890b496050 100644 > --- a/drivers/gpu/drm/mgag200/mgag200_g200ev.c > +++ b/drivers/gpu/drm/mgag200/mgag200_g200ev.c > @@ -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 = { > diff --git a/drivers/gpu/drm/mgag200/mgag200_g200se.c b/drivers/gpu/drm/mgag200/mgag200_g200se.c > index 2a53ebf41539..fcb97e4253c4 100644 > --- a/drivers/gpu/drm/mgag200/mgag200_g200se.c > +++ b/drivers/gpu/drm/mgag200/mgag200_g200se.c > @@ -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 = {
diff --git a/drivers/gpu/drm/mgag200/mgag200_g200er.c b/drivers/gpu/drm/mgag200/mgag200_g200er.c index 6d727ab1a7aa..e65d59173939 100644 --- a/drivers/gpu/drm/mgag200/mgag200_g200er.c +++ b/drivers/gpu/drm/mgag200/mgag200_g200er.c @@ -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 = { diff --git a/drivers/gpu/drm/mgag200/mgag200_g200ev.c b/drivers/gpu/drm/mgag200/mgag200_g200ev.c index e6c9ba61bf97..a4890b496050 100644 --- a/drivers/gpu/drm/mgag200/mgag200_g200ev.c +++ b/drivers/gpu/drm/mgag200/mgag200_g200ev.c @@ -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 = { diff --git a/drivers/gpu/drm/mgag200/mgag200_g200se.c b/drivers/gpu/drm/mgag200/mgag200_g200se.c index 2a53ebf41539..fcb97e4253c4 100644 --- a/drivers/gpu/drm/mgag200/mgag200_g200se.c +++ b/drivers/gpu/drm/mgag200/mgag200_g200se.c @@ -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 = {
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 --- drivers/gpu/drm/mgag200/mgag200_g200er.c | 5 ++++- drivers/gpu/drm/mgag200/mgag200_g200ev.c | 5 ++++- drivers/gpu/drm/mgag200/mgag200_g200se.c | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-)