summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Porotchkin <kostap@marvell.com>2017-03-20 15:26:10 +0200
committerKonstantin Porotchkin <kostap@marvell.com>2017-04-02 17:32:57 +0300
commita5eeac6a2352e926722b801cfead7af1e92a55a1 (patch)
treeeb1da1aa38571062126fa008c0f52d21ff472b1e
parent63017c781538feebc631eadb40754c91074200f2 (diff)
delay_timer: Add timer value get functions
Add ability to get timer value in micro- and milliseconds. Change-Id: I864619c23fe8a2a01cef86795e39d1b0bfd2e3d3 Signed-off-by: Victor Axelrod <victora@marvell.com> Signed-off-by: Ofir Fedida <ofedida@marvell.com> Signed-off-by: Konstantin Porotchkin <kostap@marvell.com> Reviewed-on: http://vgitil04.il.marvell.com:8080/37913 Reviewed-by: Haim Boot <hayim@marvell.com>
-rw-r--r--drivers/delay_timer/delay_timer.c23
-rw-r--r--include/drivers/delay_timer.h2
2 files changed, 25 insertions, 0 deletions
diff --git a/drivers/delay_timer/delay_timer.c b/drivers/delay_timer/delay_timer.c
index ed7ed52e..be0ed298 100644
--- a/drivers/delay_timer/delay_timer.c
+++ b/drivers/delay_timer/delay_timer.c
@@ -38,6 +38,29 @@
static const timer_ops_t *ops;
/***********************************************************
+ * Get a timer value in microseconds. The driver must
+ * be initialized before calling this function.
+ ***********************************************************/
+uint32_t timer_value_get(void)
+{
+ assert(ops != 0 &&
+ (ops->clk_mult != 0) &&
+ (ops->clk_div != 0) &&
+ (ops->get_timer_value != 0));
+
+ return (~ops->get_timer_value() * ops->clk_mult) / ops->clk_div;
+}
+
+/***********************************************************
+ * Get a timer value in miliseconds. The driver must
+ * be initialized before calling this function.
+ ***********************************************************/
+uint32_t timer_value_ms_get(void)
+{
+ return timer_value_get() / 1000;
+}
+
+/***********************************************************
* Delay for the given number of microseconds. The driver must
* be initialized before calling this function.
***********************************************************/
diff --git a/include/drivers/delay_timer.h b/include/drivers/delay_timer.h
index 0dec626c..d3bf3e32 100644
--- a/include/drivers/delay_timer.h
+++ b/include/drivers/delay_timer.h
@@ -47,6 +47,8 @@ typedef struct timer_ops {
uint32_t clk_div;
} timer_ops_t;
+uint32_t timer_value_get(void);
+uint32_t timer_value_ms_get(void);
void mdelay(uint32_t msec);
void udelay(uint32_t usec);
void timer_init(const timer_ops_t *ops);