Re: [PATCH] drm/loongson: stop to set get_vblank_timestamp for 7A1000 CRTC
From: Huacai Chen
Date: Wed Mar 18 2026 - 09:18:00 EST
Hi, Thomas,
On Wed, Mar 18, 2026 at 3:19 PM Thomas Zimmermann <tzimmermann@xxxxxxx> wrote:
>
> Hi
>
> Am 18.03.26 um 07:16 schrieb Icenowy Zheng:
> > 在 2026-03-16一的 08:53 +0100,Thomas Zimmermann写道:
> >>
> >> Am 14.03.26 um 17:54 schrieb Icenowy Zheng:
> >>> As there's no known hardware capability about querying vblank on
> >>> the
> >>> 7A1000 display controller, setting get_vblank_timestamp will
> >>> mislead the
> >>> kernel about the support of DC-backed high precision vblank query.
> >>>
> >>> Drop this function pointer in the CRTC function table for 7A1000.
> >>>
> >>> This solves a kernel warning when booting Linux 7.0-rc3 on a
> >>> 3A4000+7A1000 Haier Boyue G51 laptop (with injected EDID for
> >>> replicating
> >>> the display timing set by the firmware).
> >>>
> >>> Signed-off-by: Icenowy Zheng <zhengxingda@xxxxxxxxxxx>
> >> Acked-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
> > Well, is my following understand right?
> >
> > - A hardware that does not have hardware vblank timing/counting ability
> > shouldn't set .get_vblank_timestamp .
> > - A hardware that supports vblank counting but not timing should set
> > .get_vblank_timestamp to the
> > drm_crtc_vblank_helper_get_vblank_timestamp helper to allow vblank
> > timing estimate with counter.
>
> Setting drm_crtc_vblank_helper_get_vblank_timestamp() also requires to
> read out the x/y positions. See get_scanout_position. You can leave out
> get_vblank_timestamp entirely and DRM will approximate the values with
> the system timer. For reading the vblank counter, there's
> get_vblank_counter if the hardware supports it.
> >
> > (P.S. There's a DisplayCurrentLocation register that is valid for
> > 7A1000, which returns the current X and Y positions; but I wonder
> > whether this is meaningful for vblank querying.
>
> That sounds like the functionality required for get_scanout_position.
>
> > In addition, this DC looks quite similar to Verisilicon DCNano, which
> > was used by i.MX8ULP (although many functionality on the i.MX8ULP
> > manual is missing, things until cursor0 match between LS7A2000 manual
> > and i.MX8ULP manual). I wonder whether NXP people abandoned the
> > mainlining of DCNano driver because of drm/loongson?)
>
> IDK anything about that.
>
>
> > P.S.2. I saw that Sui Jingfeng's mailbox is bouncing and the driver is
> > going to be orphaned. If he wouldn't react with other ways, maybe I
> > could try to maintain this driver? I have Loongson-3A4000 + LS7A1000
> > and Loongson-3A6000 + LS7A2000 hardwares at home.
>
> Yes, the driver is now orphaned. No one else from Loongson has shown up
> to maintain it either. If you want it, just send a patch to add you as
> maintainer with a short rational.
New maintainers are coming:
https://lore.kernel.org/lkml/20260318092349.11651-1-lvjianmin@xxxxxxxxxxx/
Huacai
>
> Best regards
> Thomas
>
> >
> >>> ---
> >>> drivers/gpu/drm/loongson/lsdc_crtc.c | 1 -
> >>> 1 file changed, 1 deletion(-)
> >>>
> >>> diff --git a/drivers/gpu/drm/loongson/lsdc_crtc.c
> >>> b/drivers/gpu/drm/loongson/lsdc_crtc.c
> >>> index 587fbe285e9ef..b3af8e0cdb15f 100644
> >>> --- a/drivers/gpu/drm/loongson/lsdc_crtc.c
> >>> +++ b/drivers/gpu/drm/loongson/lsdc_crtc.c
> >>> @@ -721,7 +721,6 @@ static const struct drm_crtc_funcs
> >>> ls7a1000_crtc_funcs = {
> >>> .late_register = lsdc_crtc_late_register,
> >>> .enable_vblank = lsdc_crtc_enable_vblank,
> >>> .disable_vblank = lsdc_crtc_disable_vblank,
> >>> - .get_vblank_timestamp =
> >>> drm_crtc_vblank_helper_get_vblank_timestamp,
> >>> .atomic_print_state = lsdc_crtc_atomic_print_state,
> >>> };
> >>>
>
> --
> --
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
> GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
>
>