a5: A5 suspend/resume for new sdk [1/2]

PD#SWPL-77633

Problem:
A5 suspend/resume for new sdk.

Solution:
Modify code.

Verify:
a5_av409

Change-Id: Ib7b2c468626e69424eaee9b03ff3b77dc164d141
Signed-off-by: Jianyi Shi <jianyi.shi@amlogic.com>
diff --git a/a5/clk.c b/a5/clk.c
index d51b116..5b2f978 100644
--- a/a5/clk.c
+++ b/a5/clk.c
@@ -9,6 +9,7 @@
 #include "register.h"
 #include "uart.h"
 #include <task.h>
+#include "soc.h"
 #include "timer_source.h"
 #include "clk.h"
 #include "clk_util.h"
@@ -327,6 +328,7 @@
 	REG32(CLKCTRL_OSCIN_CTRL) = oscin_ctrl_reg | (1<<31);
 	udelay(9000);
 
+	clear_dsp_wakeup_trigger();
 	/* switching tick timer (using osc_clk) */
 	alt_timebase(0);
 
diff --git a/a5/soc.h b/a5/soc.h
index b560e21..7dc0eb2 100644
--- a/a5/soc.h
+++ b/a5/soc.h
@@ -53,5 +53,6 @@
 #define SYSCTRL_TIMER		SYSCTRL_TIMERJ
 #define SYSTICK_TIMER_CTRL	SYSCTRL_TIMERJ_CTRL
 #define SYSTICK_TIMER_CTRL_PARM	(TIMER_MODE_IRQ_PERIO | TIMER_EN | TIMER_CLK_SEL_1US)
-
+#define DSP_FSM_TRIGER_CTRL		SYSCTRL_TIMERI_CTRL
+#define DSP_FSM_TRIGER_SRC		SYSCTRL_TIMERI
 #endif
diff --git a/a5/vad_suspend.h b/a5/vad_suspend.h
index 5f1dfc2..86b573a 100644
--- a/a5/vad_suspend.h
+++ b/a5/vad_suspend.h
@@ -15,13 +15,34 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
-
 #define VAD_TASK_PRI                      5
 #define DSP_VAD_WAKUP_ARM      0x5555AAAA
 #define WAIT_SWITCH_TO_24MHZ   0x5A5A5A5A
 #define WAIT_SWITCH_TO_RTC_PLL 0xA5A5A5A5
 #define WAKEUP_FROM_OTHER_KEY  0xA8A8A8A8
 
+/*use timerI to wakeup dsp FSM*/
+static inline void wakeup_dsp(void)
+{
+	uint32_t value;
+	//uint32_t time_out = 20;
+
+	/*set alarm timer*/
+	REG32(DSP_FSM_TRIGER_SRC) = 10;/*10us*/
+
+	value = REG32(DSP_FSM_TRIGER_CTRL);
+	value &= ~((1 << 7) | (0x3) | (1 << 6));
+	value |= ((1 << 7) | (0 << 6) | (0x3));
+	REG32(DSP_FSM_TRIGER_CTRL) = value;
+	vTaskDelay(1);
+}
+
+static inline void clear_dsp_wakeup_trigger(void)
+{
+	REG32(DSP_FSM_TRIGER_SRC) = 0;
+	REG32(DSP_FSM_TRIGER_CTRL) = 0;
+}
+
 #ifdef __cplusplus
 }
 #endif