x11-drivers/xf86-video-ast: restore functionality on 12

AST video which works on 11-, doesn't on 12-, restored by
pulling in some Linux DRM patches and then massaging it to
avoid device-tree madness, from darius@dons.net.au

PR:		240294
Approved by:	zeising (x11@)
This commit is contained in:
Darius 2021-07-09 13:19:00 +02:00 committed by Adriaan de Groot
parent 8bec1ad606
commit b6eed3fd34
2 changed files with 34 additions and 1 deletions

View File

@ -1,6 +1,6 @@
PORTNAME= xf86-video-ast
PORTVERSION= 1.1.5
PORTREVISION= 3
PORTREVISION= 4
CATEGORIES= x11-drivers
MAINTAINER= x11@FreeBSD.org

View File

@ -0,0 +1,33 @@
--- src/ast_vgatool.c.orig 2015-08-19 01:24:48.000000000 +0000
+++ src/ast_vgatool.c 2020-09-17 14:19:18.843298000 +0000
@@ -432,11 +432,27 @@
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000;
*(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1;
+ /* Based on the Linux DRM driver we might not be able to access this
+ * If we can't just use some sane defaults.
+ *
+ * See drm/drivers/gpu/drm/ast/ast_main.c line 295.
+ */
+
*(ULONG *) (pAST->MMIOVirtualAddr + 0x10000) = 0xFC600309;
- do {
- ;
- } while (*(volatile ULONG *) (pAST->MMIOVirtualAddr + 0x10000) != 0x01);
+ for (ulData = 10000; ulData > 0; ulData--)
+ if (*(volatile ULONG *) (pAST->MMIOVirtualAddr + 0x10000) == 0x01)
+ break;
+ if (ulData == 0) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Unable to read DRAM information, using defaults\n");
+ pAST->ulDRAMBusWidth = 16;
+ pAST->jDRAMType = DRAMTYPE_1Gx16;
+ if (pAST->jChipType == AST2500)
+ pAST->ulMCLK = 800;
+ else
+ pAST->ulMCLK = 396;
+ return;
+ }
ulData = *(volatile ULONG *) (pAST->MMIOVirtualAddr + 0x10004);
/* Get BusWidth */