diff options
author | Laxminath Kasam <lkasam@codeaurora.org> | 2015-11-26 10:11:07 +0530 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:16:19 -0700 |
commit | 77de5087e87dea63f5d936b46a9370e735679988 (patch) | |
tree | 116c2136eb6953a2ba4b72c9438fe0c5c64bd005 /drivers/soc/qcom/avtimer.c | |
parent | 2011051c18cd32b24101b8bca27b2f0c207b4fd1 (diff) |
avtimer: update ioctl call to query avtimer
current avtimer ioctl uses deprecated logic to query
avtimer. Use the updated API to query avtimer to avoid
wrong timestamp values when query using ioctl interface.
Change-Id: I16e4373226903b6121c911ed9f2ca31851de80e5
Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
Diffstat (limited to 'drivers/soc/qcom/avtimer.c')
-rw-r--r-- | drivers/soc/qcom/avtimer.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/drivers/soc/qcom/avtimer.c b/drivers/soc/qcom/avtimer.c index e7af264ffe52..2bded5e83cce 100644 --- a/drivers/soc/qcom/avtimer.c +++ b/drivers/soc/qcom/avtimer.c @@ -305,7 +305,8 @@ int avcs_core_query_timer(uint64_t *avtimer_tick) | avtimer_lsw; res = do_div(avtimer_tick_temp, avtimer.clk_div); *avtimer_tick = avtimer_tick_temp; - pr_debug("%s:Avtimer: msw: %u, lsw: %u, tick: %llu\n", __func__, + pr_debug_ratelimited("%s:Avtimer: msw: %u, lsw: %u, tick: %llu\n", + __func__, avtimer_msw, avtimer_lsw, *avtimer_tick); return 0; } @@ -330,21 +331,11 @@ static long avtimer_ioctl(struct file *file, unsigned int ioctl_num, switch (ioctl_num) { case IOCTL_GET_AVTIMER_TICK: { - uint32_t avtimer_msw_1st = 0, avtimer_lsw = 0; - uint32_t avtimer_msw_2nd = 0; uint64_t avtimer_tick; - do { - avtimer_msw_1st = ioread32(avtimer.p_avtimer_msw); - avtimer_lsw = ioread32(avtimer.p_avtimer_lsw); - avtimer_msw_2nd = ioread32(avtimer.p_avtimer_msw); - } while (avtimer_msw_1st != avtimer_msw_2nd); - - avtimer_lsw = avtimer_lsw/avtimer.clk_div; - avtimer_tick = - ((uint64_t) avtimer_msw_1st << 32) | avtimer_lsw; - - pr_debug("%s: AV Timer tick: msw: %x, lsw: %x time %llx\n", - __func__, avtimer_msw_1st, avtimer_lsw, avtimer_tick); + + avcs_core_query_timer(&avtimer_tick); + pr_debug_ratelimited("%s: AV Timer tick: time %llx\n", + __func__, avtimer_tick); if (copy_to_user((void *) ioctl_param, &avtimer_tick, sizeof(avtimer_tick))) { pr_err("copy_to_user failed\n"); |