1f5fbb83fSMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0 */ 29d4fa1a1SMauro Carvalho Chehab /** 39d4fa1a1SMauro Carvalho Chehab Support for Intel Camera Imaging ISP subsystem. 49d4fa1a1SMauro Carvalho Chehab Copyright (c) 2010 - 2015, Intel Corporation. 59d4fa1a1SMauro Carvalho Chehab 69d4fa1a1SMauro Carvalho Chehab This program is free software; you can redistribute it and/or modify it 79d4fa1a1SMauro Carvalho Chehab under the terms and conditions of the GNU General Public License, 89d4fa1a1SMauro Carvalho Chehab version 2, as published by the Free Software Foundation. 99d4fa1a1SMauro Carvalho Chehab 109d4fa1a1SMauro Carvalho Chehab This program is distributed in the hope it will be useful, but WITHOUT 119d4fa1a1SMauro Carvalho Chehab ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 129d4fa1a1SMauro Carvalho Chehab FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 139d4fa1a1SMauro Carvalho Chehab more details. 149d4fa1a1SMauro Carvalho Chehab */ 159d4fa1a1SMauro Carvalho Chehab 169d4fa1a1SMauro Carvalho Chehab #ifndef __IA_CSS_TIMER_H 179d4fa1a1SMauro Carvalho Chehab #define __IA_CSS_TIMER_H 189d4fa1a1SMauro Carvalho Chehab 199d4fa1a1SMauro Carvalho Chehab /* @file 209d4fa1a1SMauro Carvalho Chehab * Timer interface definitions 219d4fa1a1SMauro Carvalho Chehab */ 229d4fa1a1SMauro Carvalho Chehab #include <type_support.h> /* for uint32_t */ 239d4fa1a1SMauro Carvalho Chehab #include "ia_css_err.h" 249d4fa1a1SMauro Carvalho Chehab 259d4fa1a1SMauro Carvalho Chehab /* @brief timer reading definition */ 269d4fa1a1SMauro Carvalho Chehab typedef u32 clock_value_t; 279d4fa1a1SMauro Carvalho Chehab 289d4fa1a1SMauro Carvalho Chehab /* @brief 32 bit clock tick,(timestamp based on timer-value of CSS-internal timer)*/ 299d4fa1a1SMauro Carvalho Chehab struct ia_css_clock_tick { 309d4fa1a1SMauro Carvalho Chehab clock_value_t ticks; /** measured time in ticks.*/ 319d4fa1a1SMauro Carvalho Chehab }; 329d4fa1a1SMauro Carvalho Chehab 339d4fa1a1SMauro Carvalho Chehab /* @brief TIMER event codes */ 349d4fa1a1SMauro Carvalho Chehab enum ia_css_tm_event { 359d4fa1a1SMauro Carvalho Chehab IA_CSS_TM_EVENT_AFTER_INIT, 369d4fa1a1SMauro Carvalho Chehab /** Timer Event after Initialization */ 379d4fa1a1SMauro Carvalho Chehab IA_CSS_TM_EVENT_MAIN_END, 389d4fa1a1SMauro Carvalho Chehab /** Timer Event after end of Main */ 399d4fa1a1SMauro Carvalho Chehab IA_CSS_TM_EVENT_THREAD_START, 409d4fa1a1SMauro Carvalho Chehab /** Timer Event after thread start */ 419d4fa1a1SMauro Carvalho Chehab IA_CSS_TM_EVENT_FRAME_PROC_START, 429d4fa1a1SMauro Carvalho Chehab /** Timer Event after Frame Process Start */ 439d4fa1a1SMauro Carvalho Chehab IA_CSS_TM_EVENT_FRAME_PROC_END 449d4fa1a1SMauro Carvalho Chehab /** Timer Event after Frame Process End */ 459d4fa1a1SMauro Carvalho Chehab }; 469d4fa1a1SMauro Carvalho Chehab 479d4fa1a1SMauro Carvalho Chehab /* @brief code measurement common struct */ 489d4fa1a1SMauro Carvalho Chehab struct ia_css_time_meas { 499d4fa1a1SMauro Carvalho Chehab clock_value_t start_timer_value; /** measured time in ticks */ 509d4fa1a1SMauro Carvalho Chehab clock_value_t end_timer_value; /** measured time in ticks */ 519d4fa1a1SMauro Carvalho Chehab }; 529d4fa1a1SMauro Carvalho Chehab 539d4fa1a1SMauro Carvalho Chehab /**@brief SIZE_OF_IA_CSS_CLOCK_TICK_STRUCT checks to ensure correct alignment for struct ia_css_clock_tick. */ 549d4fa1a1SMauro Carvalho Chehab #define SIZE_OF_IA_CSS_CLOCK_TICK_STRUCT sizeof(clock_value_t) 559d4fa1a1SMauro Carvalho Chehab /* @brief checks to ensure correct alignment for ia_css_time_meas. */ 569d4fa1a1SMauro Carvalho Chehab #define SIZE_OF_IA_CSS_TIME_MEAS_STRUCT (sizeof(clock_value_t) \ 579d4fa1a1SMauro Carvalho Chehab + sizeof(clock_value_t)) 589d4fa1a1SMauro Carvalho Chehab 599d4fa1a1SMauro Carvalho Chehab /* @brief API to fetch timer count directly 609d4fa1a1SMauro Carvalho Chehab * 619d4fa1a1SMauro Carvalho Chehab * @param curr_ts [out] measured count value 6241022d35SMauro Carvalho Chehab * @return 0 if success 639d4fa1a1SMauro Carvalho Chehab * 649d4fa1a1SMauro Carvalho Chehab */ 6541022d35SMauro Carvalho Chehab int 669d4fa1a1SMauro Carvalho Chehab ia_css_timer_get_current_tick( 679d4fa1a1SMauro Carvalho Chehab struct ia_css_clock_tick *curr_ts); 689d4fa1a1SMauro Carvalho Chehab 699d4fa1a1SMauro Carvalho Chehab #endif /* __IA_CSS_TIMER_H */ 70