#include <drv_pci.h>\r
#include <api_drv_video.h>\r
#include <lib/keyvalue.h>\r
+#include <options.h> // ARM Arch\r
\r
#define ABS(a) ((a)>0?(a):-(a))\r
\r
Uint32 LCDLPCurr;\r
};\r
\r
-// === CONSTANTS ===\r
+#ifndef PL110_BASE\r
#define PL110_BASE 0x10020000 // Integrator\r
+#endif\r
\r
+// === CONSTANTS ===\r
const struct {\r
short W, H;\r
} caPL110_Modes[] = {\r
void *gpPL110_Framebuffer;\r
// -- Misc\r
tDrvUtil_Video_BufInfo gPL110_DrvUtil_BufInfo;\r
+tVideo_IOCtl_Pos gPL110_CursorPos;\r
\r
// === CODE ===\r
/**\r
BASE_IOCTLS(DRV_TYPE_VIDEO, "PL110", VERSION, csaPL110_IOCtls);\r
\r
case VIDEO_IOCTL_SETBUFFORMAT:\r
+ DrvUtil_Video_RemoveCursor( &gPL110_DrvUtil_BufInfo );\r
ret = giPL110_BufferMode;\r
if(Data) giPL110_BufferMode = *(int*)Data;\r
+ if(gPL110_DrvUtil_BufInfo.BufferFormat == VIDEO_BUFFMT_TEXT)\r
+ DrvUtil_Video_SetCursor( &gPL110_DrvUtil_BufInfo, &gDrvUtil_TextModeCursor );\r
break;\r
\r
case VIDEO_IOCTL_GETSETMODE:\r
break;\r
}\r
\r
- case VIDEO_IOCTL_SETCURSOR: break;\r
+ case VIDEO_IOCTL_SETCURSOR:\r
+ if( !Data || !CheckMem(Data, sizeof(tVideo_IOCtl_Pos)) )\r
+ LEAVE_RET('i', -1);\r
+\r
+ DrvUtil_Video_RemoveCursor( &gPL110_DrvUtil_BufInfo );\r
+ \r
+ gPL110_CursorPos = *(tVideo_IOCtl_Pos*)Data;\r
+ if(gPL110_DrvUtil_BufInfo.BufferFormat == VIDEO_BUFFMT_TEXT)\r
+ DrvUtil_Video_DrawCursor(\r
+ &gPL110_DrvUtil_BufInfo,\r
+ gPL110_CursorPos.x*giVT_CharWidth,\r
+ gPL110_CursorPos.y*giVT_CharHeight\r
+ );\r
+ else\r
+ DrvUtil_Video_DrawCursor(\r
+ &gPL110_DrvUtil_BufInfo,\r
+ gPL110_CursorPos.x,\r
+ gPL110_CursorPos.y\r
+ );\r
+ break;\r
\r
default:\r
LEAVE('i', -2);\r