diff chipsetsw/drivers/drv_core/inth/inth.h @ 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/inth.h	Mon Jun 01 03:24:05 2015 +0000
@@ -0,0 +1,259 @@
+/*******************************************************************************
+            TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION           
+                                                                             
+   Property of Texas Instruments -- For  Unrestricted  Internal  Use  Only 
+   Unauthorized reproduction and/or distribution is strictly prohibited.  This 
+   product  is  protected  under  copyright  law  and  trade  secret law as an 
+   unpublished work.  Created 1987, (C) Copyright 1997 Texas Instruments.  All 
+   rights reserved.                                                            
+                  
+                                                           
+   Filename       	: inth.h
+
+   Description    	: Header file for the INTH module
+
+   Project        	: drivers
+
+   Author         	: pmonteil@tif.ti.com  Patrice Monteil.
+
+   Version number   : 1.17
+
+   Date             : 09/02/03
+
+   Previous delta 	: 01/22/01 10:32:33
+
+   SCCS file      	: /db/gsm_asp/db_ht96/dsp_0/gsw/rel_0/mcu_l1/release_gprs/RELEASE_GPRS/drivers1/common/SCCS/s.inth.h
+
+   Sccs Id  (SID)       : '@(#) inth.h 1.10 01/30/01 10:22:23 '
+
+ 
+*****************************************************************************/
+
+#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
+
+/* Adress of the registers */
+
+#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9)|| (CHIPSET == 10) || (CHIPSET == 11))
+  #define INTH_IT_REG1    MEM_INTH_ADDR 		  /* INTH IT register 1 */
+  #define INTH_IT_REG2    (MEM_INTH_ADDR + 0x02)  /* INTH IT register 2 */
+  #define INTH_MASK_REG1  (MEM_INTH_ADDR + 0x08)  /* INTH mask register 1 */
+  #define INTH_MASK_REG2  (MEM_INTH_ADDR + 0x0a)  /* INTH mask register 2 */
+  #define INTH_B_IRQ_REG  (MEM_INTH_ADDR + 0x10)  /* INTH source binary IRQ reg. */
+  #define INTH_B_FIQ_REG  (MEM_INTH_ADDR + 0x12)  /* INTH source binary FIQ reg. */
+  #define INTH_CTRL_REG   (MEM_INTH_ADDR + 0x14)  /* INTH control register */
+  #define INTH_EXT_REG    (MEM_INTH_ADDR + 0x20)  /* INTH 1st external int. reg. */
+#else
+  #define INTH_IT_REG  	  MEM_INTH_ADDR 		  /* INTH IT register */
+  #define INTH_MASK_REG   (MEM_INTH_ADDR + 0x02)  /* INTH mask register */
+  #define INTH_S_IRQ_REG  (MEM_INTH_ADDR + 0x04)  /* INTH source IRQ register */
+  #define INTH_S_FIQ_REG  (MEM_INTH_ADDR + 0x06)  /* INTH source FIQ register */
+  #define INTH_B_IRQ_REG  (MEM_INTH_ADDR + 0x08)  /* INTH source binary IRQ reg. */
+  #define INTH_B_FIQ_REG  (MEM_INTH_ADDR + 0x0a)  /* INTH source binary FIQ reg. */
+  #define INTH_CTRL_REG   (MEM_INTH_ADDR + 0x0c)  /* INTH control register */
+  #define INTH_EXT_REG    (MEM_INTH_ADDR + 0x0e)  /* INTH 1st external int. reg. */
+#endif
+
+/* Interrupts number */
+
+#define INTH_TIMER	0			/* number of the TIMER int. */
+#define INTH_AIRQ_FIRST	1			/* first external int. number */
+#define INTH_AIRQ_LAST	13			/* last external int. number */
+#define INTH_DMA	14			/* number of the DMA int. */
+#define INTH_LEAD	15			/* number of the LEAD int. */
+
+/* Bit definition of INTH interrupt level registers */
+
+#define INTH_FIQ_NIRQ	0x0001
+#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
+  #define INTH_PRIORITY	  0x007c
+  #define INTH_EDGE_NLVL  0x0002
+#else
+  #define INTH_PRIORITY	0x001e
+  #define INTH_EDGE_NLVL	0x0020
+#endif
+
+
+/* Bit definition of INTH source binary registers */
+
+#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
+  #define INTH_SRC_NUM	0x001f
+#else
+  #define INTH_SRC_NUM	0x000f
+#endif
+
+
+/* Bit definition of INTH Control Register */
+
+#define INTH_NEW_IRQ_AGR	0x0001
+#define INTH_NEW_FIQ_AGR	0x0002
+
+/* Other useful constants */
+
+#define INTH_IRQ 0
+#define INTH_FIQ 1
+#define INTH_LEVEL 0
+#define INTH_EDGE 1
+
+/*
+ * Macros
+ */
+
+#define INT_MASK(interrupt) (1 << (interrupt - 1))
+#define PENDING_INT(pendingITs, interrupt) (pendingITs & INT_MASK(interrupt))
+
+/*--------------------------------------------------------------*/
+/*  INTH_ENABLEONEIT()						*/
+/*--------------------------------------------------------------*/
+/* Parameters : num of the IT to enable				*/
+/* Return     :	none						*/
+/* Functionality : Unmask one it				*/
+/*--------------------------------------------------------------*/
+#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
+  #define INTH_ENABLEONEIT(it)( \
+    (it < 16) ? (* (volatile unsigned short *) INTH_MASK_REG1 &= ~(1 << it)) : \
+                (* (volatile unsigned short *) INTH_MASK_REG2 &= ~(1 << (it-16))) \
+  )
+#else
+  #define INTH_ENABLEONEIT(it)(* (volatile unsigned short *) INTH_MASK_REG &= ~(1 << it))
+#endif
+
+/*--------------------------------------------------------------*/
+/*  INTH_DISABLEONEIT()						*/
+/*--------------------------------------------------------------*/
+/* Parameters : num of the IT to disable			*/
+/* Return     :	none						*/
+/* Functionality : mask one it					*/
+/*--------------------------------------------------------------*/
+#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
+  #define INTH_DISABLEONEIT(it)( \
+    (it < 16) ? (* (volatile unsigned short *) INTH_MASK_REG1 |= (1 << it)) : \
+                (* (volatile unsigned short *) INTH_MASK_REG2 |= (1 << (it-16))) \
+  )
+#else
+  #define INTH_DISABLEONEIT(it)(* (volatile unsigned short *) INTH_MASK_REG |= (1 << it))
+#endif
+
+/*--------------------------------------------------------------*/
+/*  INTH_ENABLEALLIT()						*/
+/*--------------------------------------------------------------*/
+/* Parameters : none						*/
+/* Return     :	none						*/
+/* Functionality : Enable all it				*/
+/*--------------------------------------------------------------*/
+
+#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
+  #define INTH_ENABLEALLIT { \
+    * (volatile unsigned short *) INTH_MASK_REG1 = 0x0000; \
+    * (volatile unsigned short *) INTH_MASK_REG2 = 0x0000; \
+  }
+#else
+  #define INTH_ENABLEALLIT ( * (volatile unsigned short *) INTH_MASK_REG = 0x0000)
+#endif
+
+/*--------------------------------------------------------------*/
+/*  INTH_DISABLEALLIT()						*/
+/*--------------------------------------------------------------*/
+/* Parameters : none						*/
+/* Return     :	none						*/
+/* Functionality :mask all it					*/
+/*--------------------------------------------------------------*/
+
+#if (CHIPSET == 4)
+  #define INTH_DISABLEALLIT { \
+  * (volatile unsigned short *) INTH_MASK_REG1 = 0xffff; \
+  * (volatile unsigned short *) INTH_MASK_REG2 = 0x000f; \
+  }
+#elif ((CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 9))
+  #define INTH_DISABLEALLIT { \
+  * (volatile unsigned short *) INTH_MASK_REG1 = 0xffff; \
+  * (volatile unsigned short *) INTH_MASK_REG2 = 0x01ff; \
+  }
+#elif (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11)
+  #define INTH_DISABLEALLIT { \
+  * (volatile unsigned short *) INTH_MASK_REG1 = 0xffff; \
+  * (volatile unsigned short *) INTH_MASK_REG2 = 0xffff; \
+  }
+#else
+  #define INTH_DISABLEALLIT (* (volatile unsigned short *) INTH_MASK_REG = 0xffff)
+#endif
+
+
+/*--------------------------------------------------------------*/
+/*  INTH_CLEAR()						*/
+/*--------------------------------------------------------------*/
+/* Parameters : value to write                		        */
+/* Return     :	none						*/
+/* Functionality :valid next it					*/
+/*--------------------------------------------------------------*/
+
+
+#define INTH_CLEAR (* (volatile SYS_UWORD16 *) INTH_CTRL_REG = 0x0003)
+
+
+/*--------------------------------------------------------------*/
+/*  INTH_VALIDNEXT()						*/
+/*--------------------------------------------------------------*/
+/* Parameters : num of the processed it				*/
+/* Return     :	none						*/
+/* Functionality :valid next it					*/
+/*--------------------------------------------------------------*/
+
+#define INTH_VALIDNEXT (intARM)( * (volatile SYS_UWORD16 *) INTH_CTRL_REG |= (1 << intARM))
+
+#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
+  /*--------------------------------------------------------------*/
+  /*  INTH_RESETALLIT()                                           */
+  /*--------------------------------------------------------------*/
+  /* Parameters :  None                                            */
+  /* Return     :  None                                           */
+  /* Functionality :Reset the inth it register                    */
+  /*--------------------------------------------------------------*/
+
+  #define INTH_RESETALLIT { \
+   * (volatile unsigned short *) INTH_IT_REG1 &= 0x0000; \
+   * (volatile unsigned short *) INTH_IT_REG2 &= 0x0000; \
+  }  
+#endif
+
+
+#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
+  /*-------------------------------------------------------------*/
+  /*   INTH_RESETONEIT()                                         */
+  /*-------------------------------------------------------------*/
+  /* Parameters : Num of the IT to reset                         */
+  /* Return     : None                                           */
+  /* Functionality : Reset one IT of the inth IT register        */
+  /*-------------------------------------------------------------*/    
+  #define INTH_RESETONEIT(it) ( \
+    (it<16) ? (* (volatile unsigned short *) INTH_IT_REG1 &= ~(1 << it)) : \
+              (* (volatile unsigned short *) INTH_IT_REG2 &= ~(1 << (it-16))) \
+			       )
+#else  // CHIPSET == 2,3
+  #define INTH_RESETONEIT(it) (* (volatile unsigned short *) INTH_IT_REG &= ~(1 << it))
+#endif // CHIPSET
+
+/* Prototypes */
+
+#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11))
+  unsigned long INTH_GetPending (void);
+  unsigned long INTH_ResetIT (void);
+#else
+  unsigned short INTH_GetPending (void);
+  unsigned short INTH_ResetIT (void);
+#endif
+
+unsigned short INTH_Ack (int);
+void INTH_InitLevel (int, int, int, int);
+
+
+#endif /* endif chipset != 12 */
+