diff options
Diffstat (limited to 'drivers/staging/media/atomisp/pci/ia_css_timer.h')
-rw-r--r-- | drivers/staging/media/atomisp/pci/ia_css_timer.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/drivers/staging/media/atomisp/pci/ia_css_timer.h b/drivers/staging/media/atomisp/pci/ia_css_timer.h new file mode 100644 index 0000000000..c78fbda907 --- /dev/null +++ b/drivers/staging/media/atomisp/pci/ia_css_timer.h @@ -0,0 +1,69 @@ +/* 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 */ |