blob: 9672f1c238c2a3bb55a605747cac61ec2f4c2930 [file] [log] [blame]
Flemmard660dde82014-02-21 20:25:18 +01001#ifndef __HRES_COUNTER_INCLUDED__
2#define __HRES_COUNTER_INCLUDED__
3
4#include <linux/types.h>
5
6struct hres_counter_platform_data {
7 /* Initialize/obtain the timer resource */
8 int (*init_hres_timer)(void **);
9
10 /* Release the timer resource*/
11 int (*release_hres_timer)(void *);
12
13 /* PM functions */
14 int (*suspend_hres_timer)(void *);
15 int (*resume_hres_timer)(void *);
16
17 /* Read native timer count value */
18 u32 (*read_hres_timer)(void *);
19
20 /* Convert native timer value to desired human */
21 /* readable format (usec or msec, etc) */
22 u32 (*convert_hres_timer)(u32);
23};
24
25#define LOG_MMC_TIMEOUT_TIMING_MEASUREMENTS 1
26#if !defined(CONFIG_HRES_COUNTER) && LOG_MMC_TIMEOUT_TIMING_MEASUREMENTS
27#error "MMC timeout measurements can only be done with hires counters"
28#endif
29
30#ifdef CONFIG_HRES_COUNTER
31
32extern u32 hres_get_counter ( void );
33extern u32 hres_get_delta_usec ( u32 start, u32 end );
34extern void hres_ch_reset ( uint ch );
35extern void hres_event_cnt ( uint ch );
36extern void hres_event_start ( uint ch );
37extern u32 hres_event_end ( uint ch );
38extern void hres_event ( char *type, u32 arg1, u32 arg2 );
39extern int hres_evlog_enable ( void );
40extern int hres_evlog_disable ( void );
41extern void hres_evlog_print ( void );
42extern void hres_evlog_reset ( void );
43
44#else
45
46#define hres_get_counter(args...)
47#define hres_get_delta_usec(args...)
48#define hres_ch_reset(args...)
49#define hres_event_cnt(args...)
50#define hres_event_start(args...)
51#define hres_event_end(args...)
52#define hres_event(args...)
53#define hres_evlog_enable(args...)
54#define hres_evlog_disable(args...)
55#define hres_evlog_print(args...)
56#define hres_evlog_reset(args...)
57
58#endif
59
60
61#endif // __HRES_COUNTER_INCLUDED__
62
63
64