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