linux/drivers/gpu/drm/ast
Thomas Zimmermann 6f719373b9 drm/ast: Blank with VGACR17 sync enable, always clear VGACRB6 sync off
Blank the display by disabling sync pulses with VGACR17<7>. Unblank
by reenabling them. This VGA setting should be supported by all Aspeed
hardware.

Ast currently blanks via sync-off bits in VGACRB6. Not all BMCs handle
VGACRB6 correctly. After disabling sync during a reboot, some BMCs do
not reenable it after the soft reset. The display output remains dark.
When the display is off during boot, some BMCs set the sync-off bits in
VGACRB6, so the display remains dark. Observed with  Blackbird AST2500
BMCs. Clearing the sync-off bits unconditionally fixes these issues.

Also do not modify VGASR1's SD bit for blanking, as it only disables GPU
access to video memory.

v2:
- init vgacrb6 correctly (Jocelyn)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: ce3d99c834 ("drm: Call drm_atomic_helper_shutdown() at shutdown time for misc drivers")
Tested-by: Nick Bowler <nbowler@draconx.ca>
Reported-by: Nick Bowler <nbowler@draconx.ca>
Closes: https://lore.kernel.org/dri-devel/wpwd7rit6t4mnu6kdqbtsnk5bhftgslio6e2jgkz6kgw6cuvvr@xbfswsczfqsi/
Cc: Douglas Anderson <dianders@chromium.org>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
Cc: dri-devel@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v6.7+
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Link: https://lore.kernel.org/r/20251014084743.18242-1-tzimmermann@suse.de
2025-10-15 09:55:35 +02:00
..
ast_2000.c drm/ast: Split ast_set_def_ext_reg() by chip generation 2025-07-09 14:36:21 +02:00
ast_2100.c drm/ast: ast_2100: Remove unneeded semicolon 2025-09-05 14:53:06 +02:00
ast_2300.c drm/ast: Split ast_set_def_ext_reg() by chip generation 2025-07-09 14:36:21 +02:00
ast_2500.c drm/ast: Split ast_set_def_ext_reg() by chip generation 2025-07-09 14:36:21 +02:00
ast_2600.c drm/ast: Gen7: Switch default registers to gen4+ state 2025-07-09 14:36:23 +02:00
ast_cursor.c drm/ast: Remove vaddr field from struct ast_plane 2025-04-07 15:08:48 +02:00
ast_ddc.c
ast_ddc.h
ast_dp.c drm/ast: Use msleep instead of mdelay for edid read 2025-09-19 08:46:33 +02:00
ast_dp501.c
ast_drv.c drm/ast: Move Gen6+ POST code to separate source file 2025-07-09 14:36:14 +02:00
ast_drv.h drm/ast: Put AST_DRAM_ constants into enum ast_dram_layout 2025-09-04 12:29:44 +02:00
ast_main.c drm/ast: Move DRAM info next to its only user 2025-09-04 12:29:41 +02:00
ast_mm.c drm/ast: Remove vram_fb_available from struct ast_device 2025-03-12 08:38:12 +01:00
ast_mode.c drm/ast: Blank with VGACR17 sync enable, always clear VGACRB6 sync off 2025-10-15 09:55:35 +02:00
ast_post.c drm/ast: Split ast_set_def_ext_reg() by chip generation 2025-07-09 14:36:21 +02:00
ast_post.h drm/ast: Gen7: Switch default registers to gen4+ state 2025-07-09 14:36:23 +02:00
ast_reg.h drm/ast: Blank with VGACR17 sync enable, always clear VGACRB6 sync off 2025-10-15 09:55:35 +02:00
ast_sil164.c
ast_tables.h drm/ast: Add helpers for VBIOS mode lookup 2025-02-03 14:01:12 +01:00
ast_vbios.c drm/ast: Add helpers for VBIOS mode lookup 2025-02-03 14:01:12 +01:00
ast_vbios.h drm/ast: Add helpers for VBIOS mode lookup 2025-02-03 14:01:12 +01:00
ast_vga.c
Kconfig PCI: Add CONFIG_MMU dependency 2025-04-23 15:40:30 -05:00
Makefile drm/ast: Move Gen2+ and Gen1 POST code to separate source files 2025-07-09 14:36:18 +02:00