1 /*
2  * @ : Copyright (c) 2021 Phytium Information Technology, Inc.
3  *
4  * SPDX-License-Identifier: Apache-2.0.
5  *
6  * @Date: 2021-04-07 09:53:07
7  * @LastEditTime: 2021-04-07 15:27:27
8  * @Description:  This files is for generic timer functions
9  *
10  * @Modify History:
11  *  Ver   Who        Date         Changes
12  * ----- ------     --------    --------------------------------------
13  */
14 
15 #ifndef FT_GENERIC_TIMER_H
16 #define FT_GENERIC_TIMER_H
17 
18 #include "ft_types.h"
19 
20 /* GenericTimer  */
21 
22 #define ARMV7_GEN_TIMER_NAME "armv7GenTimer"
23 #define ARMV7_GEN_TIMER_MAX_COUNT 0x7fffffff
24 #define ARMV7_GEN_TIMER_DEFAULT_TPS 60
25 #define ARMV7_GEN_TIMER_DEFAULT_MIN_FREQ 10
26 #define ARMV7_GEN_TIMER_DEFAULT_MAX_FREQ 5000
27 #define ARMV7_GEN_TIMER_MAX_CLK_FREQ 50000000
28 #define ARMV7_GEN_TIMER_MIN_CLK_FREQ 1000000
29 
30 #define GEN_TIMER_REG_CTL 0  //<! Control register for the Hyp mode physical timer.
31 #define GEN_TIMER_REG_TVAL 1 //<! Holds the timer value for the Hyp mode physical timer.
32 
33 #define GEN_TIMER_CTRL_ENABLE (1 << 0)
34 #define GEN_TIMER_CTRL_IMASK (1 << 1)
35 #define GEN_TIMER_CTRL_ISTATUS (1 << 2)
36 
37 #define GEN_TIMER_SECURE_PHY_PPI (0)
38 #define GEN_TIMER_NON_SECURE_PHY_PPI (1)
39 #define GEN_TIMER_VIRTURE_PPI (2)
40 #define GEN_TIMER_HYP_PPI (3)
41 #define GEN_TIMER_MAX_PPI (4)
42 
43 #define GEN_TIMER_VIRTUAL_IRQN 27 /**<  Virtual Timer Interrupt */
44 #define GEN_TIMER_VIRTUAL_NOSECURE_IRQN 28
45 #define GEN_TIMER_PHYSICAL_IRQn 29
46 #define GEN_TIMER_PHYSICAL_NOSECURE_IRQN 30 /**< Secure Physical Timer Interrupt */
47 
48 typedef void (*Ft_GenericTimer_Isr_Callback)(void *args);
49 
50 void Ft_GenericTimer_Init(FT_IN u8 UseVirtual, FT_IN Ft_GenericTimer_Isr_Callback Callback);
51 int32_t Ft_GenericTimer_IsrSet(FT_IN u32 HzRate, FT_IN u32 Cmd);
52 void Ft_GenericTimer_IrqHandler(void *param);
53 int32_t Ft_GenericTimer_UsDelay(FT_IN u32 DelayUs);
54 u32 Ft_GenericTimer_GetTick(void);
55 u32 Ft_GenericTimer_Msec(void);
56 
57 #endif // !
58