/* SPDX-License-Identifier: GPL-2.0 */ /** Support for Intel Camera Imaging ISP subsystem. Copyright (c) 2010 - 2015, Intel Corporation. This program is free software; you can redistribute it and/or modify it under the terms and conditions of the GNU General Public License, version 2, as published by the Free Software Foundation. This program is distributed in the hope it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ #ifndef __IA_CSS_TIMER_H #define __IA_CSS_TIMER_H /* @file * Timer interface definitions */ #include <type_support.h> /* for uint32_t */ #include "ia_css_err.h" /* @brief timer reading definition */ typedef u32 clock_value_t; /* @brief 32 bit clock tick,(timestamp based on timer-value of CSS-internal timer)*/ struct ia_css_clock_tick { clock_value_t ticks; /** measured time in ticks.*/ }; /* @brief TIMER event codes */ enum ia_css_tm_event { IA_CSS_TM_EVENT_AFTER_INIT, /** Timer Event after Initialization */ IA_CSS_TM_EVENT_MAIN_END, /** Timer Event after end of Main */ IA_CSS_TM_EVENT_THREAD_START, /** Timer Event after thread start */ IA_CSS_TM_EVENT_FRAME_PROC_START, /** Timer Event after Frame Process Start */ IA_CSS_TM_EVENT_FRAME_PROC_END /** Timer Event after Frame Process End */ }; /* @brief code measurement common struct */ struct ia_css_time_meas { clock_value_t start_timer_value; /** measured time in ticks */ clock_value_t end_timer_value; /** measured time in ticks */ }; /**@brief SIZE_OF_IA_CSS_CLOCK_TICK_STRUCT checks to ensure correct alignment for struct ia_css_clock_tick. */ #define SIZE_OF_IA_CSS_CLOCK_TICK_STRUCT sizeof(clock_value_t) /* @brief checks to ensure correct alignment for ia_css_time_meas. */ #define SIZE_OF_IA_CSS_TIME_MEAS_STRUCT (sizeof(clock_value_t) \ + sizeof(clock_value_t)) /* @brief API to fetch timer count directly * * @param curr_ts [out] measured count value * @return 0 if success * */ int ia_css_timer_get_current_tick( struct ia_css_clock_tick *curr_ts); #endif /* __IA_CSS_TIMER_H */