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