From 7bca336b8da98492bb55fe51c159ca0211dacf3f Mon Sep 17 00:00:00 2001 From: Bard Liao Date: Fri, 3 May 2019 22:05:25 +0800 Subject: [PATCH] trace: convert trace time stamp to ticks The unit of trace header timestamp is ticks but it is nanosecond in trace params. So we have to convert it to ticks. Signed-off-by: Bard Liao --- src/include/sof/clk.h | 3 +++ src/include/uapi/ipc/trace.h | 2 +- src/ipc/handler.c | 4 ++-- src/lib/clk.c | 10 ++++++++++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/include/sof/clk.h b/src/include/sof/clk.h index e463248d5869..1504e82166a8 100644 --- a/src/include/sof/clk.h +++ b/src/include/sof/clk.h @@ -32,6 +32,7 @@ #define __INCLUDE_CLOCK__ #include +#include #define CLOCK_NOTIFY_PRE 0 #define CLOCK_NOTIFY_POST 1 @@ -57,6 +58,8 @@ void clock_set_freq(int clock, uint32_t hz); uint64_t clock_ms_to_ticks(int clock, uint64_t ms); +void platform_timer_set_delta(struct timer *timer, uint64_t ns); + void clock_init(void); #endif diff --git a/src/include/uapi/ipc/trace.h b/src/include/uapi/ipc/trace.h index 3a8ad8f5a4fc..06414ff0e782 100644 --- a/src/include/uapi/ipc/trace.h +++ b/src/include/uapi/ipc/trace.h @@ -61,7 +61,7 @@ struct sof_ipc_dma_trace_params_ext { struct sof_ipc_cmd_hdr hdr; struct sof_ipc_host_buffer buffer; uint32_t stream_tag; - uint64_t timestamp; + uint64_t timestamp_ns; /* in nanosecnd */ uint32_t reserved[8]; } __attribute__((packed)); diff --git a/src/ipc/handler.c b/src/ipc/handler.c index ea6786139d09..4826caa869ae 100644 --- a/src/ipc/handler.c +++ b/src/ipc/handler.c @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -726,8 +727,7 @@ static int ipc_dma_trace_config(uint32_t header) IPC_COPY_CMD(params, _ipc->comp_data); if (iCS(header) == SOF_IPC_TRACE_DMA_PARAMS_EXT) - platform_timer->delta = params.timestamp - - platform_timer_get(platform_timer); + platform_timer_set_delta(platform_timer, params.timestamp_ns); else platform_timer->delta = 0; diff --git a/src/lib/clk.c b/src/lib/clk.c index bda4abbd8b47..e39c3755ed50 100644 --- a/src/lib/clk.c +++ b/src/lib/clk.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -152,6 +153,15 @@ uint64_t clock_ms_to_ticks(int clock, uint64_t ms) return clk_pdata->clk[clock].ticks_per_msec * ms; } +void platform_timer_set_delta(struct timer *timer, uint64_t ns) +{ + uint64_t ticks; + + ticks = clk_pdata->clk[PLATFORM_DEFAULT_CLOCK].ticks_per_msec / + 1000 * ns / 1000; + timer->delta = ticks - platform_timer_get(timer); +} + void clock_init(void) { int i = 0;