FreeCalypso > hg > leo2moko-debug
diff chipsetsw/drivers/drv_core/inth/sys_inth32.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/chipsetsw/drivers/drv_core/inth/sys_inth32.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,269 @@ +/* @(#) nom : sys_inth32.c SID: 1.2 date : 05/23/03 */ +/* Filename: sys_inth32.c */ +/* Version: 1.2 */ +/****************************************************************************** + * WIRELESS COMMUNICATION SYSTEM DEVELOPMENT + * + * (C) 2002 Texas Instruments France. All rights reserved + * + * Author : Francois AMAND + * + * + * Important Note + * -------------- + * + * This S/W is a preliminary version. It contains information on a product + * under development and is issued for evaluation purposes only. Features + * characteristics, data and other information are subject to change. + * + * The S/W is furnished under Non Disclosure Agreement and may be used or + * copied only in accordance with the terms of the agreement. It is an offence + * to copy the software in any way except as specifically set out in the + * agreement. No part of this document may be reproduced or transmitted in any + * form or by any means, electronic or mechanical, including photocopying and + * recording, for any purpose without the express written permission of Texas + * Instruments Inc. + * + ****************************************************************************** + * + * FILE NAME: sys_inth32.c + * + * + * PURPOSE: Interrupt Handler driver compiled in 32-bits mode. + * + * + * FILE REFERENCES: + * + * Name IO Description + * ------------- -- --------------------------------------------- + * + * + * + * EXTERNAL VARIABLES: + * + * Source: + * + * Name Type IO Description + * ------------- --------------- -- ------------------------------ + * + * + * + * EXTERNAL REFERENCES: + * + * Name Description + * ------------------ ------------------------------------------------------- + * + * + * + * ABNORMAL TERMINATION CONDITIONS, ERROR AND WARNING MESSAGES: + * + * + * + * ASSUMPTION, CONSTRAINTS, RESTRICTIONS: + * + * + * + * NOTES: + * + * + * + * REQUIREMENTS/FUNCTIONAL SPECIFICATION REFERENCES: + * + * + * + * + * DEVELOPMENT HISTORY: + * + * Date Name(s) Version Description + * ----------- -------------- ------- ------------------------------------- + * 11-Oct-2002 Francois AMAND 0.0.1 First implementation + * + * ALGORITHM: + * + * + *****************************************************************************/ + +#include "l1sw.cfg" +#include "chipset.cfg" + +#if (CHIPSET == 12) +#if (OP_L1_STANDALONE == 0) + #include "main/sys_types.h" +#else + #include "sys_types.h" +#endif +#include "sys_map.h" +#include "sys_inth.h" + + /* GLOBAL CONSTANT VARIABLES: + * + * Variables Type Description + * --------------- ------- ----------------------------------------------- + * + */ + void f_inth_dummy(void); + + + /* GLOBAL CONSTANT VARIABLES: + * + * Variables Type Description + * --------------- ------- ----------------------------------------------- + * + */ + + + + + /* GLOBAL VARIABLES: + * + * Variables Type Description + * -------------------- ----------- -------------------------------------- + * a_inth_it_handlers SYS_FUNC ** Indirect function address for IRQ and + * FIQ on main interrupt handler. + * a_inth2_irq_handlers SYS_FUNC * Indirect function address for IRQ on + * 2nd level interrupt handler. + * d_inth_dummy SYS_UWORD32 Count the number of unwanted interrupts + */ + + SYS_FUNC a_inth_it_handlers[C_INTH_NUM_INT][2] = + { // IRQ FIQ + { f_inth_dummy, f_inth_dummy }, // 0 : WATCHDOG TIMER + { f_inth_dummy, f_inth_dummy }, // 1 : TIMER 1 + { f_inth_dummy, f_inth_dummy }, // 2 : TIMER 2 + { f_inth_dummy, f_inth_dummy }, // 3 : TSP RECEIVE + { f_inth_dummy, f_inth_dummy }, // 4 : TPU FRAME + { f_inth_dummy, f_inth_dummy }, // 5 : TPU PAGE + { f_inth_dummy, f_inth_dummy }, // 6 : SIM + { f_inth_dummy, f_inth_dummy }, // 7 : UART_MODEM1 + { f_inth_dummy, f_inth_dummy }, // 8 : KEYBOARD + { f_inth_dummy, f_inth_dummy }, // 9 : RTC_TIMER + { f_inth_dummy, f_inth_dummy }, // 10 : RTC_ALARM + { f_inth_dummy, f_inth_dummy }, // 11 : ULPD_GAUGING + { f_inth_dummy, f_inth_dummy }, // 12 : ABB_IRQ + { f_inth_dummy, f_inth_dummy }, // 13 : SPI + { f_inth_dummy, f_inth_dummy }, // 14 : DMA + { f_inth_dummy, f_inth_dummy }, // 15 : API + { f_inth_dummy, f_inth_dummy }, // 16 : GPIO + { f_inth_dummy, f_inth_dummy }, // 17 : ABB_FIQ + { f_inth_dummy, f_inth_dummy }, // 18 : UART_IRDA + { f_inth_dummy, f_inth_dummy }, // 19 : ULPD GSM TIMER + { f_inth_dummy, f_inth_dummy }, // 20 : GEA + { f_inth_dummy, f_inth_dummy }, // 21 : EXTERNAL IRQ 1 + { f_inth_dummy, f_inth_dummy }, // 22 : EXTERNAL IRQ 2 + { f_inth_dummy, f_inth_dummy }, // 23 : USIM Card Detect + { f_inth_dummy, f_inth_dummy }, // 24 : USIM + { f_inth_dummy, f_inth_dummy }, // 25 : LCD + { f_inth_dummy, f_inth_dummy }, // 26 : USB + { f_inth_dummy, f_inth_dummy }, // 27 : MMC/SD/MS + { f_inth_dummy, f_inth_dummy }, // 28 : UART_MODEM2 + { f_inth_2nd_level_handler, f_inth_dummy }, // 29 : 2nd Interrupt Handler + { f_inth_dummy, f_inth_dummy }, // 30 : I2C + { f_inth_dummy, f_inth_dummy } // 31 : NAND FLASH + }; + + SYS_FUNC a_inth2_irq_handlers[C_INTH_2ND_NUM_INT] = + { + f_inth_dummy, // 0 : RNG + f_inth_dummy, // 1 : SHA1/MD5 + f_inth_dummy, // 2 : EMPU + f_inth_dummy, // 3 : Secure DMA + f_inth_dummy // 4 : Secure TIMER + }; + + SYS_UWORD32 d_inth_dummy = 0L; + + + /****************************************************************************** + * + * FUNCTION NAME: f_inth_dummy + * Handle dummy interrupts. Call of this function should never occurs + * + * + * ARGUMENT LIST: + * + * Argument Type IO Description + * ------------ ------------------- -- --------------------------------- + * chip-select. + * + * RETURN VALUE: None + * + *****************************************************************************/ + + void f_inth_dummy(void) { + d_inth_dummy++; + } /* f_inth_dummy() */ + + + + /****************************************************************************** + * + * FUNCTION NAME: f_inth_irq_handler + * Entry point of ARM IRQ sub-routine. + * + * + * ARGUMENT LIST: + * + * Argument Type IO Description + * ------------ ------------------- -- --------------------------------- + * + * RETURN VALUE: None + * + *****************************************************************************/ + + void f_inth_irq_handler(void) { + + a_inth_it_handlers[F_INTH_GET_IRQ][C_INTH_IRQ](); /* ACK IT */ + F_INTH_VALID_NEXT(C_INTH_IRQ); /* valid next IRQ */ + + } /* f_inth_irq_handler() */ + + + + /****************************************************************************** + * + * FUNCTION NAME: f_inth_fiq_handler + * Entry point of ARM FIQ sub-routine. + * + * + * ARGUMENT LIST: + * + * Argument Type IO Description + * ------------ ------------------- -- --------------------------------- + * + * RETURN VALUE: None + * + *****************************************************************************/ + + void f_inth_fiq_handler(void) { + + a_inth_it_handlers[F_INTH_GET_FIQ][C_INTH_FIQ](); /* ACK IT */ + F_INTH_VALID_NEXT(C_INTH_FIQ); /* valid next FIQ */ + + } /* f_inth_fiq_handler() */ + + + + /****************************************************************************** + * + * FUNCTION NAME: f_inth_2nd_level_handler + * Sub-routine to manage 2nd level interrupt handler. + * + * + * ARGUMENT LIST: + * + * Argument Type IO Description + * ------------ ------------------- -- --------------------------------- + * + * RETURN VALUE: None + * + *****************************************************************************/ + + void f_inth_2nd_level_handler(void) { + + a_inth2_irq_handlers[F_INTH2_GET_IRQ](); /* ACK IT */ + F_INTH2_VALID_NEXT(C_INTH_IRQ); /* Valid next IRQ */ + + } /* f_inth_2nd_level_handler() */ + + +#endif /* (CHIPSET == 12) */