{ \.chipVersion = TGT_HAL_CHIP_VERSION, \.rfClkFreq = TGT_HAL_RF_CLK_FREQ, \.useLpsCo1 = FALSE, \.keyInMask = 0x1f, \.keyOutMask = 0x1f, \.pwmCfg = TGT_HAL_PWM_CFG, \.useUsbBackup = FALSE, \.useClk32k = FALSE, \.i2cCfg = TGT_HAL_I2C_CFG, \.i2c1UseCamPins = FALSE, \.i2sCfg = TGT_HAL_I2S_CFG, \.ebcCfg = TGT_HAL_EBC_CFG, \.uartCfg = TGT_HAL_UART_CFG, \.spiCfg = TGT_HAL_SPI_CFG, \.useSdmmc = TRUE, \.useSdmmc2 = FALSE, \.spi2UseCamPins = FALSE, \.camCfg = TGT_HAL_CAM_CFG, \.goudaCfg = TGT_HAL_GOUDA_CFG, \.noConnectGpio = TGT_HAL_NO_CONNECT_GPIO, \.usedGpio = TGT_HAL_USED_GPIO, \.usedGpo = TGT_HAL_USED_GPO, \.usedTco = TGT_HAL_USED_TCO, \.ioDrive = TGT_HAL_IO_DRIVE \}
{#ifdef __DISPLAY_POWERON_LOGO__{{(void(*)(void *))sxs_UsrInitTask,0,"USR INIT: Power-on LOGO",USR_INIT_POWER_ON_LOGO_TASK_STACK_SIZE,USR_INIT_POWER_ON_LOGO_TASK_PRIORITY},(void(*)(void))&lcd_present_CS_log},#endif //__DISPLAY_POWERON_LOGO__{{(void(*)(void *))sxs_UsrInitTask,0,"USR_INIT: BAL Init Task",USR_INIT_BAL_INIT_TASK_STACK_SIZE,USR_INIT_BAL_INIT_TASK_PRIORITY},(void(*)(void))&BAL_TaskInit},{{(void(*)(void *))sxs_UsrInitTask,0,"USR_INIT: Decompress Task",USR_INIT_DECOMPRESS_TASK_STACK_SIZE,USR_INIT_DECOMPRESS_TASK_PRIORITY},(void(*)(void))&BAL_DecompressCode},};
hTask = COS_CreateTask(BAL_MmiMainTaskEntry,NULL, NULL,MMI_TASK_STACK_SIZE,MMI_TASK_PRIORITY,COS_CREATE_SUSPENDED, 0, "MMI Main Task");ASSERT(hTask != HNULL);SetMmiTaskHandle(MOD_MMI, hTask);
COS_StartTask((TASK_HANDLE*)GetMmiTaskHandle(MOD_MMI), NULL);
POWER_ON_KEYPAD 0POWER_ON_ALARM 1POWER_ON_CHARGER_IN 2POWER_ON_EXCEPTION 3
InitializeResourceVariables();MMICheckDiskDisplay(); //display logo/*Guojian Add End For 10810 Ver: GreenStone on 2008-12-19 13:59 */
ResetAbnormalReset();InitializeAll();/*************************************** To initialize nvram data***************************************/InitNvramData();TurnOnBacklight(1);8.3 注册耳机gpio事件//8.4ProtocolEventHandler(Message->msg_id,(void*)Message->local_para_ptr,(int)Message->src_mod_id, (void*) Message); // 处理其他消息事件
/* init graphic library. including lcd and all drawing related modules */gdi_init();
VOID Init_DI(UINT32 background, VOID** unused){mci_LcdInit(background);}
{static VOLATILE BOOL visitFlag = 0;UINT32 status = hal_SysEnterCriticalSection();if (!visitFlag){visitFlag = 1;g_mciLcdBypassFunction=NULL;hal_SysExitCriticalSection(status);
MCI_TRACE(MCI_LCD_TRC_LVL,0,"mci_LcdInit");lcdd_Open();lcdd_GetScreenInfo(&g_mciLcdScreenInfo);mci_LcdClearScreen(background);}else{hal_SysExitCriticalSection(status);}}
/// Open the LCDD driver./// It must be called before any call to any other function of this driver./// This function is to be called only once.
PUBLIC LCDD_ERR_T lcdd_Open(VOID){LCDD_ERR_T ret = LCDD_ERR_NO;
// Allow access to other LCD functions
if (lcdd_LoadDrv()){if (g_lcddDrv->lcdd_Open != NULL){lcdd_SetBrightness(0);ret = g_lcddDrv->lcdd_Open();if (ret == LCDD_ERR_NO){// Allow accessg_lcddLock = 1;}}}else{LCDD_TRACE(LCDD_INFO_TRC, 0, "Lcdd load error");}//if not find lcdd ,must return LCDD_ERR_NO for produceg_lcddOpened = TRUE;return ret;}做了两件重要的事情15.1lcdd_LoadDrvg_lcddDrv->lcdd_Open()
{if( lcddp_CheckProductId()){pLcdDrv->lcdd_Open=lcddp_Open;pLcdDrv->lcdd_Close=lcddp_Close;pLcdDrv->lcdd_SetContrast=lcddp_SetContrast;pLcdDrv->lcdd_SetStandbyMode=lcddp_SetStandbyMode;pLcdDrv->lcdd_PartialOn=lcddp_PartialOn;pLcdDrv->lcdd_PartialOff=lcddp_PartialOff;pLcdDrv->lcdd_Blit16=lcddp_Blit16;pLcdDrv->lcdd_Busy=lcddp_Busy;pLcdDrv->lcdd_FillRect16=lcddp_FillRect16;pLcdDrv->lcdd_GetScreenInfo=lcddp_GetScreenInfo;pLcdDrv->lcdd_WakeUp=lcddp_WakeUp;pLcdDrv->lcdd_SetPixel16=lcddp_SetPixel16;pLcdDrv->lcdd_Sleep=lcddp_Sleep;pLcdDrv->lcdd_SetDirRotation=lcddp_SetDirRotation;pLcdDrv->lcdd_SetDirDefault=lcddp_SetDirDefault;pLcdDrv->lcdd_GetStringId=lcdd_get_id_string;
return TRUE;}
return FALSE;}
....
mtk rda 从bootload开始分析如何加载lcd驱动,布布扣,bubuko.com
mtk rda 从bootload开始分析如何加载lcd驱动
原文:http://blog.csdn.net/u011570979/article/details/21029027