xref: /rk3399_rockchip-uboot/include/timer.h (revision c8a7ba9e6a5fe2fc7b4a7894829aa0b0148b4d40)
1*c8a7ba9eSThomas Chou /*
2*c8a7ba9eSThomas Chou  * Copyright (C) 2015 Thomas Chou <thomas@wytron.com.tw>
3*c8a7ba9eSThomas Chou  *
4*c8a7ba9eSThomas Chou  * SPDX-License-Identifier:	GPL-2.0+
5*c8a7ba9eSThomas Chou  */
6*c8a7ba9eSThomas Chou 
7*c8a7ba9eSThomas Chou #ifndef _TIMER_H_
8*c8a7ba9eSThomas Chou #define _TIMER_H_
9*c8a7ba9eSThomas Chou 
10*c8a7ba9eSThomas Chou /*
11*c8a7ba9eSThomas Chou  * Get the current timer count
12*c8a7ba9eSThomas Chou  *
13*c8a7ba9eSThomas Chou  * @dev: The Timer device
14*c8a7ba9eSThomas Chou  * @count: pointer that returns the current timer count
15*c8a7ba9eSThomas Chou  * @return: 0 if OK, -ve on error
16*c8a7ba9eSThomas Chou  */
17*c8a7ba9eSThomas Chou int timer_get_count(struct udevice *dev, unsigned long *count);
18*c8a7ba9eSThomas Chou /*
19*c8a7ba9eSThomas Chou  * Get the timer input clock frequency
20*c8a7ba9eSThomas Chou  *
21*c8a7ba9eSThomas Chou  * @dev: The Timer device
22*c8a7ba9eSThomas Chou  * @return: the timer input clock frequency
23*c8a7ba9eSThomas Chou  */
24*c8a7ba9eSThomas Chou unsigned long timer_get_rate(struct udevice *dev);
25*c8a7ba9eSThomas Chou 
26*c8a7ba9eSThomas Chou /*
27*c8a7ba9eSThomas Chou  * struct timer_ops - Driver model Timer operations
28*c8a7ba9eSThomas Chou  *
29*c8a7ba9eSThomas Chou  * The uclass interface is implemented by all Timer devices which use
30*c8a7ba9eSThomas Chou  * driver model.
31*c8a7ba9eSThomas Chou  */
32*c8a7ba9eSThomas Chou struct timer_ops {
33*c8a7ba9eSThomas Chou 	/*
34*c8a7ba9eSThomas Chou 	 * Get the current timer count
35*c8a7ba9eSThomas Chou 	 *
36*c8a7ba9eSThomas Chou 	 * @dev: The Timer device
37*c8a7ba9eSThomas Chou 	 * @count: pointer that returns the current timer count
38*c8a7ba9eSThomas Chou 	 * @return: 0 if OK, -ve on error
39*c8a7ba9eSThomas Chou 	 */
40*c8a7ba9eSThomas Chou 	int (*get_count)(struct udevice *dev, unsigned long *count);
41*c8a7ba9eSThomas Chou };
42*c8a7ba9eSThomas Chou 
43*c8a7ba9eSThomas Chou /*
44*c8a7ba9eSThomas Chou  * struct timer_dev_priv - information about a device used by the uclass
45*c8a7ba9eSThomas Chou  *
46*c8a7ba9eSThomas Chou  * @clock_rate: the timer input clock frequency
47*c8a7ba9eSThomas Chou  */
48*c8a7ba9eSThomas Chou struct timer_dev_priv {
49*c8a7ba9eSThomas Chou 	unsigned long clock_rate;
50*c8a7ba9eSThomas Chou };
51*c8a7ba9eSThomas Chou 
52*c8a7ba9eSThomas Chou #endif	/* _TIMER_H_ */
53