[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/cp/ps/plat/inc/oss/oss_irq.h b/cp/ps/plat/inc/oss/oss_irq.h
new file mode 100644
index 0000000..5314d39
--- /dev/null
+++ b/cp/ps/plat/inc/oss/oss_irq.h
@@ -0,0 +1,292 @@
+/**************************************************************************

+*

+*                  Copyright (c) 2012 ZTE Corporation.

+*

+***************************************************************************

+* Ä£ ¿é Ãû : P98C_OSS

+* ÎÄ ¼þ Ãû : oss_irq.h

+* Ïà¹ØÎļþ : 

+* ʵÏÖ¹¦ÄÜ : ÖжÏÇëÇóÄ£¿é

+* ×÷    Õß : chenxingfang

+* °æ    ±¾ : V1.0

+* Íê³ÉÈÕÆÚ : 2012-08-10

+* ÆäËü˵Ã÷ : 

+**************************************************************************/

+

+/**************************************************************************

+* Ð޸ļǼ

+**************************************************************************/

+#ifndef _OSS_IRQ_H

+#define _OSS_IRQ_H

+

+/**************************************************************************

+* #includeÇø

+**************************************************************************/

+#ifdef _OS_LINUX

+#include <linux/irqflags.h>

+#endif

+

+#ifdef __cplusplus

+extern "C"

+{

+#endif

+

+/**************************************************************************

+* ³£Á¿¶¨ÒåÇø

+**************************************************************************/

+#ifdef _OS_TOS

+extern long tos_irq_level;

+extern long tos_isr_level;

+extern long tos_dsr_level;

+#endif

+

+#if defined _OS_TOS    

+#define TOS_STATISTIC_IRQ

+    

+#define TOS_TRACE_IRQ

+    

+#define TOS_DISABLE_IRQ()                               \

+        {                                               \

+            CYG_INTERRUPT_STATE old_intr;               \

+                                                        \

+            HAL_DISABLE_INTERRUPTS(old_intr);

+    

+#define TOS_ENABLE_IRQ()                                \

+            HAL_RESTORE_INTERRUPTS(old_intr);           \

+        }

+    

+/* TOS 3.0²Ù×÷ϵͳµÄȥʹÄÜ¡¢Ê¹ÄÜ¡¢±£´æ¡¢»Ö¸´ÖжϷ½°¸ */

+#define TOS_DISABLE_IRQ_FAST()      HAL_DISABLE_INTERRUPTS(old_intr)

+#define TOS_ENABLE_IRQ_FAST()       HAL_RESTORE_INTERRUPTS(old_intr)

+#define TOS_SAVE_IRQ(old_intr)      HAL_DISABLE_INTERRUPTS(old_intr)

+#define TOS_RESTORE_IRQ(old_intr)   HAL_RESTORE_INTERRUPTS(old_intr)

+#define TOS_QUERY_IRQ(old_intr)     HAL_QUERY_INTERRUPTS(old_intr)

+    

+/* Ö§³ÅµÄȥʹÄÜ¡¢Ê¹ÄÜ¡¢±£´æ¡¢»Ö¸´ÖжϷ½°¸£¬ÐèÒªÕë¶Ô²»Í¬µÄ²Ù×÷ϵͳƽ̨½øÐÐÒÆÖ² */

+#define ZOSS_INTR                   CYG_INTERRUPT_STATE

+#define ZOSS_DISABLE_IRQ()          TOS_DISABLE_IRQ()

+#define ZOSS_ENABLE_IRQ()           TOS_ENABLE_IRQ()

+#define ZOSS_DISABLE_IRQ_FAST()     TOS_DISABLE_IRQ_FAST()

+#define ZOSS_ENABLE_IRQ_FAST()      TOS_ENABLE_IRQ_FAST()

+#define ZOSS_SAVE_IRQ(old_intr)     TOS_SAVE_IRQ(old_intr)

+#define ZOSS_RESTORE_IRQ(old_intr)  TOS_RESTORE_IRQ(old_intr)

+#define ZOSS_QUERY_IRQ(old_intr)    TOS_QUERY_IRQ(old_intr)

+    

+/* ÊÊÅäÔ­ÓдúÂëÖеÄȥʹÄÜ¡¢Ê¹ÄÜ¡¢±£´æ¡¢»Ö¸´ÖжϷ½°¸ */

+#define LOCK_SAVE(old_intr)         ZOSS_SAVE_IRQ(old_intr)

+#define LOCK_RESTORE(old_intr)      ZOSS_RESTORE_IRQ(old_intr)

+#elif defined _OS_OSE

+#define ZOSS_INTR   unsigned long

+    

+#define ZOSS_DISABLE_IRQ()              \

+        {                               \

+            unsigned long msr;          \

+            LOCK_SAVE(msr);

+     

+#define ZOSS_ENABLE_IRQ()               \

+            LOCK_RESTORE(msr);          \

+        }      

+    

+#define ZOSS_DISABLE_IRQ_FAST()     LOCK_SAVE(old_intr)

+#define ZOSS_ENABLE_IRQ_FAST()      LOCK_RESTORE(old_intr)

+    

+#define ZOSS_SAVE_IRQ(old_intr)     LOCK_SAVE(old_intr)

+#define ZOSS_RESTORE_IRQ(old_intr)  LOCK_RESTORE(old_intr)

+#elif defined _OS_LINUX

+#define LINUX_STATISTIC_IRQ

+#define LINUX_TRACE_IRQ

+#define LINUX_DISABLE_IRQ()                             \

+        {                                               \

+            unsigned long flags;                        \

+                                                        \

+            local_irq_save(flags);

+    

+#define LINUX_ENABLE_IRQ()                              \

+            local_irq_restore(flags);                   \

+        }

+

+/* LINUX ²Ù×÷ϵͳµÄȥʹÄÜ¡¢Ê¹ÄÜ¡¢±£´æ¡¢»Ö¸´ÖжϷ½°¸ */

+#define LINUX_DISABLE_IRQ_FAST()    local_irq_save(old_intr)

+#define LINUX_ENABLE_IRQ_FAST()     local_irq_restore(old_intr)

+#define LINUX_SAVE_IRQ(old_intr)    local_irq_save(old_intr)

+#define LINUX_RESTORE_IRQ(old_intr) local_irq_restore(old_intr)

+#define LINUX_QUERY_IRQ(old_intr)   local_save_flags(old_intr)

+

+/* Ö§³ÅµÄȥʹÄÜ¡¢Ê¹ÄÜ¡¢±£´æ¡¢»Ö¸´ÖжϷ½°¸£¬ÐèÒªÕë¶Ô²»Í¬µÄ²Ù×÷ϵͳƽ̨½øÐÐÒÆÖ² */

+#define ZOSS_INTR                   unsigned long

+#define ZOSS_DISABLE_IRQ()          LINUX_DISABLE_IRQ()

+#define ZOSS_ENABLE_IRQ()           LINUX_ENABLE_IRQ()

+#define ZOSS_DISABLE_IRQ_FAST()     LINUX_DISABLE_IRQ_FAST()

+#define ZOSS_ENABLE_IRQ_FAST()      LINUX_ENABLE_IRQ_FAST()

+#define ZOSS_SAVE_IRQ(old_intr)     LINUX_SAVE_IRQ(old_intr)

+#define ZOSS_RESTORE_IRQ(old_intr)  LINUX_RESTORE_IRQ(old_intr)

+#define ZOSS_QUERY_IRQ(old_intr)    LINUX_QUERY_IRQ(old_intr)

+    

+/* ÊÊÅäÔ­ÓдúÂëÖеÄȥʹÄÜ¡¢Ê¹ÄÜ¡¢±£´æ¡¢»Ö¸´ÖжϷ½°¸ */

+#define LOCK_SAVE(old_intr)         ZOSS_SAVE_IRQ(old_intr)

+#define LOCK_RESTORE(old_intr)      ZOSS_RESTORE_IRQ(old_intr)

+#endif

+

+#define zDrv_DisableIrq()           ZOSS_DISABLE_IRQ()

+#define zDrv_EnableIrq()            ZOSS_ENABLE_IRQ()

+

+/**************************************************************************

+* Êý¾Ý½á¹¹¶¨ÒåÇø

+**************************************************************************/

+#ifdef _OS_TOS

+typedef UINT32 tos_isr_t(UINT32 vector, UINT32 data);

+typedef VOID tos_dsr_t(UINT32 vector, UINT32 count, UINT32 data);

+#elif defined _OS_LINUX

+typedef UINT32 linux_isr_t(UINT32 vector, UINT32 data);

+typedef VOID linux_dsr_t(UINT32 vector, UINT32 count, UINT32 data);

+#endif

+

+/**************************************************************************

+* º¯ÊýÉùÃ÷Çø

+**************************************************************************/

+#ifdef _OS_TOS

+UINT32 tos_default_isr( UINT32 vector, UINT32 data);

+#ifdef _USE_OSS_MIN

+UINT32 tos_create_irq(UINT32 vector, UINT32 priority, UINT32 data, tos_isr_t isr, tos_dsr_t dsr, cyg_interrupt *interrupt); 

+#else

+UINT32 tos_create_irq(UINT32 vector, UINT32 priority, UINT32 data, tos_isr_t isr, tos_dsr_t dsr); 

+#endif

+void tos_delete_irq(UINT32 interrupt_handle);

+    

+#ifdef TOS_STATISTIC_IRQ

+void tos_statistic_irq_open(void);

+void tos_statistic_irq_close(void);

+void tos_statistic_irq_assert(void);

+void tos_statistic_irq_thread_start(void);

+void tos_statistic_irq_thread_end(void);

+#endif

+    

+#ifdef TOS_TRACE_IRQ

+void tos_trace_irq_open(void);

+void tos_trace_irq_close(void);

+void tos_trace_irq_assert(void);

+#endif

+    

+static inline SINT32 tos_get_irq_nesting_level(VOID)

+{

+    return tos_irq_level;

+}

+

+static inline SINT32 tos_get_isr_nesting_level(VOID)

+{

+    return tos_isr_level;

+}

+

+static inline SINT32 tos_get_dsr_nesting_level(VOID)

+{

+    return tos_dsr_level;

+}

+

+#ifdef _USE_OSS_MIN

+static inline UINT32 tos_create_isr(UINT32 vector,           /* ÖжÏÏòÁ¿         */

+                                     UINT32 priority,           /* ÖжÏÓÅÏȼ¶       */

+                                     UINT32 data,               /* Êý¾ÝÖ¸Õë         */

+                                     tos_isr_t isr,             /* ÖжϷþÎñÀý³Ì     */

+                                     cyg_interrupt *interrupt)  /* ÖжϽṹÌåÖ¸Õë   */

+{

+    return tos_create_irq(vector,       /* ÖжÏÏòÁ¿         */

+                           priority,    /* ÖжÏÓÅÏȼ¶       */

+                           data,        /* Êý¾ÝÖ¸Õë         */

+                           isr,         /* ÖжϷþÎñÀý³Ì     */

+                           NULL,        /* ÖжÏÑÓ³Ù·þÎñÀý³Ì */

+                           interrupt);  /* ÖжϽṹÌåÖ¸Õë   */

+}

+

+static inline UINT32 tos_create_dsr(UINT32 vector,          /* ÖжÏÏòÁ¿         */

+                                     UINT32 priority,           /* ÖжÏÓÅÏȼ¶       */

+                                     UINT32 data,               /* Êý¾ÝÖ¸Õë         */

+                                     tos_dsr_t dsr,             /* ÖжϷþÎñÀý³Ì     */

+                                     cyg_interrupt *interrupt)  /* ÖжϽṹÌåÖ¸Õë   */

+{

+    return tos_create_irq(vector,           /* ÖжÏÏòÁ¿         */

+                           priority,        /* ÖжÏÓÅÏȼ¶       */

+                           data,            /* Êý¾ÝÖ¸Õë         */

+                           tos_default_isr, /* ÖжϷþÎñÀý³Ì     */

+                           dsr,             /* ÖжÏÑÓ³Ù·þÎñÀý³Ì */

+                           interrupt);      /* ÖжϽṹÌåÖ¸Õë   */

+}

+#else

+static inline UINT32 tos_create_isr(UINT32 vector,      /* ÖжÏÏòÁ¿     */

+                                    UINT32 priority,    /* ÖжÏÓÅÏȼ¶   */

+                                    UINT32 data,        /* Êý¾ÝÖ¸Õë     */

+                                    tos_isr_t isr)      /* ÖжϷþÎñÀý³Ì */

+{

+    return tos_create_irq(vector, 

+                          priority, 

+                          data, 

+                          isr, 

+                          NULL);                        /* ÖжϷþÎñÀý³Ì */

+}

+

+static inline UINT32 tos_create_dsr(UINT32 vector,      /* ÖжÏÏòÁ¿     */

+                                    UINT32 priority,    /* ÖжÏÓÅÏȼ¶   */

+                                    UINT32 data,        /* Êý¾ÝÖ¸Õë     */

+                                    tos_dsr_t dsr)      /* ÖжϷþÎñÀý³Ì */

+{

+    return tos_create_irq(vector, 

+                          priority, 

+                          data, 

+                          tos_default_isr,              /* ÖжϷþÎñÀý³Ì */

+                          dsr);  

+}

+#endif

+

+static inline VOID tos_delete_isr(UINT32 interrupt_handle)

+{

+    tos_delete_irq(interrupt_handle);

+}

+

+static inline VOID tos_delete_dsr(UINT32 interrupt_handle)

+{

+    tos_delete_irq(interrupt_handle);

+}

+#elif defined _OS_LINUX

+UINT32 linux_default_isr( UINT32 vector, UINT32 data);

+

+UINT32 linux_create_irq(UINT32 vector, UINT32 priority, UINT32 data, linux_isr_t isr, linux_dsr_t dsr); 

+

+void linux_delete_irq(UINT32 interrupt_handle);

+

+static inline UINT32 linux_create_isr(UINT32 vector,      /* ÖжÏÏòÁ¿     */

+                                    UINT32 priority,    /* ÖжÏÓÅÏȼ¶   */

+                                    UINT32 data,        /* Êý¾ÝÖ¸Õë     */

+                                    linux_isr_t isr)      /* ÖжϷþÎñÀý³Ì */

+{

+    return 0x00;

+}

+

+static inline UINT32 linux_create_dsr(UINT32 vector,      /* ÖжÏÏòÁ¿     */

+                                    UINT32 priority,    /* ÖжÏÓÅÏȼ¶   */

+                                    UINT32 data,        /* Êý¾ÝÖ¸Õë     */

+                                    linux_dsr_t dsr)      /* ÖжϷþÎñÀý³Ì */

+{

+    return 0x00;

+}

+

+static inline VOID linux_delete_isr(UINT32 interrupt_handle)

+{

+    linux_delete_irq(interrupt_handle);

+}

+

+static inline VOID linux_delete_dsr(UINT32 interrupt_handle)

+{

+    linux_delete_irq(interrupt_handle);

+}

+#endif

+

+/**************************************************************************

+* È«¾Ö±äÁ¿ÉùÃ÷Çø

+**************************************************************************/

+

+#ifdef __cplusplus

+}

+#endif

+

+#endif  /* _OSS_IRQ_H */

+

+