[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 */
+
+