Kernel/armv7 - Fiddling with prefetch abort output
[tpg/acess2.git] / Modules / Display / BochsGA / bochsvbe.c
index 3d3132a..58a024f 100644 (file)
@@ -78,7 +78,6 @@ tDevFS_Driver gBGA_DriverStruct = {
        }\r
 };\r
  int   giBGA_CurrentMode = -1;\r
- int   giBGA_BufferFormat = 0;\r
 tVideo_IOCtl_Pos       gBGA_CursorPos = {-1,-1};\r
 Uint   *gBGA_Framebuffer;\r
 const tBGA_Mode        *gpBGA_CurrentMode;\r
@@ -104,10 +103,10 @@ int BGA_Install(char **Arguments)
        version = BGA_int_ReadRegister(VBE_DISPI_INDEX_ID);\r
        LOG("version = 0x%x", version);\r
        \r
-       // NOTE: This driver was written for later than 0xB0C2\r
-       // NOTE: Qemu is braindead and doesn't return the actual version\r
+       // NOTE: This driver was written for BGA versions >= 0xBOC2\r
+       // NOTE: However, Qemu is braindead and doesn't return the actual version\r
        if( version != 0xB0C0 && ((version & 0xFFF0) != 0xB0C0 || version < 0xB0C2) ) {\r
-               Log_Warning("BGA", "Bochs Adapter Version is not 0xB0C4 or 0xB0C5, instead 0x%x", version);\r
+               Log_Warning("BGA", "Bochs Adapter Version is not compatible (need >= 0xB0C2), instead 0x%x", version);\r
                return MODULE_ERR_NOTNEEDED;\r
        }\r
 \r
@@ -120,7 +119,6 @@ int BGA_Install(char **Arguments)
 \r
        // Map Framebuffer to hardware address\r
        gBGA_Framebuffer = (void *) MM_MapHWPages(base, 768);   // 768 pages (3Mb)\r
-       MM_DumpTables(0, -1);\r
 \r
        // Install Device\r
        if( DevFS_AddDevice( &gBGA_DriverStruct ) == -1 )\r
@@ -138,7 +136,7 @@ int BGA_Install(char **Arguments)
 void BGA_Uninstall(void)\r
 {\r
        DevFS_DelDevice( &gBGA_DriverStruct );\r
-       MM_UnmapHWPages( VBE_DISPI_LFB_PHYSICAL_ADDRESS, 768 );\r
+       MM_UnmapHWPages( (tVAddr)gBGA_Framebuffer, 768 );\r
 }\r
 \r
 /**\r
@@ -165,7 +163,7 @@ Uint64 BGA_Read(tVFS_Node *node, Uint64 off, Uint64 len, void *buffer)
 Uint64 BGA_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer)\r
 {\r
        if( giBGA_CurrentMode == -1 )   BGA_int_UpdateMode(0);\r
-       return DrvUtil_Video_WriteLFB(giBGA_BufferFormat, &gBGA_DrvUtil_BufInfo, Offset, Length, Buffer);\r
+       return DrvUtil_Video_WriteLFB(&gBGA_DrvUtil_BufInfo, Offset, Length, Buffer);\r
 }\r
 \r
 const char *csaBGA_IOCtls[] = {DRV_IOCTLNAMES, DRV_VIDEO_IOCTLNAMES, NULL};\r
@@ -195,14 +193,29 @@ int BGA_IOCtl(tVFS_Node *Node, int ID, void *Data)
                break;\r
        \r
        case VIDEO_IOCTL_SETBUFFORMAT:\r
-               ret = giBGA_BufferFormat;\r
+               DrvUtil_Video_RemoveCursor( &gBGA_DrvUtil_BufInfo );\r
+               ret = gBGA_DrvUtil_BufInfo.BufferFormat;\r
                if(Data)\r
-                       giBGA_BufferFormat = *(int*)Data;\r
+                       gBGA_DrvUtil_BufInfo.BufferFormat = *(int*)Data;\r
+               if(gBGA_DrvUtil_BufInfo.BufferFormat == VIDEO_BUFFMT_TEXT)\r
+                       DrvUtil_Video_SetCursor( &gBGA_DrvUtil_BufInfo, &gDrvUtil_TextModeCursor );\r
                break;\r
        \r
        case VIDEO_IOCTL_SETCURSOR:\r
+               DrvUtil_Video_RemoveCursor( &gBGA_DrvUtil_BufInfo );\r
                gBGA_CursorPos.x = ((tVideo_IOCtl_Pos*)Data)->x;\r
                gBGA_CursorPos.y = ((tVideo_IOCtl_Pos*)Data)->y;\r
+               if(gBGA_DrvUtil_BufInfo.BufferFormat == VIDEO_BUFFMT_TEXT)\r
+                       DrvUtil_Video_DrawCursor(\r
+                               &gBGA_DrvUtil_BufInfo,\r
+                               gBGA_CursorPos.x*giVT_CharWidth,\r
+                               gBGA_CursorPos.y*giVT_CharHeight\r
+                               );\r
+               else\r
+                       DrvUtil_Video_DrawCursor(\r
+                               &gBGA_DrvUtil_BufInfo,\r
+                               gBGA_CursorPos.x, gBGA_CursorPos.y\r
+                               );\r
                break;\r
        \r
        default:\r
@@ -241,7 +254,6 @@ void BGA_int_SetMode(Uint16 Width, Uint16 Height)
        BGA_int_WriteRegister(VBE_DISPI_INDEX_YRES, Height);\r
        BGA_int_WriteRegister(VBE_DISPI_INDEX_BPP, 32);\r
        BGA_int_WriteRegister(VBE_DISPI_INDEX_ENABLE, VBE_DISPI_ENABLED | VBE_DISPI_NOCLEARMEM | VBE_DISPI_LFB_ENABLED);\r
-       MAGIC_BREAK();\r
        LEAVE('-');\r
 }\r
 \r

UCC git Repository :: git.ucc.asn.au