X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FDisplay%2FBochsGA%2Fbochsvbe.c;h=4eb9c66de48a2fc17cb8d5f530cb156eed8a6bee;hb=a335dd47727c40467c1ff7fc256c9061c0398d05;hp=4e0e600df7533ee617c2966b8b1c3f19865f9b4f;hpb=880dd63bfcba522dab0a75cc63fdec1d04ff8c89;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Display/BochsGA/bochsvbe.c b/KernelLand/Modules/Display/BochsGA/bochsvbe.c index 4e0e600d..4eb9c66d 100644 --- a/KernelLand/Modules/Display/BochsGA/bochsvbe.c +++ b/KernelLand/Modules/Display/BochsGA/bochsvbe.c @@ -47,8 +47,6 @@ enum { VBE_DISPI_INDEX_Y_OFFSET }; -extern void MM_DumpTables(tVAddr Start, tVAddr End); - // === PROTOTYPES === // Driver int BGA_Install(char **Arguments); @@ -63,8 +61,8 @@ void BGA_int_SetMode(Uint16 width, Uint16 height); int BGA_int_ModeInfo(tVideo_IOCtl_Mode *info); int BGA_int_MapFB(void *Dest); // Filesystem -size_t BGA_Read(tVFS_Node *Node, off_t off, size_t len, void *buffer); -size_t BGA_Write(tVFS_Node *Node, off_t off, size_t len, const void *buffer); +size_t BGA_Read(tVFS_Node *Node, off_t off, size_t len, void *buffer, Uint Flags); +size_t BGA_Write(tVFS_Node *Node, off_t off, size_t len, const void *buffer, Uint Flags); int BGA_IOCtl(tVFS_Node *Node, int ID, void *Data); // === GLOBALS === @@ -84,6 +82,7 @@ Uint *gBGA_Framebuffer; const tBGA_Mode *gpBGA_CurrentMode; const tBGA_Mode gBGA_Modes[] = { {640,480,32, 640*480*4}, + {800,480,32, 800*480*4}, // Nice mode for VM testing {800,600,32, 800*600*4}, {1024,768,32, 1024*768*4} }; @@ -103,6 +102,10 @@ int BGA_Install(char **Arguments) // Check BGA Version version = BGA_int_ReadRegister(VBE_DISPI_INDEX_ID); LOG("version = 0x%x", version); + if( version == 0xFFFF ) { + // Floating bus, nothing there + return MODULE_ERR_NOTNEEDED; + } // NOTE: This driver was written for BGA versions >= 0xBOC2 // NOTE: However, Qemu is braindead and doesn't return the actual version @@ -143,7 +146,7 @@ void BGA_Uninstall(void) /** * \brief Read from the framebuffer */ -size_t BGA_Read(tVFS_Node *node, off_t off, size_t len, void *buffer) +size_t BGA_Read(tVFS_Node *node, off_t off, size_t len, void *buffer, Uint Flags) { // Check Mode if(giBGA_CurrentMode == -1) return -1; @@ -160,7 +163,7 @@ size_t BGA_Read(tVFS_Node *node, off_t off, size_t len, void *buffer) /** * \brief Write to the framebuffer */ -size_t BGA_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer) +size_t BGA_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer, Uint Flags) { if( giBGA_CurrentMode == -1 ) BGA_int_UpdateMode(0); return DrvUtil_Video_WriteLFB(&gBGA_DrvUtil_BufInfo, Offset, Length, Buffer); @@ -217,6 +220,10 @@ int BGA_IOCtl(tVFS_Node *Node, int ID, void *Data) gBGA_CursorPos.x, gBGA_CursorPos.y ); break; + + case VIDEO_IOCTL_SETCURSORBITMAP: + DrvUtil_Video_SetCursor( &gBGA_DrvUtil_BufInfo, Data ); + return 0; default: LEAVE('i', -2);