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