/********************************************************************* * * LCD_X_Config * * Purpose: * Called during the initialization process in order to set up the * display driver configuration. * */ void LCD_X_Config(void) { GUI_MULTIBUF_Config(NUM_BUFFERS); // // Set display driver and color conversion for 1st layer // GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0); // // Display driver configuration, required for Lin-driver // if (LCD_GetSwapXY()) { LCD_SetSizeEx (0, YSIZE_PHYS, XSIZE_PHYS); LCD_SetVSizeEx(0, YSIZE_PHYS, XSIZE_PHYS); } else { LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS); LCD_SetVSizeEx(0, XSIZE_PHYS, YSIZE_PHYS); } LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR); // // Set user palette data (only required if no fixed palette is used) // #if defined(PALETTE) LCD_SetLUTEx(0, PALETTE); #endif }
/********************************************************************* * * LCD_X_Config * * Purpose: * Called during the initialization process in order to set up the * display driver configuration. * */ void LCD_X_Config(void) { /********************************************************************************************************/ { lcd_info.fd = open("/dev/fb0", O_RDWR, 0666); if (lcd_info.fd < 0) { GUI_X_ErrorOut("emWin failed to open framebuffer device: \"/dev/fb0\", serious error\n"); /* * TODO: 出错处理 */ } ioctl(lcd_info.fd, FBIOGET_VSCREENINFO, &lcd_info.var); ioctl(lcd_info.fd, FBIOGET_FSCREENINFO, &lcd_info.fix); /* * TODO: 这两个值的设置 */ COLOR_CONVERSION = GUICC_M565; DISPLAY_DRIVER = GUIDRV_LIN_16; } /********************************************************************************************************/ // // At first initialize use of multiple buffers on demand // #if (NUM_BUFFERS > 1) GUI_MULTIBUF_Config(NUM_BUFFERS); #endif // // Set display driver and color conversion for 1st layer // GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0); // // Display driver configuration, required for Lin-driver // if (LCD_GetSwapXY()) { LCD_SetSizeEx (0, YSIZE_PHYS, XSIZE_PHYS); LCD_SetVSizeEx(0, YSIZE_VIRT, XSIZE_VIRT); } else { LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS); LCD_SetVSizeEx(0, XSIZE_VIRT, YSIZE_VIRT); } LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR); // // Set user palette data (only required if no fixed palette is used) // #if defined(PALETTE) LCD_SetLUTEx(0, PALETTE); #endif }
/********************************************************************* * * LCD_X_Config * * Purpose: * Called during the initialization process in order to set up the * display driver configuration. * */ void LCD_X_Config(void) { GUI_MULTIBUF_Config(NUM_BUFFERS); // // Set display driver and color conversion for 1st layer // guiDevice = GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0); // // Display driver configuration, required for Lin-driver // if (LCD_GetSwapXY()) { LCD_SetSizeEx (0, YSIZE_PHYS, XSIZE_PHYS); LCD_SetVSizeEx(0, YSIZE_PHYS, XSIZE_PHYS); } else { LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS); LCD_SetVSizeEx(0, XSIZE_PHYS, YSIZE_PHYS); } LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR); #ifdef LCD_DEVFUNC_CONTRADDR if(guiDevice) { void (* pSetControllerAddress) (GUI_DEVICE *, uint32_t reg, uint32_t data); /* now let's take function for setting controller address */ pSetControllerAddress = (void (*) (GUI_DEVICE *, uint32_t, uint32_t))guiDevice->pDeviceAPI->pfGetDevFunc(&guiDevice, LCD_DEVFUNC_CONTRADDR); /* and configure addresses - for writing register and data */ pSetControllerAddress(guiDevice, BC_SSD2119_BASE, BC_SSD2119_BASE + 2); } #endif /* example how to disable default controller initialization function */ #ifdef removeit_LCD_DEVFUNC_INITIALIZE if(guiDevice) { void (* pSetFunc) (GUI_DEVICE *, int, void (*)(void)); /* now let's take function for changing functions in driver */ pSetFunc = (void (*) (GUI_DEVICE *, int, void (*)(void)))guiDevice->pDeviceAPI->pfGetDevFunc(&guiDevice, LCD_DEVFUNC_SETFUNC); /* and replace initialization function. It is possible to remove */ /* initialization function by giving null instead of new function pointer */ pSetFunc(guiDevice, LCD_DEVFUNC_INITIALIZE, (void (*)(void))yourInitFunction); } #endif // // Set user palette data (only required if no fixed palette is used) // #if defined(PALETTE) LCD_SetLUTEx(0, PALETTE); #endif }
/********************************************************************* * * LCD_X_Config * * Purpose: * Called during the initialization process in order to set up the * display driver configuration. * */ void LCD_X_Config(void) { // // Set display driver and color conversion for 1st layer // GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0); // // Display driver configuration // LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS); LCD_SetVSizeEx (0, VXSIZE_PHYS, VYSIZE_PHYS); LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR); // // Set user palette data (only required if no fixed palette is used) // #if defined(PALETTE) LCD_SetLUTEx(0, PALETTE); #endif }
/********************************************************************* * * LCD_X_Config * * Purpose: * Called during the initialization process in order to set up the * display driver configuration. * */ void LCD_X_Config(void) { int i, BitsPerPixel; U32 Addr; // // Video RAM start address. // // This address is only required for display drivers with memory // mapped video RAM like the LIN_xxx driver. It does not need to // be adapted for display controllers with a simple bus interface. // Addr = 0x12345678; // // Display driver configuration // for (i = 0; i < GUI_COUNTOF(_aConfigPara); i++) { // // Set display driver and color conversion for 1st layer // GUI_DEVICE_CreateAndLink(_aConfigPara[i].pDisplayDriver, _aConfigPara[i].pColorConv, 0, i); // // Display driver configuration // LCD_SetPosEx (i, _aConfigPara[i].xPos, _aConfigPara[i].yPos); LCD_SetSizeEx (i, _aConfigPara[i].xSize, _aConfigPara[i].ySize); LCD_SetVSizeEx (i, _aConfigPara[i].vxSize, _aConfigPara[i].vySize); LCD_SetVRAMAddrEx(i, (void *)Addr); LCD_SetVisEx (i, 1); // // Set user palette data (only required if no fixed palette is used) // if (_aConfigPara[i].pPalette) { LCD_SetLUTEx(i, _aConfigPara[i].pPalette); } // // Calculate video RAM address for the following layer // BitsPerPixel = LCD_GetBitsPerPixelEx(i); Addr += ((_aConfigPara[i].vxSize * BitsPerPixel) * _aConfigPara[i].vySize) / 8; } }
/********************************************************************* * * LCD_X_Config * * Purpose: * Called during the initialization process in order to set up the * display driver configuration. * */ void LCD_X_Config(void) { // // At first initialize use of multiple buffers on demand // #if (NUM_BUFFERS > 1) GUI_MULTIBUF_Config(NUM_BUFFERS); #endif // // Set display driver and color conversion for 1st layer // GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0); // // Display driver configuration, required for Lin-driver // if (LCD_GetSwapXY()) { LCD_SetSizeEx (0, YSIZE_PHYS, XSIZE_PHYS); LCD_SetVSizeEx(0, YSIZE_PHYS * NUM_VSCREENS, XSIZE_PHYS); } else { LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS); LCD_SetVSizeEx(0, XSIZE_PHYS, YSIZE_PHYS * NUM_VSCREENS); } LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR); // // Set user palette data (only required if no fixed palette is used) // #if defined(PALETTE) LCD_SetLUTEx(0, PALETTE); #endif // // Set custom functions for several operations to optimize native processes // // LCD_SetDevFunc(0, LCD_DEVFUNC_COPYBUFFER, (void(*)(void))CUSTOM_LCD_CopyBuffer); // LCD_SetDevFunc(0, LCD_DEVFUNC_COPYRECT, (void(*)(void))CUSTOM_LCD_CopyRect); // LCD_SetDevFunc(0, LCD_DEVFUNC_FILLRECT, (void(*)(void))CUSTOM_LCD_FillRect); // LCD_SetDevFunc(0, LCD_DEVFUNC_DRAWBMP_8BPP, (void(*)(void))CUSTOM_LCD_DrawBitmap8bpp); // LCD_SetDevFunc(0, LCD_DEVFUNC_DRAWBMP_16BPP, (void(*)(void))CUSTOM_LCD_DrawBitmap16bpp); }