Modules/UHCI - Just a little more debug
[tpg/acess2.git] / KernelLand / Modules / Display / VESA / main.c
index a85d313..2dbc98c 100644 (file)
@@ -12,6 +12,7 @@
 #include <modules.h>\r
 #include <vm8086.h>\r
 #include "common.h"\r
+#include <timers.h>\r
 \r
 // === CONSTANTS ===\r
 #define        FLAG_LFB        0x1\r
@@ -23,8 +24,7 @@
 \r
 // === PROTOTYPES ===\r
  int   Vesa_Install(char **Arguments);\r
-Uint64 Vesa_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer);\r
-Uint64 Vesa_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, const void *Buffer);\r
+size_t Vesa_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer);\r
  int   Vesa_IOCtl(tVFS_Node *Node, int ID, void *Data);\r
  int   Vesa_Int_SetMode(int Mode);\r
  int   Vesa_Int_FindMode(tVideo_IOCtl_Mode *data);\r
@@ -36,7 +36,6 @@ void  Vesa_FlipCursor(void *Arg);
 // === GLOBALS ===\r
 MODULE_DEFINE(0, VERSION, Vesa, Vesa_Install, NULL, "PCI", "VM8086", NULL);\r
 tVFS_NodeType  gVesa_NodeType = {\r
-       .Read = Vesa_Read,\r
        .Write = Vesa_Write,\r
        .IOCtl = Vesa_IOCtl\r
        };\r
@@ -59,7 +58,9 @@ char  *gpVesa_Framebuffer = (void*)VESA_DEFAULT_FRAMEBUFFER;
 // --- Cursor Control ---\r
  int   giVesaCursorX = -1;\r
  int   giVesaCursorY = -1;\r
- int   giVesaCursorTimer = -1; // Invalid timer\r
+#if BLINKING_CURSOR\r
+tTimer *gpVesaCursorTimer;\r
+#endif\r
  int   gbVesa_CursorVisible = 0;\r
 // --- 2D Video Stream Handlers ---\r
 tDrvUtil_Video_BufInfo gVesa_BufInfo;\r
@@ -112,10 +113,15 @@ int Vesa_Install(char **Arguments)
 \r
 //     VM8086_Deallocate( info );\r
        \r
+       #if BLINKING_CURSOR\r
+       // Create blink timer\r
+       gpVesaCursorTimer = Time_AllocateTimer( Vesa_FlipCursor, NULL );\r
+       #endif\r
+\r
        // Install Device\r
        giVesaDriverId = DevFS_AddDevice( &gVesa_DriverStruct );\r
        if(giVesaDriverId == -1)        return MODULE_ERR_MISC;\r
-       \r
+\r
        return MODULE_ERR_OK;\r
 }\r
 \r
@@ -166,20 +172,10 @@ void Vesa_int_FillModeList(void)
        }\r
 }\r
 \r
-/* Read from the framebuffer\r
- */\r
-Uint64 Vesa_Read(tVFS_Node *Node, Uint64 off, Uint64 len, void *buffer)\r
-{\r
-       #if DEBUG >= 2\r
-       Log("Vesa_Read: () - NULL\n");\r
-       #endif\r
-       return 0;\r
-}\r
-\r
 /**\r
  * \brief Write to the framebuffer\r
  */\r
-Uint64 Vesa_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, const void *Buffer)\r
+size_t Vesa_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer)\r
 {\r
        if( gVesa_Modes[giVesaCurrentMode].framebuffer == 0 ) {\r
                Log_Warning("VESA", "Vesa_Write - Non-LFB Modes not yet supported.");\r
@@ -246,8 +242,7 @@ int Vesa_Int_SetMode(int mode)
        \r
        Vesa_int_FillModeList();\r
 \r
-       Time_RemoveTimer(giVesaCursorTimer);\r
-       giVesaCursorTimer = -1;\r
+       Time_RemoveTimer(gpVesaCursorTimer);\r
        \r
        Mutex_Acquire( &glVesa_Lock );\r
        \r
@@ -365,9 +360,8 @@ void Vesa_int_HideCursor(void)
 {\r
        DrvUtil_Video_RemoveCursor( &gVesa_BufInfo );\r
        #if BLINKING_CURSOR\r
-       if(giVesaCursorTimer != -1) {\r
-               Time_RemoveTimer(giVesaCursorTimer);\r
-               giVesaCursorTimer = -1;\r
+       if(gpVesaCursorTimer) {\r
+               Time_RemoveTimer(gpVesaCursorTimer);\r
        }\r
        #endif\r
 }\r
@@ -383,7 +377,7 @@ void Vesa_int_ShowCursor(void)
                        giVesaCursorY*giVT_CharHeight\r
                        );\r
                #if BLINKING_CURSOR\r
-               giVesaCursorTimer = Time_CreateTimer(VESA_CURSOR_PERIOD, Vesa_FlipCursor, NULL);\r
+               Time_ScheduleTimer( gpVesaCursorTimer, VESA_CURSOR_PERIOD );\r
                #endif\r
        }\r
        else\r
@@ -412,7 +406,7 @@ void Vesa_FlipCursor(void *Arg)
        gbVesa_CursorVisible = !gbVesa_CursorVisible;\r
                \r
        #if BLINKING_CURSOR\r
-       giVesaCursorTimer = Time_CreateTimer(VESA_CURSOR_PERIOD, Vesa_FlipCursor, Arg);\r
+       Time_ScheduleTimer( gpVesaCursorTimer, VESA_CURSOR_PERIOD );\r
        #endif\r
 }\r
 \r

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