void DRVPDN_ini(void) { kal_uint8 index;/*obtain all device handle*/ for (index =0;index<PDN_MAX_DEV;index++) { ASSERT(PDNID_2_DEVI[index] != 0xff); #if defined(MT6208) || defined(MT6205B) || defined(MT6218B) || defined(MT6217) if ((index == DRVPDN_CON1_UART1) || (index == DRVPDN_CON1_UART2) ) #else if ((index == DRVPDN_CON1_UART1) || (index == DRVPDN_CON1_UART2) || (index == DRVPDN_CON1_UART3)) #endif /* MT6208, MT6205B, MT6218B, MT6217 */ { lpwr_module_open(&LPWR_DEV[index], PDNID_2_DEVI[index], NULL, NULL); } else { lpwr_module_open(&LPWR_DEV[index], PDNID_2_DEVI[index], DRV_PDN_EN, DRV_PDN_DIS); } } }
/************************************************************************* * FUNCTION * DRVPDN_ini * * DESCRIPTION * initialize PDN control * * PARAMETERS * none * * RETURNS * none * *************************************************************************/ void DRVPDN_ini(void) { kal_uint32 index; kal_uint32 irq_mask; irq_mask = SaveAndSetIRQMask(); if( DRVPDN_NOT_INITIALIZED == drvpdn_initial_state ) { drvpdn_initial_state = DRVPDN_INITIALIZING; RestoreIRQMask(irq_mask); //SHENGKAI for (index =0; index < PDN_MAX_DEV; index++) { ASSERT(PDNID_2_DEVI[index] != DEV_NULL_ID); if (pdn_options[index] & PDN_OPT_NEVER_OFF) { lpwr_module_open(&LPWR_DEV[index], PDNID_2_DEVI[index], NULL, NULL); } else { lpwr_module_open(&LPWR_DEV[index], PDNID_2_DEVI[index], pdn_set_callback, pdn_clr_callback); } } irq_mask = SaveAndSetIRQMask(); drvpdn_initial_state = DRVPDN_INITIALIZED; RestoreIRQMask(irq_mask);//shengkai } else if( (DRVPDN_INITIALIZED != drvpdn_initial_state) && (DRVPDN_INITIALIZING !=drvpdn_initial_state) ) { RestoreIRQMask(irq_mask); //shengkai /* memory corruption on DRVPDN initialization state */ EXT_ASSERT(0, drvpdn_initial_state, (kal_uint32)&drvpdn_initial_state, 0); } else { RestoreIRQMask(irq_mask);//shengkai } }