Modules/Tegra2Vid - Fiddling!
[tpg/acess2.git] / KernelLand / Modules / Display / Tegra2Vid / main.c
index d9405be..f091327 100644 (file)
 void   Tegra2Vid_Uninstall();\r
 // Internal\r
 // Filesystem\r
-Uint64 Tegra2Vid_Read(tVFS_Node *node, Uint64 off, Uint64 len, void *buffer);\r
-Uint64 Tegra2Vid_Write(tVFS_Node *node, Uint64 off, Uint64 len, void *buffer);\r
+size_t Tegra2Vid_Read(tVFS_Node *node, off_t off, size_t len, void *buffer);\r
+size_t Tegra2Vid_Write(tVFS_Node *node, off_t off, size_t len, const void *buffer);\r
  int   Tegra2Vid_IOCtl(tVFS_Node *node, int id, void *data);\r
 // -- Internals\r
  int   Tegra2Vid_int_SetMode(int Mode);\r
 \r
 // === GLOBALS ===\r
 MODULE_DEFINE(0, VERSION, Tegra2Vid, Tegra2Vid_Install, NULL, NULL);\r
-tDevFS_Driver  gTegra2Vid_DriverStruct = {\r
-       NULL, "Tegra2Vid",\r
-       {\r
+tVFS_NodeType  gTegra2Vid_NodeType = {\r
        .Read = Tegra2Vid_Read,\r
        .Write = Tegra2Vid_Write,\r
        .IOCtl = Tegra2Vid_IOCtl\r
-       }\r
+       };\r
+tDevFS_Driver  gTegra2Vid_DriverStruct = {\r
+       NULL, "Tegra2Vid",\r
+       {.Type = &gTegra2Vid_NodeType}\r
 };\r
 // -- Options\r
 tPAddr gTegra2Vid_PhysBase = TEGRA2VID_BASE;\r
@@ -66,6 +67,7 @@ tVideo_IOCtl_Pos      gTegra2Vid_CursorPos;
  */\r
 int Tegra2Vid_Install(char **Arguments)\r
 {\r
+       return MODULE_ERR_NOTNEEDED;\r
 //     KeyVal_Parse(&gTegra2Vid_KeyValueParser, Arguments);\r
 \r
        gpTegra2Vid_IOMem = (void*)MM_MapHWPages(gTegra2Vid_PhysBase, 256/4);\r
@@ -94,17 +96,35 @@ int Tegra2Vid_Install(char **Arguments)
                        Log_Debug("Tegra2Vid", "[0x%03x] = 0x%08x", i, gpTegra2Vid_IOMem[i]);\r
        }\r
 //     return 1;\r
-       \r
+\r
+       // HACK!!!\r
+#if 0\r
+       {\r
+               int     w = 1680, h = 1050;\r
+               gpTegra2Vid_IOMem[DC_DISP_DISP_ACTIVE_0] = (h << 16) | w;\r
+               gpTegra2Vid_IOMem[DC_WIN_A_SIZE_0] = (h << 16) | w;\r
+               gpTegra2Vid_IOMem[DC_WIN_A_PRESCALED_SIZE_0] = (h << 16) | w;\r
+       }\r
+#endif\r
+\r
        giTegra2Vid_FramebufferSize =\r
                (gpTegra2Vid_IOMem[DC_WIN_A_SIZE_0]&0xFFFF)\r
                *(gpTegra2Vid_IOMem[DC_WIN_A_SIZE_0]>>16)*4;\r
 \r
        Log_Debug("Tegra2Vid", "giTegra2Vid_FramebufferSize = 0x%x", giTegra2Vid_FramebufferSize);\r
-       gpTegra2Vid_Framebuffer = MM_MapHWPages(\r
+       gpTegra2Vid_Framebuffer = (void*)MM_MapHWPages(\r
                gpTegra2Vid_IOMem[DC_WINBUF_A_START_ADDR_0],\r
                (giTegra2Vid_FramebufferSize+PAGE_SIZE-1)/PAGE_SIZE\r
                );\r
-       memset(gpTegra2Vid_Framebuffer, 0x1F, 0x1000);\r
+       memset(gpTegra2Vid_Framebuffer, 0xFF, 0x1000);\r
+\r
+//     gpTegra2Vid_IOMem[DC_WIN_A_WIN_OPTIONS_0] &= ~0x40;\r
+//     gpTegra2Vid_IOMem[DC_WIN_A_COLOR_DEPTH_0] = 12; // Could be 13 (BGR/RGB)\r
+       gTegra2Vid_DrvUtil_BufInfo.Width = 1024;\r
+       gTegra2Vid_DrvUtil_BufInfo.Height = 768;\r
+       gTegra2Vid_DrvUtil_BufInfo.Pitch = 1024*4;\r
+       gTegra2Vid_DrvUtil_BufInfo.Depth = 32;\r
+       gTegra2Vid_DrvUtil_BufInfo.Framebuffer = gpTegra2Vid_Framebuffer;\r
 \r
 \r
 //     Tegra2Vid_int_SetMode(4);\r
@@ -124,7 +144,7 @@ void Tegra2Vid_Uninstall()
 /**\r
  * \brief Read from the framebuffer\r
  */\r
-Uint64 Tegra2Vid_Read(tVFS_Node *node, Uint64 off, Uint64 len, void *buffer)\r
+size_t Tegra2Vid_Read(tVFS_Node *node, off_t off, size_t len, void *buffer)\r
 {\r
        return 0;\r
 }\r
@@ -132,7 +152,7 @@ Uint64 Tegra2Vid_Read(tVFS_Node *node, Uint64 off, Uint64 len, void *buffer)
 /**\r
  * \brief Write to the framebuffer\r
  */\r
-Uint64 Tegra2Vid_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer)\r
+size_t Tegra2Vid_Write(tVFS_Node *Node, off_t Offset, size_t Length, const void *Buffer)\r
 {\r
        gTegra2Vid_DrvUtil_BufInfo.BufferFormat = giTegra2Vid_BufferMode;\r
        return DrvUtil_Video_WriteLFB(&gTegra2Vid_DrvUtil_BufInfo, Offset, Length, Buffer);\r
@@ -185,7 +205,7 @@ int Tegra2Vid_IOCtl(tVFS_Node *Node, int ID, void *Data)
        case VIDEO_IOCTL_FINDMODE:\r
                {\r
                tVideo_IOCtl_Mode *mode = Data;\r
-                int    closest, closestArea, reqArea = 0;\r
+                int    closest=0, closestArea, reqArea = 0;\r
                if(!Data || !CheckMem(Data, sizeof(tVideo_IOCtl_Mode)))\r
                        LEAVE_RET('i', -1);\r
                if( mode->bpp != 32 )\r
@@ -288,10 +308,10 @@ int Tegra2Vid_int_SetMode(int Mode)
        *(Uint32*)(gpTegra2Vid_IOMem + DC_DISP_DISP_ACTIVE_0) = (mode->H << 16)   | mode->W;\r
 \r
        *(Uint32*)(gpTegra2Vid_IOMem + DC_WIN_A_POSITION_0) = 0;\r
-       *(Uint32*)(gpTegra2Vid_IOMem + DC_WIN_A_SIZE_0) = (mode->H << 16) | mode->W;\r
+       *(Uint32*)(gpTegra2Vid_IOMem + DC_WIN_A_SIZE_0) = (h << 16) | w;\r
        *(Uint32*)(gpTegra2Vid_IOMem + DC_DISP_DISP_COLOR_CONTROL_0) = 0x8;     // BASE888\r
        *(Uint32*)(gpTegra2Vid_IOMem + DC_WIN_A_COLOR_DEPTH_0) = 12;    // Could be 13 (BGR/RGB)\r
-       *(Uint32*)(gpTegra2Vid_IOMem + DC_WIN_A_PRESCALED_SIZE_0) = (mode->H << 16) | mode->W;\r
+       *(Uint32*)(gpTegra2Vid_IOMem + DC_WIN_A_PRESCALED_SIZE_0) = (h << 16) | w;\r
 \r
        Log_Debug("Tegra2Vid", "Mode %i (%ix%i) selected", Mode, w, h);\r
 \r

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