void fs_err_internal_fatal(kal_int32 code, void *info) { kal_uint32 lr; FS_GET_RETURN_ADDRESS(lr); _gfs_err_info = info; kal_fatal_error_handler(KAL_ERROR_FILESYS_NORMAL_FAILED, lr); // A02 }
void fs_err_assert(fs_src_file_enum file, kal_uint32 line) { kal_uint32 lr; FS_GET_RETURN_ADDRESS(lr); _gfs_err_assert_line = line; _gfs_err_assert_file = file; kal_fatal_error_handler(KAL_ERROR_FILESYS_NORMAL_FAILED, lr); // A02 }
void fs_err_assert_ext(fs_src_file_enum file, kal_uint32 line, kal_uint32 e1, kal_uint32 e2, kal_uint32 e3) { kal_uint32 lr; FS_GET_RETURN_ADDRESS(lr); _gfs_err_assert_line = line; _gfs_err_assert_file = file; _gfs_err_assert_param[0] = e1; _gfs_err_assert_param[1] = e2; _gfs_err_assert_param[2] = e3; kal_fatal_error_handler(KAL_ERROR_FILESYS_NORMAL_FAILED, lr); // A02 }
void fs_err_user_fatal(kal_int32 code, void *info) { kal_fatal_error_handler(KAL_ERROR_FILESYS_INTERNAL_FAILED, (kal_uint32)info); // A01 }
void EINT_Registration_and_mask(kal_uint8 eintno, kal_bool Dbounce_En, kal_bool ACT_Polarity, void (reg_hisr)(void), kal_bool auto_umask) { // PDN_CLR(PDN_GPIO); kal_uint32 savedMask; /* If EINT Number is out of range, get return address and send it to exception handler */ if(eintno >= EINT_TOTAL_CHANNEL) { kal_uint32 retaddr; GET_RETURN_ADDRESS(retaddr); kal_fatal_error_handler(KAL_ERROR_DRV_EINT_INVALID_INDEX, retaddr); } /*disable eint interrupt*/ eint_set_irqen(eintno, EINT_DISABLE); /*register LISR*/ /*dispatch for dedicated eint*/ if (eint_is_dedicated & (1<<eintno)) { switch(eint_is_dedicated_map[eintno]) { case DEDICATED_EINT0: { eint_set_l1_eint_enable(DEDICATED_EINT0, EINT_DISABLE); IRQ_Register_LISR(DEDICATED_EINT_IRQ0, DEINT0_LISR, "DEINT0 handler"); } break; case DEDICATED_EINT1: { eint_set_l1_eint_enable(DEDICATED_EINT1, EINT_DISABLE); IRQ_Register_LISR(DEDICATED_EINT_IRQ1, DEINT1_LISR, "DEINT1 handler"); } break; case DEDICATED_EINT2: { eint_set_l1_eint_enable(DEDICATED_EINT2, EINT_DISABLE); IRQ_Register_LISR(DEDICATED_EINT_IRQ2, DEINT2_LISR, "DEINT2 handler"); } break; case DEDICATED_EINT3: { eint_set_l1_eint_enable(DEDICATED_EINT3, EINT_DISABLE); IRQ_Register_LISR(DEDICATED_EINT_IRQ3, DEINT3_LISR, "DEINT3 handler"); } break; default: break; } } else { IRQ_Register_LISR(IRQ_EIT_CODE, EINT_LISR, "EINT handler"); } /* Save and set MCU's I,F bits to disable interrupts */ // savedMask = LockIRQ(); /* Set external interrupt polarity */ EINT_Set_Polarity(eintno,ACT_Polarity); #if !defined(MT6290) gpio_set_eint_src(eintno,eint_src_map[eintno]); #endif if (Dbounce_En) { //eint_set_debounce_duration(eintno,EINT_DB_DUR_DEFAULT); eint_set_debounce_enable(eintno,EINT_ENABLE); } else { /*disable debounce */ eint_set_debounce_enable(eintno,EINT_DISABLE); } /* Save and set MCU's I,F bits to disable interrupts */ savedMask = SaveAndSetIRQMask(); /* Register external interrupt's HISR */ EINT_FUNC.eint_func[eintno] = reg_hisr; EINT_FUNC.eint_active[eintno] = KAL_FALSE; EINT_FUNC.eint_auto_umask[eintno] = auto_umask; if (eint_is_dedicated & (1<<eintno)) { /* register HISR */ DRV_Register_HISR(DRV_DEINT_HISR_ID, DEINT_HISR_Entry); EINT_L2_ACK(eintno); //EINT_UnMask(eintno); RestoreIRQMask(savedMask); } else { /* register HISR */ DRV_Register_HISR(DRV_EINT_HISR_ID, EINT_HISR_Entry); EINT_L2_ACK(eintno); //EINT_UnMask(eintno); IRQSensitivity( IRQ_EIT_CODE, LEVEL_SENSITIVE ); /* Enable external interrupt */ IRQUnmask( IRQ_EIT_CODE ); RestoreIRQMask(savedMask); } }
/************************************************************************* * FUNCTION * IRQ_Default_LISR * * DESCRIPTION * This function implement default IRQ' LISR * * CALLS * * CALL BY * IRQ_LISR_Init() * * PARAMETERS * * RETURNS * *************************************************************************/ void IRQ_Default_LISR(void) { kal_fatal_error_handler(KAL_ERROR_NON_REGISTERED_LISR, (kal_uint32)processing_irqx); }